首页 > 解决方案 > 在 HTTPS 连接中的 SSL 握手期间,客户端如何在加密传输开始之前安全地将 secert 发送到服务器

问题描述

我最近正在阅读HTTP The Definitive Guide一书的 Secure HTTP 章节。在本章中,它讨论了如何为 HTTPS 创建加密连接,并且有一个 SSL 握手图,如下所示 在此处输入图像描述

我的问题是客户端和服务器在第 4 步开始发送加密消息,但在第 3 步,他们如何安全地发送秘密。如果秘密被别人截获,它就会被盗,因为它没有加密。

标签: sslhttps

解决方案


您引用的描述大多已过时。它适用于在早期 SSL(v2,然后是 v3)中创建并在 TLS 中延续了一段时间的原始形式的密钥交换,简称为“RSA”密钥交换,有时被强调为“普通 RSA”或“仅 RSA”。

[秘密] 将被盗,因为它没有加密。

它使用服务器RSA 公钥(来自服务器的证书)加密,使用第一个免费发布的 RSA 加密标准,即PKCS1的 v1 (公钥加密标准 #1),来自当时的“实验室”子公司由 RSA 的发明者创立的公司。有关最新规范,请参阅rfc5246 第 7.4.7.1 节(此处不重复,因为它是三页)。正如那里所描述的,在选择 PKCS1v1.5 加密之后的几年里,针对它的攻击已经被发现并逐渐改进,降低了它的安全性并增加了替换它的动力(下图)。

然而,SSLv3 添加(早在比尔克林顿时代)并且 TLS 保留并改进了更好的密钥交换方法,在“短暂”模式下使用Diffie-Hellman,缩写为 DHE,以及后来的数学高级变体 Elliptic-Curve Diffie-Hellman,(两者之一)它提供了前向保密(有时被强调为完美的前向保密),结合 RSA、DSA 或 ECDSA 身份验证(签名)。多年来,安全专家建议人们使用这些改进的方法,但在斯诺登让全世界意识到大规模监视行动之前,他们大多被忽视了。在过去的 6 年中,人们几乎完全转向了基于 DHE 的密钥交换,而最新版本 TLS 1.3 于 2018 年发布,现在在很大一部分用途中实施,但还不是大多数,需要DHE 并且不再支持纯 RSA密钥交换。1.3 还重新排列了协议的部分内容,以便您所拥有的简化描述根本不正确,尽管它实现了相同的结果。


推荐阅读