ISSUE #3: Which hashing algorithms?

Discussion: As far as I can see, we had consensus not to mandate any particular hashing algorithm, but instead to allow any algorithm that is registered with the IANA [5]. Currently the registered algorithms are md2, md5, sha-1, sha-224, sha-256, sha-384, and sha-512. However, we seemed to have list consensus that most people would use SHA-1 at the beginning (SHA-1 is the default value of the 'hash' algorithm in the currently-approved version 1.4 [3] of the spec), and perhaps switch to SHA-256 in the future if it is shown that pre-image attacks (see RFC 4270) are likely against SHA-1. That said, people *could* implement MD5 if they want to because it is registered with the IANA.

Oh, goodness. I didn't notice that anything from IANA was allowable. That's really an issue for me, because testing this is going to be a major hassle.

Somehow, I had overlooked the 'any hash IANA recognizes' aspect as well; for whatever reason, I had thought we were recommending SHA-1 and perhaps allowing MD5.

I also have some issues with this, because if you are free to implement any hash that you want whatsoever, then everyone has to implement EVERY hash that is registered with IANA, or else you lose the entire purpose behind the hashing... i.e., being able to verify that the hash indeed matches the returned list of features. At which point, this is no more secure in practical terms than the original 0115 was.

I have no problem with the rest of the specification as it stands, but I share the concern that this particular aspect will basically kill interoperability, or at least completely nerf any advantage this specification had over the original simpler form of caps.

So I see several questions:

3a. Do we specify an MTI algorithm or let the market decide?

If we don't specify MTI, I predict very low interoperability on this feature, which is a fundamental building block for a lot of other protocols. Anything more than 2 MTI algorithms will have a major adverse effect on interop, and exactly one MTI algorithm would be optimal for these purposes.

+1.

3b. If we specify an MTI algorithm, do we specify MD5 or SHA-1 or something else?

Frankly, I don't care. MD5 is smaller, and probably more secure, but has marketing issues, particularly with a vocal minority on this list. We all have SHA-1 implementations for other things. Flip a coin, for all I care.

+1 here as well, though I'd lean slightly in favor of SHA-1 just because -- as Joe says -- we all already have SHA-1 in our clients for other purposes. MD5's equally easy (and most of us probably have it as well), but SHA-1 is pretty much guaranteed as other bits of XMPP require it.

My conclusion: Specify an MTI algorithm and say it is SHA-1, but allow other algorithms as registered with the IANA. If the market leans heavily toward MD5 or SHA-256, consider (in the future!) a change to the MTI algorithm by issuing an updated version of the spec (after proper list discussion etc.).

Fine. With the additional caveat that anyone who uses a algorithm that isn't MTI isn't likely to be able to interoperate.

Also +1.

--
Rachel Blackman <[EMAIL PROTECTED]>
Trillian Messenger - http://www.trillianastra.com/


Reply via email to