Re: WGLC of draft-ietf-xmpp-posh-02

Dave Cridland <[email protected]> Tue, 14 Oct 2014 09:42:48 +0100
Newsgroups gmane.ietf.xmpp
Message-ID <CAKHUCzyy1TugO2mU0Br+hTPGPztfqv+zyVrP4-5m5FJToe1H4g@mail.gmail.com>
On 14 October 2014 00:17, Ben Campbell <[email protected]> wrote:

> This is a Working Group Last Call of draft-ietf-xmpp-posh-02. The draft is
> available at the following URL:
>

0) Abstract:

The last sentence is problematic, because it's not clear that the XMPP WG
can make such a pronouncement.

Also, it fails to explain why hosted HTTPS isn't a problem, but I suspect
I'll never understand that one. :-)

I note that this Abstract is huge, and contains almost the same information
as the Introduction.

1) Introduction:

I was under the impression that when this issue was first raised, the
problem was one of management of certificates rather than anything else -
that is, if you host 1,000 domains, you needed to have a certificate for
each of them in practise, and this meant handling 1,000 certificates, each
with different expiry dates etc.

Suggestion: After the existing three bullet points:

o Even if your legal department is happy, this still means managing one
certificate for each customer across the infrastructure, contributing to a
large administrative load.

Though the same organization that raised this point seems perfectly happy
to do so for HTTP; as noted before, this is because of Strange Things
Beyond My Understanding.

Finally, this section does not constitute a thought experiment, but an
illustrative story.

3) Obtaining Verification Materials

It would make things clearer if the term of art "source domain" were
briefly introduced, at least hinting at its meaning. While it's mentioned
in Terminology, because there is no typographic convention to alert the
reader that it is a term of art, it's difficult to spot it immediately. As
an alternative to calling it out, perhaps capitalizing it (although it's
not capitalized in RFC 6125)?

I note that "end-entity certificate" is not called out explicitly, but this
is probably OK - though using it in the initial point 1's parenthesis may
help. "(in PKIX, this takes the form of a PKIX end-entity certificate
[RFC5280])."

In the second numbered list, there seems to be a dearth of metasyntactic
variables. The Foo client connecting to the foo domain to verify the Foo
service by looking for the foo token is almost awesomely unclear. Since at
this stage we have already established that the Source Domain contains
"foo", perhaps we could make this the "Bar" service, with posh.bar.json -
this also has the advantage that the Bar Service is very familiar to a
large proportion of the XMPP community.

Within this point 1, "foo.example.com" is referred to as the "domain" - it
is, I think, the Source Domain, and would be clearer noted as such.

Finally, I think it's worthwhile stressing that although the ultimate goal
is to verify the certificate foo presents for the Bar service of the Source
Domain, the certificate presented by HTTPS is still validated in isolation
by traditional methods - that is, the HTTPS cert has to be valid for the
Source Domain.

3.1) Source Domain Possesses PKIX Certificate Information

I'll freely admit I'm not terribly keen on this being in JSON. It means
including a JSON library within XMPP; we've not needed one before.

3.3) Performing Verification

a) This reads "You take a bunch of hashes and see if any match". Given the
example contains more than one hash function, which should be used? Both?
Whatever the client supports?

b) I've a nagging feeling that we should include Issuer and Serial matches
as well, in order to mitigate against hashes becoming weaker. I suspect
that hashing only the keying material (or using the SKI) might be even
better. Has this been run past someone who actually knows some crypto (ie,
someone other than me)?

4) Secure Delegation

This text reads that we should match the "POSH certificate". This is
presumably a term of art, but used only in this section. Similarly "TLS
server" is used only once, here. There are two TLS servers at play here,
and it's unclear what a POSH certificate might be; given that the only
certificates discussed are not the JSON objects.

7) Alternates and Roll-over

It appears that it is impossible to state something like a switch of
hosting using this mechanism; also I'd note that this same mechanism might
also be used if a hosting provider has multiple certificates.

8) Security Considerations

Not really sure that the second paragraph belongs here. (Nor, actually, am
I sure it belongs anywhere in the document).

Summary:

Some more work required.

I still would rather the earth swallowed this whole, really, and we did
these things properly. I would be happier to go along with this if there
were any sign that large hosting providers in the XMPP world were at all
likely to deploy any kind of security at all, but this seems unlikely
because of the combination of this not being trivial, and there being
implementations which follow the strict rules of RFC 6120 and drop the
session if TLS is encountered with a non-matching certificate - yet
cheerfully connect if there's no TLS at all.

Still, rant over - if we're to do this, there's a few rough edges in the
specification, and I'd appreciate knowing if the certificate identity
mechanism has been properly reviewed.

Dave.

_______________________________________________
xmpp mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/xmpp