Identity/EngPlan/wVEC: Difference between revisions

(Created page with "= Overview = [https://wiki.mozilla.org/Identity Identity] Engineering plan. This document addresses the build portions of the Identity service, including the Verified Email Pr...")
 
 
(7 intermediate revisions by 2 users not shown)
Line 18: Line 18:
== Web Verified Email Client (wVEC) ==
== Web Verified Email Client (wVEC) ==
{{WorkItem
{{WorkItem
|workItemDesc=Local crypto implementation, (notably Random Number Generator)
|workItemDesc=Integrate better PRNG Javascript library with RSA library
|assignee=rmiller
|assignee=rmiller
|bug='''TBD'''
|bug=664593
|assumes=InfraSec sign off on secure javascript crypto library
|assumes=InfraSec sign off on all javascript crypto libraries
|workingEst='''TBD'''
|workingEst= 2 days
|bestCase=1 day
|bestCase= 1 day
|worstCase=Unknown
|worstCase= Unknown
|mostLikely=2 days (provided InfraSec sign off)  
|mostLikely= 2 days (provided InfraSec sign off)
}}
 
The plan is to use the [http://www-cs-students.stanford.edu/~tjw/jsbn/ twu-rsa] library for the RSA implementation, but to replace the ArcFour-based PRNG that it includes w/ the Fortuna-derived PRNG that comes w/ the [http://crypto.stanford.edu/sjcl/ SJCL].  This will be seeded w/ entropy from the user actions and from the server.
 
{{WorkItem
|workItemDesc=Core HTML VEP client implementation
|assignee=rmiller
|bug=664598
|assumes=Related server components are implemented / working
|workingEst= 7 days (4 days complete, 3 days remaining)
|bestCase= 6 days (i.e. 2 days remaining)
|worstCase= 9 days (i.e. 5 days remaining)
|mostLikely= 7 days (3 days remaining)
}}
}}


{{WorkItem
{{WorkItem
|workItemDesc=UI responsibilities (IOW: what UI elements live on the server vs. what are presented from inside the library)
|workItemDesc=UI interaction through account creation / email verification / login portion of VEP process
|assignee=rmiller
|assignee=rmiller
|bug='''TBD'''
|bug=664594
|assumes=UX fully defined.
|assumes=Related server components are implemented / working
|workingEst=2 days
|workingEst= 2 days
|bestCase=.5 days
|bestCase= 0.5 days
|worstCase=4 days
|worstCase= 4 days
|mostLikely=2 days  
|mostLikely= 2 days
}}
}}


{{WorkItem
{{WorkItem
|workItemDesc=create 'navigator.id' client wrapper and inter-frame communications
|workItemDesc=Create 'navigator.id' RP client wrapper and inter-window communications
|assignee=rmiller
|assignee=rmiller
|bug='''TBD'''
|bug=664597
|assumes=
|assumes=Services and InfraSec signoff on jschannel
|workingEst=1 day
|workingEst=1.5 days
|bestCase=1 day
|bestCase=1 days
|worstCase=2 days
|worstCase=3 days
|mostLikely=1 day
|mostLikely=1.5 days
}}
}}
Using [http://mozilla.github.com/jschannel/docs/ jschannel] to handle the inter-frame communication for now, pending review of the jschannel code by Services engineers and InfraSec.


{{WorkItem
{{WorkItem
|workItemDesc=Create iframe containing actual client implementation, along with RP handshake
|workItemDesc=Create 'navigator.id' IA client wrapper and inter-window communications
|assignee=rmiller
|assignee=rmiller
|bug='''TBD'''
|bug=669455
|assumes=
|assumes=Services and InfraSec signoff on jschannel
|workingEst=3 days
|workingEst=1.5 days
|bestCase=2 days
|bestCase=1 days
|worstCase=6 days
|worstCase=3 days
|mostLikely=2 days  
|mostLikely=1.5 days
}}
}}
Using [http://mozilla.github.com/jschannel/docs/ jschannel] to handle the inter-frame communication for now, pending review of the jschannel code by Services engineers and InfraSec.


{{WorkItem
{{WorkItem
|workItemDesc=UI for displaying / selecting verified email addresses
|workItemDesc=UI for displaying / selecting verified email addresses
|assignee=rmiller
|assignee=rmiller
|bug='''TBD'''
|bug=664599
|assumes=UI finalized
|assumes=Related server components are implemented / working
|workingEst=2 days
|workingEst= 2 days
|bestCase=1 days
|bestCase= 1 day
|worstCase=5 days
|worstCase= 4 days
|mostLikely=2 days  
|mostLikely= 2 days
}}
 
{{WorkItem
|workItemDesc=Certificate refresh (success cases)
|assignee=rmiller
|bug=668620
|assumes=Related server components are implemented / working
|workingEst= 4 days
|bestCase= 3 day
|worstCase= 8 days
|mostLikely= 4.5 days
}}
 
This process has to work both with our server and also with a primary authority using the iaWrapper.js wrapper.
 
{{WorkItem
|workItemDesc=Certificate refresh (failure cases)
|assignee=rmiller
|bug=668625
|assumes=Related server components are implemented / working
|workingEst= 3 days
|bestCase= 2 days
|worstCase= 5 days
|mostLikely= 3 days  
}}
}}
This process has to work both with our server and also with a primary authority using the iaWrapper.js wrapper.


{{WorkItem
{{WorkItem
|workItemDesc=Jasmine test coverage
|workItemDesc=Jasmine test coverage
|assignee=rmiller
|assignee=rmiller
|bug='''TBD'''
|bug=664601
|assumes=
|assumes=
|workingEst=3 days
|workingEst= 5 days
|bestCase=2 days
|bestCase= 3 days
|worstCase=5 days
|worstCase= 7.5 days
|mostLikely=3 days  
|mostLikely= 4.5 days  
}}
}}


Line 86: Line 129:
|workItemDesc=Documentation
|workItemDesc=Documentation
|assignee=rmiller
|assignee=rmiller
|bug='''TBD'''
|bug=664600
|assumes=
|assumes=
|workingEst=2 days
|workingEst=4 days
|bestCase=1 day
|bestCase=2 days
|worstCase=4 days
|worstCase=6 days
|mostLikely=2 days  
|mostLikely=4 days  
}}
}}


Line 97: Line 140:
{{WorkItem
{{WorkItem
|workItemDesc=Security Review
|workItemDesc=Security Review
|assignee=rmiller
|assignee=
|bug='''TBD'''
|bug='''TBD'''
|assumes=requires InfraSec
|assumes=requires InfraSec
|workingEst='''TBD'''
|workingEst= 5 days?
|bestCase=
|bestCase=
|worstCase=
|worstCase=
Line 108: Line 151:
{{WorkItem
{{WorkItem
|workItemDesc=Packaging and Deployment
|workItemDesc=Packaging and Deployment
|assignee=rmiller
|assignee=
|bug='''TBD'''
|assumes=
|workingEst= 5 days?
|bestCase=
|worstCase=
|mostLikely=
}}
 
{{WorkItem
|workItemDesc=UX design / signoff
|assignee=
|bug='''TBD'''
|bug='''TBD'''
|assumes=
|assumes=
|workingEst='''TBD'''
|workingEst=
|bestCase=
|bestCase=
|worstCase=
|worstCase=
Line 121: Line 175:
== Expected Completion ==
== Expected Completion ==
== Milestones ==
== Milestones ==
===Milestone 1: Complete client library code ===
===Milestone 1: Resolve client based Crypto concerns ===
* library creates navigator.id component which generates RSA signed identity assertions
There are several concerns regarding a javascript based crypto library. One of the larger is how the library can acquire a proper level of entropy. At this milestone, we will have resolved these issues and determined an appropriate approach to provide adequate RSA encryption.
* library generates headless and headed iframes for connections to the Identity Authority
* Associated Bugs: 664593
* Working Estimate: '''TBD''' days
* Working Estimate: 4 days
* Completion Date: '''TBD'''
 
===Milestone 2: Complete interface elements ===
The library needs to communicate with the server. At this milestone, the client library will be able to communicate securely to the server and the Requesting Party site.
* Associated Bugs: 664597, 664598
* Working Estimate: 6 days
* Completion Date: '''TBD'''
* Completion Date: '''TBD'''


===Milestone 2: Library fully functional ===
===Milestone 3: UI Finalized ===
* library able to be embedded on 3rd party site and provide authenticated identity information using the Verified Email Protocol.
The library needs to present to the user various actionable elements. At this milestone, the client library will present those items to the user in a clear manner. NOTE: This will require working with UX and UI, which may impact deliverable date.
* Working Estimate: '''TBD''' days
* Associated Bugs: 664594, 664599
* Working Estimate: 4 days
* Completion Date: '''TBD'''
* Completion Date: '''TBD'''


===Milestone 3: QA and Infrasec signoff ===
===Milestone 4: Wrapup ===
* library test suite is finalized and infrasec has reviewed the code and found no major security violations.
The library needs to have full test cases working, documentation, and packaged for deployment and testing At this milestone, the library will be in a beta consumer ready state. Documentation and packaging may not be finalized, but they should be at a point where an external developer can set up and use the system with no prior knowledge of the system and minimal assistance.
* Working Estimate: '''TBD''' days
* Associated Bugs: 664601, 664600
* Working Estimate: 5 days
* Completion Date: '''TBD'''
* Completion Date: '''TBD'''

Latest revision as of 21:07, 5 July 2011

Overview

Identity Engineering plan.

This document addresses the build portions of the Identity service, including the Verified Email Protocol (VEP), Verified Email Service (VES), Web Based Verified Email Client (wVEC), Firefox Native Verified Email Client (fVEC)

Key People

Technical Lead: Rob Miller
Additional Developers: JR Conlin, Dave Dahl
Project Manager: Dan Mills
Product Manager: Dan Mills
UX: TBD

Work Items

Web Verified Email Client (wVEC)

Integrate better PRNG Javascript library with RSA library

Assigned to: rmiller
Bug: 664593
Assumes/Depends On: InfraSec sign off on all javascript crypto libraries
Working Estimate: 2 days

Best case: 1 day
Worst case: Unknown
Most Likely: 2 days (provided InfraSec sign off)

The plan is to use the twu-rsa library for the RSA implementation, but to replace the ArcFour-based PRNG that it includes w/ the Fortuna-derived PRNG that comes w/ the SJCL. This will be seeded w/ entropy from the user actions and from the server.

Core HTML VEP client implementation

Assigned to: rmiller
Bug: 664598
Assumes/Depends On: Related server components are implemented / working
Working Estimate: 7 days (4 days complete, 3 days remaining)

Best case: 6 days (i.e. 2 days remaining)
Worst case: 9 days (i.e. 5 days remaining)
Most Likely: 7 days (3 days remaining)

UI interaction through account creation / email verification / login portion of VEP process

Assigned to: rmiller
Bug: 664594
Assumes/Depends On: Related server components are implemented / working
Working Estimate: 2 days

Best case: 0.5 days
Worst case: 4 days
Most Likely: 2 days

Create 'navigator.id' RP client wrapper and inter-window communications

Assigned to: rmiller
Bug: 664597
Assumes/Depends On: Services and InfraSec signoff on jschannel
Working Estimate: 1.5 days

Best case: 1 days
Worst case: 3 days
Most Likely: 1.5 days

Using jschannel to handle the inter-frame communication for now, pending review of the jschannel code by Services engineers and InfraSec.

Create 'navigator.id' IA client wrapper and inter-window communications

Assigned to: rmiller
Bug: 669455
Assumes/Depends On: Services and InfraSec signoff on jschannel
Working Estimate: 1.5 days

Best case: 1 days
Worst case: 3 days
Most Likely: 1.5 days

Using jschannel to handle the inter-frame communication for now, pending review of the jschannel code by Services engineers and InfraSec.

UI for displaying / selecting verified email addresses

Assigned to: rmiller
Bug: 664599
Assumes/Depends On: Related server components are implemented / working
Working Estimate: 2 days

Best case: 1 day
Worst case: 4 days
Most Likely: 2 days

Certificate refresh (success cases)

Assigned to: rmiller
Bug: 668620
Assumes/Depends On: Related server components are implemented / working
Working Estimate: 4 days

Best case: 3 day
Worst case: 8 days
Most Likely: 4.5 days

This process has to work both with our server and also with a primary authority using the iaWrapper.js wrapper.

Certificate refresh (failure cases)

Assigned to: rmiller
Bug: 668625
Assumes/Depends On: Related server components are implemented / working
Working Estimate: 3 days

Best case: 2 days
Worst case: 5 days
Most Likely: 3 days

This process has to work both with our server and also with a primary authority using the iaWrapper.js wrapper.

Jasmine test coverage

Assigned to: rmiller
Bug: 664601
Assumes/Depends On:
Working Estimate: 5 days

Best case: 3 days
Worst case: 7.5 days
Most Likely: 4.5 days

Documentation

Assigned to: rmiller
Bug: 664600
Assumes/Depends On:
Working Estimate: 4 days

Best case: 2 days
Worst case: 6 days
Most Likely: 4 days

External Dependencies

Security Review

Assigned to:
Bug: TBD
Assumes/Depends On: requires InfraSec
Working Estimate: 5 days?

Best case:
Worst case:
Most Likely:

Packaging and Deployment

Assigned to:
Bug: TBD
Assumes/Depends On:
Working Estimate: 5 days?

Best case:
Worst case:
Most Likely:

UX design / signoff

Assigned to:
Bug: TBD
Assumes/Depends On:
Working Estimate: '

Best case:
Worst case:
Most Likely:

Timeline

Expected Completion

Milestones

Milestone 1: Resolve client based Crypto concerns

There are several concerns regarding a javascript based crypto library. One of the larger is how the library can acquire a proper level of entropy. At this milestone, we will have resolved these issues and determined an appropriate approach to provide adequate RSA encryption.

  • Associated Bugs: 664593
  • Working Estimate: 4 days
  • Completion Date: TBD

Milestone 2: Complete interface elements

The library needs to communicate with the server. At this milestone, the client library will be able to communicate securely to the server and the Requesting Party site.

  • Associated Bugs: 664597, 664598
  • Working Estimate: 6 days
  • Completion Date: TBD

Milestone 3: UI Finalized

The library needs to present to the user various actionable elements. At this milestone, the client library will present those items to the user in a clear manner. NOTE: This will require working with UX and UI, which may impact deliverable date.

  • Associated Bugs: 664594, 664599
  • Working Estimate: 4 days
  • Completion Date: TBD

Milestone 4: Wrapup

The library needs to have full test cases working, documentation, and packaged for deployment and testing At this milestone, the library will be in a beta consumer ready state. Documentation and packaging may not be finalized, but they should be at a point where an external developer can set up and use the system with no prior knowledge of the system and minimal assistance.

  • Associated Bugs: 664601, 664600
  • Working Estimate: 5 days
  • Completion Date: TBD