draft-josefsson-password-auth-00.txt

Nicolas Williams Nicolas.Williams at sun.com
Thu Mar 29 23:15:14 CEST 2007


> I.e., we could merge YAP and the other proposals into one generic
> mechanism.

Very, very roughly, primarily to illustrate the context token exchanges:

IDi = initiator name
IDt = target acceptor name
IDa = acceptor name (like IDt, but asserted by the acceptor)
S   = salt derived from IDt or IDa
K   = PBKDF2(password || S, iteration)
R1  = response_function(K, [challenge] || channel bindings || [cnonce])
R2  = response_function2(K, R1)

1/2   rt (   channel bindings and no mutual auth)
    I -> A:  IDi, [IDt,] R1

1     rt (   channel bindings and    mutual auth)
    I -> A:  IDi, IDt, R1
    A -> I:  R2

1 1/2 rt (no channel bindings and no mutual auth)
    I -> A:  IDi, [IDt]
    A -> I:  IDa, challenge
    I -> A:  nonce, R1

2     rt (no channel bindings and    mutual auth)
    I -> A:  IDi
    A -> I:  IDa, challenge
    I -> A:  nonce, R1
    A -> I:  R2

A target name is needed so the acceptor's verifier can be a weak
password equivalent (meaning it's a password equivalent only for
authenticating to the same acceptor).  Therefore it's useful to
have a target name even when mutual auth is not requested.

A target name is required for mutual auth, of course.

The 1 1/2 rt version could add DH key agreement for PFS.  And the 2 rt
version could add DH key agreement for PFS and some privacy protection
of IDi.  That is probably not worthwhile for any SASL application, since
they tend to have STARTTLS-type options, and for GSS one could always
add PFS with stackable mechanisms.

Nico
-- 


More information about the Password-auth mailing list