On Thu, Mar 09, 2017 at 04:43:19PM -0800, Eric Rescorla wrote:
> As noted in https://github.com/tlswg/tls13-spec/issues/722, the new fancy
> TLS 1.3 Certificate structure doesn't map well to the various non-X.509
> cert structures we have defined, specifically:
> 
> - Raw Public Keys
> - Cached Info
> - OpenPGP
> 
> Probably mapping each of these to 1.3 is relatively straightforward
> (Raw public keys == a list with one key, Cached info == the hash of
> each cert + its extensions, and so on), but I tend to think that given the
> modest/specialized deployment of these extensions, it's better to do a
> set of small bis RFCs to define each of these, rather than add a bunch
> of clutter to TLS 1.3 proper.
> 
> Does anyone object to this? Volunteers.

Ugh, the situation is way worse than what I thought.

Basically, all three assume they have full control of certificate
message, worst of all being OpenPGP, which modifies it in more
complex ways (it isn't a pure element or list anymore).

And even with RPK, which appiles least severe modifications,
still modifies the structure in ways that are not obvious in
implications w.r.t. TLS 1.3.

Oh, and turns out I had implemented RPK in TLS 1.2 wrong by assuming
that it doesn't actually modify the certificate message format.
Which turned out to be wrong assumption (I fixed this after
discovering the format changes).


And then certificate types don't currently work sanely for client
certs, even if you knew how those map to Certificate message.


Client_certificate_type and server_certificate type aren't the
only problematic extensions w.r.t. TLS 1.3. The table of
extensions has the following too (all marked as allowed, I
added short reason I think those are problematic):

- client_certificate_url: Replaces certificate message. Hardcodes
  SHA-1 (which is now provably broken).
- user_mapping: Has extra handshake message.
- cert_type: All the problems of CCertT and SCertT, combined with
  fixing both to be the same.

With user_mapping, applying similar trick as in status_request is
not completely trivial because extensions that are answered in client
Certificate are offered in CertificateRequest. Okay, except that
extension is not an answer to ClientHello extensions, and the
extension assumes offer-answer relationship between client and server
extensions. Might need some special-casing.


Could be useful to have explicit list of extensions (no registry, since
this list can be never updated) that lists extensions that are
deprecated in TLS 1.3.

That is, only allowed in ClientHello and only if also advertising
prior versions.

AFAICT, the list would be:

- client_certificate_url?
- trusted_ca_keys
- truncated_hmac
- client_authz
- server_authz
- cert_type?
- srp
- status_request_v2
- client_certificate_type?
- server_certificate_type?
- encrypt_then_mac
- extended_master_secret
- cached_info?
- SessionTicket TLS (don't ask why it is written like this)
- renegotiation_info



-Ilari

_______________________________________________
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls

Reply via email to