Services/Sync/P2P Key Exchange And Rotation: Difference between revisions

Simplified Registration protocol v1
(Separated out-of-band steps)
(Simplified Registration protocol v1)
Line 161: Line 161:
When Alice registers a new device with the Weave Sync server the client first checks if there are other authorised clients, if not it initialises the storage, if so it requests authorisation by following the procedure below.
When Alice registers a new device with the Weave Sync server the client first checks if there are other authorised clients, if not it initialises the storage, if so it requests authorisation by following the procedure below.


# Client A: Create client record with status of 'pending'
<ol start="0">
# Client A: Send ClientAuthRequestMessage to existing authorised clients, i.e. Client B, including authcode digest (ClientAuthVerifier)
<li>Client A: Authenticate to sync server and create client record with status of 'pending'</li>
# Client A: Display authcode to user
<li>Client A: Send ClientAuthRequestMessage to existing authorised clients, i.e. Client B, including authcode digest (AD)</li>
# Client B: User enters authcode when prompted to approve and verify request. Alternatively reject request.
<li>Out-of-Band: Client A displays authcode (AC) and user enters it on Client B
# Client B: On authorisation approved send ClientAuthResponseMessage with sync key
<li>Client B: If authcode (AC) is verified send ClientAuthResponseMessage with sync key</li>
# Client B: On authorisation declined send ClientAuthResponseMessage with auth fail code
</ol>
# Client A: Poll for authorisation response
 
# Client A: On authorisation approved notify user, verify HMAC of Client B record and update client record status to 'approved'
Finally Alice is notified of registration status and if successful client record is updated with status of 'approved'.
# Client A: On authorisation declined no action taken
 


<pre>
<pre>
Line 184: Line 184:


t2        AIs, MK                                AIp, BIp        BIs, MK
t2        AIs, MK                                AIp, BIp        BIs, MK
(OoB)                                                             VD
(OoB)     VC                                                      VD
                                                                   VCui = <user input>
                                                                   VCui = <user input>
                                                                   Verified = (VD == DIGEST(VCui + DIGEST(password)))
                                                                   Verified = (VD == DIGEST(VCui + DIGEST(password)))
113

edits