Dee*_*ake 1 sockets authentication ssl certificate mutual-authentication
好的,服务器发送一个公钥,客户端用它来加密自己的证书信息并发回服务器。我不明白的是为什么攻击者无法拦截步骤 4 中的数据包,然后使用它发送到服务器来冒充客户端。他们不必知道里面的信息或解密它。如果攻击者获得该数据包并保存它,那么当服务器请求客户端证书时,他们可以将这些确切的字节发送到服务器。我不确定这种加密方法如何防止此类攻击。话又说回来,当涉及到套接字级加密时,我完全是个菜鸟,所以我可能会错过一些重要的东西。谢谢!
事情比这更复杂,这张图有一些缺陷,并且混合了本地存储的内容和交换的内容。
查看https://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_handshake,特别是“客户端验证的 TLS 握手”案例。
总之:
CertificateRequest
)Certificate
消息,其中包含其证书ClientKeyExchange
,这些数据稍后将用于真正加密应用程序数据的交换,CertificateVerify
握手之前的 TLS 消息交换中计算出的签名因此,只要私钥保持私有,攻击者就不能通过窃取证书来冒充客户端(在其他情况下也存在相同类型的保护,以对服务器进行身份验证)。如果私钥被盗,那么上述所有操作都会失败。
此时无需了解加密签名的所有细节,只需系统的设计方式是,由一个密钥加密的所有内容只能由另一个密钥解密:如果有人用其私钥加密数据,那么任何人都可以用其公钥(根据定义,公钥)对其进行解密;然后您通常会遇到传播它的问题,但这里不会,因为公钥包含在之前交换的证书中握手);当然,这对于保密性来说毫无用处(任何人都可以看到加密的内容),但它是身份验证的基础,因为如果解密有效,则意味着发送者拥有与您用来解密该内容的公共密钥相关的私钥。
请注意,对于刚刚作为新标准推出的 TLS 1.3,TLS 交换中的消息数量和性质略有变化,但上述加密保证(使用私钥签署某些内容,以便远程方可以仔细检查)相关的公钥)仍然有效。
归档时间: |
|
查看次数: |
2781 次 |
最近记录: |