a Secarta project ...

HTTPsec Authentication Protocol


Preamble

6.6. Shared Secret

The security of the protocol depends on the requester and responder establishing an (authenticated) shared secret. Continuation messages employ keys that are derived from this secret value.

The value shared-secret is computed as follows:

shared-secret = H(H( dh-shared-secret || auth-secret || init-transcript ))

where the following apply:

  • dh-shared-secret is calculated by the requester as follows:
    dh-shared-secret = dh ^ dh-private MOD p          
    
    where dh is from the initialization response, dh-private is the requester's private Diffie-Hellman value (see dh ) and p is the prime modulus of the Diffie-Hellman group chosen by the requester.
  • dh-shared-secret is calculated by the responder as follows:
    dh-shared-secret = dh ^ dh-private MOD p
    
    where dh is from the initialization request, dh-private is the responders's private Diffie-Hellman value (see dh ) and p is the prime modulus of the Diffie-Hellman group identified by the group directive in the initialization request.
  • auth-secret is the 256 bit random value generated by the responder. It is passed in encrypted form to the requester via the auth directive in the initialization response.
  • init-transcript is a concatenation of all the initialization directives, computed according to the Initialization Transcript section.
  • H(H()) is the Hash Algorithm iteratively applied twice.