[TLS] WGLC for draft-ietf-tls-cross-sni-resumption

2021-07-16 Thread Christopher Wood
This is the working group last call for the "Transport Layer Security (TLS) 
Resumption across Server Names" draft, available here:

https://datatracker.ietf.org/doc/draft-ietf-tls-cross-sni-resumption/

Please review this document and send your comments to the list by July 30, 
2021. The GitHub repository for this draft is available here:

https://github.com/vasilvv/tls-cross-sni-resumption

Thanks,
Chris, on behalf of the chairs

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


[TLS] WGLC for draft-ietf-tls-flags

2021-07-16 Thread Christopher Wood
This is the second working group last call for the "A Flags Extension for TLS 
1.3" draft, available here:

https://datatracker.ietf.org/doc/draft-ietf-tls-tlsflags/

Please review this document and send your comments to the list by July 30, 
2021. The GitHub repository for this draft is available here:

https://github.com/tlswg/tls-flags

Thanks,
Chris, on behalf of the chairs

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


Re: [TLS] Possible TLS 1.3 erratum

2021-07-16 Thread Ilari Liusvaara
On Fri, Jul 16, 2021 at 12:43:34PM +, Peter Gutmann wrote:
> Eric Rescorla  writes:
> 
> >As we are currently working on a 8446-bis, the best thing to do would be to
> >file a PR at: https://github.com/tlswg/tls13-spec
> 
> Before I do that I thought I'd get some input on what to say, there's actually
> two issues, the first being the one I mentioned.  I was thinking something
> like:
> 
>   TLS 1.2 defined the entries in the "extension_data" as two eight-bit values
>   constituting a { hash, signature } pair.  TLS 1.3 changes the definition to
>   be a single 16-bit value constituting a cipher suite that encodes both the
>   signature and hash algorithm into a single value.  Although some of the TLS
>   1.3 values, in particular the rsa_pss_rsae_xxx ones, appear to follow the
>   TLS 1.2 format, implementations SHOULD NOT treat them as { hash, signature }
>   pairs but as a single cipher suite identifier.

Actually, I think this is quite messy issue:

- Signature schemes 0x0403, 0x0503 and 0x0603 alias signature algoritm 3
  hash 4, 5 and 6. However, those two things are not the same, because
  the former have curve restriction, but the latter do not.
- The Ed25519 and Ed448 in TLS 1.2 are registered in messy way: It
  looks like signature algorithms 7 and 8 are registered for that.
  However, those are only valid for hash 8, so codepoints actually
  precisely overlap with corresponding TLS 1.3 signature schemes.
- There is even worse issue with GOST signatures in TLS 1.2. Those are
  signature algorithms 64 and 65, only valid for hash 8. Unfortunately,
  the corresponding schemes 0x0840 and 0x0841 are unallocated.
  Allocating those could cause issues.
- Signature algorithms 224 to 255 are reserved for private use. However,
  much of the schemes those alias are unallocated. Putting any standard
  allocations there could cause issues. No similar issue exists for hash
  algorithms in private use range, because any standard signatures one
  would use with those are reserved anyway.

So one algorithm one could use is:

- Handle anything with signature 0-3/224-255 and hash 0-6/224-255 as
  signature/hash pair.
- Display schemes 0x0840 and 0x0841 specially.
- Handle anything else as signature scheme. 

However, this would not be right for the three ECDSA codepoints, and it
would not be right if in future anything gets allocated to some
potentially troublesome scheme identifiers. It is not necressary to do
anything special with 0x0807 and 0x0808 because mapping those to schemes
gives correct result anyway.

 
> The second one is the fact that there are two different cipher suites for RSA-
> PSS, rsa_pss_rsae_xxx and rsa_pss_pss_xxx, with conditions for use that are
> stated in a somewhat backwards form, "If the public key is carried in an
> X.509 certificate, it MUST use the RSASSA-PSS OID".  Since the only reason
> these exist AFAICT is to deal with rsaEncryption vs. RSA-PSS certs, it should
> really be stated as something like "the RSA-PSS code point used depends on how
> the key is carried in an X.509 certificate.  If the certificate OID is
> rsaEncryption then the rsa_pss_rsae_xxx form MUST be used.  If the certificate
> OID is RSASSA-PSS then the rsa_pss_pss_xxx form MUST be used".
> 
> And then add some explanation for why this is so and what'll go wrong if you
> use the other one, since I can't see any reason why you can't just use
> rsa_pss_rsae_xxx or rsa_pss_pss_xxx for everything.  What vulnerability is
> this mitigating?

It is not mitigating any vulnerability. The reason is that some TLS
implementations have very hard time supporting RSA-PSS certificates.
And I do not find the conditions to be backwards: There are two, both
scoped.

There is an edge case through: What if keys are not carried on X.509
certificate? In that case, it seems that both are allowed. In
practicular, are Raw Public Keys X.509 certificates? Those do have
RSAEncryption/RSA-PSS distinction like X.509 certificates do. And
then there was some certificate type for automotive applications,
and potentially more future certificate types ("CBOR compressed" is
particualrly fun one, considering those can expand to actual X.509
certificates, but might not do so.)



-Ilari

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


Re: [TLS] Possible TLS 1.3 erratum

2021-07-16 Thread Peter Gutmann
Eric Rescorla  writes:

>As we are currently working on a 8446-bis, the best thing to do would be to
>file a PR at: https://github.com/tlswg/tls13-spec

Before I do that I thought I'd get some input on what to say, there's actually
two issues, the first being the one I mentioned.  I was thinking something
like:

  TLS 1.2 defined the entries in the "extension_data" as two eight-bit values
  constituting a { hash, signature } pair.  TLS 1.3 changes the definition to
  be a single 16-bit value constituting a cipher suite that encodes both the
  signature and hash algorithm into a single value.  Although some of the TLS
  1.3 values, in particular the rsa_pss_rsae_xxx ones, appear to follow the
  TLS 1.2 format, implementations SHOULD NOT treat them as { hash, signature }
  pairs but as a single cipher suite identifier.

The second one is the fact that there are two different cipher suites for RSA-
PSS, rsa_pss_rsae_xxx and rsa_pss_pss_xxx, with conditions for use that are
stated in a somewhat backwards form, "If the public key is carried in an
X.509 certificate, it MUST use the RSASSA-PSS OID".  Since the only reason
these exist AFAICT is to deal with rsaEncryption vs. RSA-PSS certs, it should
really be stated as something like "the RSA-PSS code point used depends on how
the key is carried in an X.509 certificate.  If the certificate OID is
rsaEncryption then the rsa_pss_rsae_xxx form MUST be used.  If the certificate
OID is RSASSA-PSS then the rsa_pss_pss_xxx form MUST be used".

And then add some explanation for why this is so and what'll go wrong if you
use the other one, since I can't see any reason why you can't just use
rsa_pss_rsae_xxx or rsa_pss_pss_xxx for everything.  What vulnerability is
this mitigating?

Peter.

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