[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