我们如何改进 SSL 握手以提高安全性?
How can we improve SSL handshake to increase the security?
在 SSL 握手期间,服务器向客户端发送其(服务器的)public 密钥,然后客户端创建一个会话密钥并使用服务器的 public 密钥对其进行加密并将其发送到服务器。然后服务器用它的私钥解密消息并取回会话密钥。然后使用对称密钥保护服务器和客户端之间的进一步通信。
现在在这里,如果服务器发送的初始 public 密钥到达恶意设备,那么它会创建自己的会话密钥并使用 public 密钥加密并将其发送到服务器。然后整个通信将发生在服务器和恶意设备之间。
我们该如何解决?
我不确定你是否有这个权利。连接应该是:
client <--> server
由于服务器证书的 SSL 握手和验证,客户端 知道 它正在与服务器对话。你的问题是如果:
会发生什么
client // MiTM <--> server
客户端不在通信循环中。在这种情况下,服务器的标准身份验证和授权会将 MiTM 视为未经授权的客户端,并且不会向其提供任何敏感数据。
也许你在问如果初始连接是这样的会发生什么:
client <--> MiTM <--> server
其中 MiTM 是一些恶意网络设备。起初,服务器与客户端对话以对用户进行身份验证,但随后(不知不觉地)开始与 MiTM 对话。这不会发生,因为在建立 SSL 连接之前用户不会进行身份验证。由于 SSL 连接旨在成功应对恶意 MiTM 攻击,MiTM 可以看到流量但无法理解它。
此处的关键见解是服务器在通过 SSL 获得身份验证之前不会信任客户端,而客户端在获得安全的 SSL 通道之前不会进行身份验证。一旦在客户端和服务器之间正确建立了 SSL 通道,中间人除了阻止连接外无能为力。
简而言之,SSL 有效。
在 SSL 握手期间,服务器向客户端发送其(服务器的)public 密钥,然后客户端创建一个会话密钥并使用服务器的 public 密钥对其进行加密并将其发送到服务器。然后服务器用它的私钥解密消息并取回会话密钥。然后使用对称密钥保护服务器和客户端之间的进一步通信。
现在在这里,如果服务器发送的初始 public 密钥到达恶意设备,那么它会创建自己的会话密钥并使用 public 密钥加密并将其发送到服务器。然后整个通信将发生在服务器和恶意设备之间。 我们该如何解决?
我不确定你是否有这个权利。连接应该是:
client <--> server
由于服务器证书的 SSL 握手和验证,客户端 知道 它正在与服务器对话。你的问题是如果:
会发生什么client // MiTM <--> server
客户端不在通信循环中。在这种情况下,服务器的标准身份验证和授权会将 MiTM 视为未经授权的客户端,并且不会向其提供任何敏感数据。
也许你在问如果初始连接是这样的会发生什么:
client <--> MiTM <--> server
其中 MiTM 是一些恶意网络设备。起初,服务器与客户端对话以对用户进行身份验证,但随后(不知不觉地)开始与 MiTM 对话。这不会发生,因为在建立 SSL 连接之前用户不会进行身份验证。由于 SSL 连接旨在成功应对恶意 MiTM 攻击,MiTM 可以看到流量但无法理解它。
此处的关键见解是服务器在通过 SSL 获得身份验证之前不会信任客户端,而客户端在获得安全的 SSL 通道之前不会进行身份验证。一旦在客户端和服务器之间正确建立了 SSL 通道,中间人除了阻止连接外无能为力。
简而言之,SSL 有效。