Fwd: [POSH] What's the point of using JWKs in POSH?

Matt Miller <[email protected]>
Newsgroups gmane.ietf.xmpp
Message-ID <[email protected]>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

[ Forwarding to the [email protected] mailing list on behalf of Thjis
Alkemade ]

Hello,

Today, I've spent some time on trying to implement POSH-checking for
xmpp.net. My implementation aimed to do two things: doing the
validation as described and showing someone how they could set up
their .well-known file by converting their X509 certificates to JSON
Web Keys.

The latter part was a lot more work than the former and made me wonder
why it is defined the way it is.

- From draft-ietf-xmpp-posh:

  Each included JWK object MUST possess the following information:

   o  The "kty" field set to the appropriate key type used for TLS
      connections (e.g., "RSA" for a certificate using an RSA key).

   o  The required public parameters for the key type (e.g., "n" and "e"
      for a certificate using an RSA key).

   o  The "x5t" field set to the certificate thumbprint, as described in
      section 3.6 of [JOSE-JWK].

Yet the data that is required in the first and second bullet is never
used. It doesn't specify if and how clients should verify it.
Verification only uses the x5t field and optionally x5c.

There are good arguments for "pinning" just the public key.
draft-ietf-websec-key-pinning only uses the SPKI field, DANE can use
either the full cert or its SPKI field (and optionally hashed). But
the way it is specified here won't allow that: the x5t field always
needs to be present and clients should verify it.

So the public parameters of the key are useless here, but they make a
key >10x as large is they have to be. Generating them is also not as
easy: most certificate viewers show a SHA1 fingerprint and it's really
easy to do with the openssl cli tool, but extracting n and e and
base64-encoding them is a lot more work. I wouldn't even know what to
do for ECDSA keys.

Are there any interoperability reasons for using JWKs that I'm not
aware of? Couldn't it just use a list of SHA1 hashes?

Best regards,
Thijs
-----BEGIN PGP SIGNATURE-----
Version: GnuPG/MacGPG2 v2.0.22 (Darwin)
Comment: GPGTools - https://gpgtools.org
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQEcBAEBCgAGBQJTj5sMAAoJEDWi+S0W7cO1ZikH/ijVFWOIJg/9i2sYQu/5q7/g
nmCpcMtt3U703/gYlZp7uCGGPhBJZ6bzfreTEHy10SVYeGJw5+IwWdix3R2ED+sz
LBKJWPFMBKICgyl2VgGo+xliznITozSXamA817Ti4boGGuZcOyf2GI233XeRtyAE
H3Ac0tyT7ZkEH0kbL1qVpux/MLlYOwIjpxJsFYWuR072+Li/wpnyAM136h9A/lSe
Ej5+xJtNCsec0Vqa7OHEGN1cDy0FRiPB2IWIcChGJqAX/nXSeBIHjajxbnLbNtaJ
ULe4pbYn2JjBPtYEA1usK35ktYg0f5lN+iUOIK1a4v3GJTWcxyWwb3nzeu+g3x8=
=IQfu
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.