[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: comments on draft-leach-digest-sasl-01.txt



RL Bob Morgan wrote:

> I apologize for submitting these comments long after the closing date in
> the Last Call announcement on this document.  I hope that there is still
> an opportunity to consider the issues I raise here, since in my opinion
> this specification in its current state is not ready for Proposed Standard
> status.  The digest security mechanism is intended to have wide use in
> many application protocols, so it's important to get it right.

I agree, DIGEST is not ready yet.

> Thanks,
>
>  - RL "Bob" Morgan
>    Stanford
>
> ---
>
> Here are a number of comments on draft-leach-digest-sasl-01.txt.  I
> have divided my comments into three sections: Digest as a SASL
> mechanism, the Digest protocol itself, and wording issues.  Each issue
> is numbered.
>
> Comments on Digest as a SASL mechanism:
>
> (1) RFC 2222 specifies the transmission by the client of an
> authorization identity that may be different from the identity in the
> client's authentication credentials.  Digest is deficient in not
> supporting this feature.  To fix this the client response format (in
> section 2.1.2) must be modified; I suggest:
>
>   digest-response  = 1#( username | realm | authz-id | nonce | cnonce |
>                        nonce-count | qop | digest-uri | response |
>                        maxbuf | charset | cipher | auth-param )
>
> where
>
>     authz-id         = "authz-id" "=" <"> authz-id-value <">
>     authz-id-value   = qdstr-val
>
> and
>
>   authz-id
>     The client's requested authorization identity, encoded as UTF-8.
>     This is optional; it is only included if the client wishes to
>     assert an authorization identity different from the username.
>
> Further, the response-value (in section 2.1.2.1) must be modified to
> include this value (so as to protect it from undetected modification):
>
>    A1       = { H( { username-value, ":", realm-value, ":",
>                          authz-id-value, ":", passwd } ),
>                   ":", nonce-value, ":", cnonce-value }

I like the idea to include authorization identifier in DIGEST.

However I think that A1 should be:

A1       = { H( { username-value, ":", realm-value, ":", passwd } ),
                  ":", authz-id-value, ":", nonce-value, ":", cnonce-value }

because actually H( { username-value, ":", realm-value, ":", passwd } ) could
be stored in authentication database.   If you decide to store
 H( { username-value, ":", realm-value, ":", authz-id-value, ":", passwd } )

you will have scalability problems, because you have to store this value for
each
(username-value, authz-id-value) pair, instead of 1 value for each username.

--
Regards,
Alexey Melnikov