[Standards] XEP-0115 redux

Peter Saint-Andre stpeter at stpeter.im
Wed Jan 9 17:14:42 CST 2008


OK folks, it seems that we're not quite there on XEP-0115 (Entity 
Capabilities), or at least that some people (especially important people 
with votes on the XMPP Council ;-) don't quite understand the logic 
behind certain aspects of what we agreed to on the list.

Three issues were raised during the Council meeting earlier today (see 
[0] for the relevant discussion). In this email message I present the 
issues in order of gravity. For each issue I provide a description, some 
discussion points (mostly based on previous list consensus), and my 
personal conclusion. I do not provide pointers to the list archives for 
each point, but they are publicly accessible. [1]

ISSUE #1: Do we need a new namespace?

Description: We have changed things around so radically since version 
1.3 [2] of the spec that maybe we need a new namespace (as we did for 
the Entity Time protocol).

Discussion: Yes we could do this, but then we'd have two separate entity 
capabilities notations in every presence notification that every user 
sent over the network, thus violating one of the requirements of 
XEP-0115 ("minimize network impact"). Therefore we have bent over 
backwards to not define a new namespace. The result is not the prettiest 
protocol in the world, but it doesn't break anything.

My conclusion: I am opposed to defining a new namespace.

ISSUE #2: Should the 'v' attribute be REQUIRED?

Description: The 'ver' attribute was REQUIRED in version 1.3 [2] of the 
spec. In a late change made to version 1.4 [3] of the spec during the 
Council meeting at which version 1.4 was approved, we suggested that the 
value of the 'node' should be "ProductURL#ProductVersion" (e.g., 
"http://psi-im.org/#0.11") but we agreed that this would *not* be 
REQUIRED or even officially RECOMMENDED. In the proposed version 1.5 [4] 
of the spec, we added a new attribute 'v' to encapsulate the software 
version, but it is only RECOMMENDED, *not* REQUIRED.

Discussion: Some people on the list objected strenuously to the late 
change made to version 1.4 [3] which suggested that the 'node' attribute 
should encapsulate the ProductVersion. Therefore the list consensus was 
that the 'node' attribute should be the ProductURL not including the 
ProductVersion, and that we would define a new attribute 'v' to 
communicate the ProductVersion; however, the list consensus was that 
this attribute would *not* be REQUIRED but instead only RECOMMENDED 
(some people argued for making it OPTIONAL or removing it altogether, 
but we settled on RECOMMENDED).

My conclusion: Leave version 1.5 [4] as it is now, with 'v' RECOMMENDED 
but *not* REQUIRED. (In fact I would not object to making it OPTIONAL, 
but RECOMMENDED seems closest to the prior list consensus.)

ISSUE #3: Which hashing algorithms?

Description: The Council discussion seemed to assume that version 1.5 
[4] says SHA-1 is mandatory-to-implement ("MTI"). In fact, version 1.5 
does not mandate implementation of any specific algorithm. Be that as it 
may, some Council members suggested that we recommend MD5 instead of 
SHA-1 (the only concrete reason I heard in the meeting is that MD5 
output is smaller).

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.

So I see several questions:

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

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

Right now (version 1.4), SHA-1 is the default value of the 'hash' 
attribute so it is essentially MTI. However, version 1.4 does not 
explicitly say that SHA-1 is MTI because it doesn't specify *anything* 
as MTI. However it seems like good idea to explicitly specify an MTI 
algorithm because that usually helps to ensure interoperability. If we 
decide to specify an MTI algorithm, I think we would specify SHA-1, 
because that is what list consensus seems to indicate as the preferred 
algorithm to start -- especially because version 1.4 (which specifies 
SHA-1 as the default) is approved and is the currently operative version 
of the spec.

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.).

On a more general note, I think we have had list consensus on Issue #3 
for at least a few weeks now, on Issue #2 for about 2 months, and on 
Issue #1 for 6+ months. Not everyone was happy with the consensus, but 
everyone who participated in the list discussion agreed to give a little 
bit in order to reach consensus.

My final conclusion is that we need to accept the list consensus and 
move on. We have ensured backwards-compatibility, minimized network 
impact, improved security, and met the other requirements of the 
specification. You may not be in love with the final product, but 
sometimes consensus is rougher than others. Let's get this done, and 
soon, because people need to code against these specs (e.g., for 
compliance with the "XMPP Basic Client 2008" level specified in XEP-0211).

/psa

[0] 
http://logs.jabber.org/council@conference.jabber.org/2008-01-09.html#13:33:52

[1] See 
http://mail.jabber.org/pipermail/standards/2007-November/017085.html and 
http://mail.jabber.org/pipermail/standards/2007-December/017323.html

[2] http://www.xmpp.org/extensions/attic/xep-0115-1.3.html

[3] http://www.xmpp.org/extensions/attic/xep-0115-1.4.html

[4] http://www.xmpp.org/extensions/tmp/xep-0115-1.5.html

[5] http://www.iana.org/assignments/hash-function-text-names
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 7338 bytes
Desc: S/MIME Cryptographic Signature
Url : http://mail.jabber.org/pipermail/standards/attachments/20080109/fd07b5bf/attachment-0001.bin 


More information about the Standards mailing list