ssl - 在 HTTPS 连接中的 SSL 握手期间,客户端如何在加密传输开始之前安全地向服务器发送 secret

标签 ssl https

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

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

最佳答案

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

[the secret] will be stolen because it's not encrypted.


它使用服务器的 RSA 公钥(来自服务器的证书)加密,使用第一个免费发布的 RSA 加密标准,即 PKCS1 的 v1 (公钥加密标准#1)来自当时由 RSA 的发明者创立的公司的“实验室”子公司。有关最新规范,请参阅 rfc5246 section 7.4.7.1 (这里不重复,因为它是三页)。
正如那里所描述的,在选择 PKCS1v1.5 加密之后的几年里,针对它的攻击已经被发现并逐渐改进,降低了它的安全性并增加了替换它的动力(下图)。
但是,添加了 SSLv3(早在比尔克林顿时代),并且 TLS 使用 Diffie-Hellman 保留并改进了更好的 key 交换方法。在“短暂”模式下,缩写为 DHE,以及后来的数学高级变体 Elliptic-Curve Diffie-Hellman,(两者之一)提供 forward secrecy (有时强调为完美的前向保密),结合 RSA、DSA 或 ECDSA 身份验证(签名)。多年来,安全专家建议人们使用这些改进的方法,但在斯诺登让全世界意识到大规模监视行动之前,他们大多被忽视了。在过去的 6 年中,人们几乎完全转向了基于 DHE 的 key 交换,而最新版本 TLS 1.3 于 2018 年发布,现在在很大一部分用途中实现,但还不是大多数,需要 DHE 并且不再支持纯 RSA key 交换。 1.3 还重新排列了协议(protocol)的部分内容,以便您所拥有的简化描述根本不正确,尽管它实现了相同的结果。

关于ssl - 在 HTTPS 连接中的 SSL 握手期间,客户端如何在加密传输开始之前安全地向服务器发送 secret ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60089108/

相关文章:

ruby-on-rails - 确定 SSL 证书的格式

php - 安全网络连接(例如 SSL)由 Web 服务器处理,对吗?

c# - 从 .net 客户端访问 ssl 服务器(web 服务)

security - HTTPS 可以进行 session 劫持/MITMA 等吗?

iphone - iPhone 应用程序和 Web 服务器之间的安全连接?

.htaccess - Opencart 2.1.0.2 ssl无法启用

wcf - 如何执行 ssl 用户身份验证

c# - 是否有 .net 驱动程序支持与 PostgreSQL 完全验证的 SSL 连接?

php - 如何在没有任何 SSL 证书的情况下将 https 重定向到 http

cookies - Google Ads 不支持 HTTPS。有哪些替代方案?