【问题标题】:How do certificate avoid the man in the middle attack?证书如何避免中间人攻击?
【发布时间】:2011-04-25 19:30:00
【问题描述】:

我还有一个关于网络安全的问题。 如果我理解正确,证书用于识别您的真实身份。所以中间人攻击是不可能的。 但是当我看到这张图片时:

http://upload.wikimedia.org/wikipedia/commons/thumb/2/2b/Digital_Signature_diagram.svg/800px-Digital_Signature_diagram.svg.png

我认为中间人攻击是可能的。您可以从数据中拆分签名、证书。使用您的虚假数据制作您自己的签名,并将带有虚假签名(但正确的证书)的虚假数据发送到服务器/客户端。

我在这张图片中也不明白的是在验证方面检查证书的位置。

谢谢。

SC男孩

【问题讨论】:

    标签: https ssl-certificate man-in-the-middle


    【解决方案1】:

    使用您的假数据制作您自己的签名,并将带有假签名(但正确的证书)的假数据发送到服务器/客户端。

    问题是接收者随后会查看虚假签名,发现它与真实发送者的证书不匹配。

    只有当您拥有该证书的正确私钥时,您才能创建与给定证书匹配的签名(即使证书本身是公开的,这就是非对称加密的魔力)。此私钥由证书所有者(消息的原始发送者)保密。

    通过提前分发受信任的证书来防止中间人。 您必须信任证书的真实性,要么直接信任它们(根证书),要么信任证书上的一系列签名,直至您信任的一个。

    如果中间的人能让你相信他的假证书是真的,那么整个系统就会失败。

    【讨论】:

    • 但是为什么证书与签名匹配。在维基百科的图片中,签名是从数据而不是证书创建的?我没有看到证书和签名之间的上下文。
    • 签名是使用数据和您的私钥创建的(链接到证书,证书包含匹配的公钥)。
    • 澄清一下,用于签署给定证书的是颁发者的私钥。
    • 阅读您的描述后我还有一个问题:听起来客户有责任验证证书是否正确?我只控制服务器端,并且可以在我端验证证书,但是如果客户端马虎并且没有验证,这并不能防止中间人攻击?想知道在设计 API 时是否有任何公司有办法确保在客户端进行验证,或者可能是他们简化/有据可查的示例。感谢您的回复!
    • 是的,客户端需要验证证书。默认情况下,您的 SSL 软件堆栈会执行此操作。但有时人们会关闭它(因为处理自签名或过期的证书对他们来说太“麻烦”了)。并且客户端必须能够相信根证书是真实的。作为服务器,您无法确保(我认为)客户端确实做到了所有这些。像 iPhone 这样完全锁定的设备是您能得到的最接近的设备。
    猜你喜欢
    • 1970-01-01
    • 2011-01-07
    • 2020-05-12
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    • 2021-11-14
    • 2011-03-17
    • 1970-01-01
    相关资源
    最近更新 更多