是否可以在TLSv1.2会话中使用TLSv1.3密码?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否可以在TLSv1.2会话中使用TLSv1.3密码?相关的知识,希望对你有一定的参考价值。
我正在逆转一个android应用程序,我注意到,在嗅探时,发生了一些奇怪的事情。
TLSv1.3引入了一些新的密码,如
- TLS_AES_256_GCM_SHA384
- TLS_CHACHA20_POLY1305_SHA256
- TLS_AES_128_GCM_SHA256
- TLS_AES_128_CCM_8_SHA256
- TLS_AES_128_GCM_SHA256
而且,从我读过的OpenSSL文档(https://wiki.openssl.org/index.php/TLS1.3),
有新的密码套件只适用于TLSv1.3。旧的密码套件不能用于TLSv1.3连接,新的密码套件不能用于TLSv1.2及以下版本。
在“Client Hello”和服务器之间使用TLSv1.2和新的TLSv1.3密码,服务器也支持TLSv1.3,允许它并且由于某种原因它们启动通信。
怎么可能?谢谢。
不,你错过了我认为的一个重要的新方面(我看不到你的链接图像,你应该在问题本身内发布所有相关数据)。
出于兼容性原因,TLSv1.3在ClientHello
期间尝试将其自身屏蔽为TLSv1.2,请参阅https://tools.ietf.org/html/rfc8446#section-4.1.2:
4.1.2。客户你好
当客户端首次连接到服务器时,需要将ClientHello作为其第一个TLS消息发送。
此消息的结构:
uint16 ProtocolVersion;
opaque Random[32];
uint8 CipherSuite[2]; /* Cryptographic suite selector */
struct {
ProtocolVersion legacy_version = 0x0303; /* TLS v1.2 */
Random random;
opaque legacy_session_id<0..32>;
CipherSuite cipher_suites<2..2^16-2>;
opaque legacy_compression_methods<1..2^8-1>;
Extension extensions<8..2^16-1>;
} ClientHello;
请注意,legacy_version实际上是TLSv1.2,然后是解释:
legacy_version:在以前版本的TLS中,此字段用于版本协商,并表示客户端支持的最高版本号。经验表明,许多服务器没有正确实现版本协商,导致“版本不容忍”,其中服务器拒绝版本号高于其支持的其他可接受的ClientHello。在TLS 1.3中,客户端在“supported_versions”扩展(第4.2.1节)中指示其版本首选项,并且legacy_version字段必须设置为0x0303,这是TLS 1.2的版本号。 TLS 1.3 ClientHellos被标识为具有0x0303的legacy_version和具有0x0304的supported_versions扩展,作为其中指示的最高版本。 (有关向后兼容性的详细信息,请参阅附录D.)
至于密码套件和TLS版本,情况更复杂。由于规范中解释的原因,TLSv1.3仅将其中的一些标准化为强制性的。但是,这并不严格禁止其他TLS版本使用它们。
看到:
- ChaCha20-Poly1305 Cipher Suites for Transport Layer Security (TLS):本文档描述了在传输层安全性(TLS)协议版本1.2或更高版本中使用ChaCha流密码和Poly1305身份验证器
- TLS 1.2 Update for Long-term Support与AES + SHA
“AES GCM”系列是10年前在https://tools.ietf.org/html/rfc5116 TLSv1.3中定义的,仅标准化了完美的前向隐私,因此仅表示(EC)DHE密钥交换,如果不使用PSK(参见RFC8446的第2节)
看看https://security.stackexchange.com/a/77018/137710和https://github.com/ssllabs/research/wiki/SSL-and-TLS-Deployment-Best-Practices#23-use-secure-cipher-suites
但是TLSv1.3密码套件的定义不同(新名称),因为它们将其他扩展中的某些部分分开。
因此,您将在OpenSSL更新日志中看到此警告:
从TLSv1.2密码套件配置中分离出TLSv1.3密码套件配置。 TLSv1.3密码套件与TLSv1.2及以下版本不兼容。类似地,TLSv1.2密码套件与TLSv1.3不兼容。为了避免传统TLSv1.2密码套件配置无意中禁用所有TLSv1.3密码套件的问题,配置已被分离出来。有关更多信息,请参见密码手册页或SSL_CTX_set_ciphersuites()手册页。
(Qazxswpoi)
关于https://github.com/openssl/openssl/pull/5392的CloudFlare文档如下表所示:
尽管TLS 1.3使用与先前版本的TLS相同的密码套件空间,但TLS 1.3密码套件的定义不同,仅指定对称密码,不能用于TLS 1.2。类似地,TLS 1.2和较低密码套件不能与TLS 1.3一起使用(IETF TLS 1.3草案21)。
以上是关于是否可以在TLSv1.2会话中使用TLSv1.3密码?的主要内容,如果未能解决你的问题,请参考以下文章