openssl/ssl
Benjamin Kaduk 6ffeb269a3 Disallow DSA/SHA1/etc. for pure TLS 1.3 ClientHellos
In draft-ietf-tls-tls13-20 Appendix B we find that:

   This section describes protocol types and constants.  Values listed
   as _RESERVED were used in previous versions of TLS and are listed
   here for completeness.  TLS 1.3 implementations MUST NOT send them
   but might receive them from older TLS implementations.

Similarly, in section 4.2.3 we see:

   Legacy algorithms  Indicates algorithms which are being deprecated
      because they use algorithms with known weaknesses, specifically
      SHA-1 which is used in this context with either with RSA using
      RSASSA-PKCS1-v1_5 or ECDSA.  These values refer solely to
      signatures which appear in certificates (see Section 4.4.2.2) and
      are not defined for use in signed TLS handshake messages.
      Endpoints SHOULD NOT negotiate these algorithms but are permitted
      to do so solely for backward compatibility.  Clients offering
      these values MUST list them as the lowest priority (listed after
      all other algorithms in SignatureSchemeList).  TLS 1.3 servers
      MUST NOT offer a SHA-1 signed certificate unless no valid
      certificate chain can be produced without it (see
      Section 4.4.2.2).

However, we are currently sending the SHA2-based DSA signature schemes
and many SHA1-based schemes, which is in contradiction with the specification.

Because TLS 1.3 support will appear in OpenSSL 1.1, we are bound by
stability requirements to continue to offer the DSA signature schemes
and the deprecated hash algorithms.  at least until OpenSSL 1.2.
However, for pure TLS 1.3 clients that do not offer lower TLS versions,
we can be compliant.  Do so, and leave a note to revisit the issue when
we are permitted to break with sacred historical tradition.

Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/3326)
2017-06-24 19:25:43 -05:00
..
record drop some no-longer-relevant TODO(TLS1.3) entries 2017-06-12 09:19:05 +01:00
statem Fix another EVP_DigestVerify() instance 2017-06-23 17:23:52 +01:00
bio_ssl.c Get pointer type right in BIO_ssl_shutdown() 2017-03-07 09:56:49 -05:00
build.info Move ssl/t1_ext.c to ssl/statem/extensions_cust.c 2017-04-07 13:41:04 +01:00
d1_lib.c Convert existing usage of assert() to ossl_assert() in libssl 2017-05-22 14:00:43 +01:00
d1_msg.c Remove special case code for SCTP reneg handling 2017-04-25 11:13:39 +01:00
d1_srtp.c Move client parsing of ServerHello extensions into new framework 2016-12-08 17:18:25 +00:00
methods.c Add the SSL_METHOD for TLSv1.3 and all other base changes required 2016-11-02 13:08:21 +00:00
packet.c Convert existing usage of assert() to ossl_assert() in libssl 2017-05-22 14:00:43 +01:00
packet_locl.h TLS1.3 Padding 2017-05-02 09:44:43 +01:00
pqueue.c Fix a missed size_t variable declaration 2016-11-04 12:09:46 +00:00
s3_cbc.c Convert existing usage of assert() to ossl_assert() in libssl 2017-05-22 14:00:43 +01:00
s3_enc.c Merge Nokia copyright notice into standard 2017-06-21 08:59:18 -04:00
s3_lib.c Merge Nokia copyright notice into standard 2017-06-21 08:59:18 -04:00
s3_msg.c Always flush the BIO when we send any alert 2017-06-06 22:39:41 +01:00
ssl_asn1.c Merge Nokia copyright notice into standard 2017-06-21 08:59:18 -04:00
ssl_cert.c Modify Sun copyright to follow OpenSSL style 2017-06-20 11:13:45 -04:00
ssl_ciph.c PSK related tweaks based on review feedback 2017-06-21 14:45:36 +01:00
ssl_conf.c Ignore -named_curve auto value to improve backwards compatibility 2017-06-08 21:28:36 +01:00
ssl_err.c Add TLSv1.3 client side external PSK support 2017-06-21 14:45:35 +01:00
ssl_init.c Convert existing usage of assert() to ossl_assert() in libssl 2017-05-22 14:00:43 +01:00
ssl_lib.c Add documentation for the SSL_export_keying_material() function 2017-06-21 16:18:36 +01:00
ssl_locl.h Add TLSv1.3 client side external PSK support 2017-06-21 14:45:35 +01:00
ssl_mcnf.c Fix misc size_t issues causing Windows warnings in 64 bit 2016-11-04 12:09:46 +00:00
ssl_rsa.c Try to be more consistent about the alerts we send 2017-05-19 08:47:08 +01:00
ssl_sess.c Add SSL_SESSION_set_protocol_version() 2017-06-21 14:45:35 +01:00
ssl_stat.c Merge Nokia copyright notice into standard 2017-06-21 08:59:18 -04:00
ssl_txt.c Merge Nokia copyright notice into standard 2017-06-21 08:59:18 -04:00
ssl_utst.c Remove heartbeat support 2016-11-13 16:24:02 -05:00
t1_enc.c Fix tls1_generate_master_secret 2017-06-22 11:54:19 -04:00
t1_lib.c Disallow DSA/SHA1/etc. for pure TLS 1.3 ClientHellos 2017-06-24 19:25:43 -05:00
t1_trce.c Fix the names of ChaCha20-Poly1305 cipher suites in t1_trce.c. 2017-06-22 16:43:03 +01:00
tls13_enc.c Fix a memleak in tls13_generate_secret. 2017-06-12 15:15:04 -04:00
tls_srp.c Use memset to clear SRP_CTX instead of NULL and zero assignments 2017-06-08 20:59:24 +01:00