SSL/TLS学习(七)

        上述通信过程看似安全,其实还有一个漏洞。

        假设攻击者C也向D申请加密自己的公钥,而D无法判断C是否会发动中间人模式的攻击。假设D给C发放了用D的**加密的C的公钥,那么C就可以实施中间人模式的攻击了。

        SSL/TLS学习(七)

        中间人模式攻击能够成功,原因在于B收到C发来的加密公钥的时候,虽然可以通过D的公钥解密,但是依旧无法判断解密后的公钥是来自A的,还是来自C的。

        因此,不得不引入新的信息,以确保公钥的来源。A向D申请加密公钥的过程更改成这样。

        SSL/TLS学习(七)

        注意:用PriKd加密的不仅仅是PubKa,还包括A的身份www.a.com。攻击者C在申请加密自己的**PubKc的时候,如果也用www.a.com的身份申请,就会被D发现并且拒绝。因此,攻击者C申请到的加***只能包含PubKc和他自己的身份www.c.com。

        在通信过程中,B不仅会用D的公钥PubKd解密PubKaS,而且会检查解密后的身份是不是www.a.com,如果是则继续通信,如果不是则说明受到了中间人模式的攻击而终止通信。

        SSL/TLS学习(七)


        SSL/TLS学习(七)

        最后需要补充的是,如果D受*胁迫或者出于经济利益,而发放假冒身份的加密公钥就会给中间人模式的攻击创造条件。这可能也是最近大力推行自签名CA证书的原因吧。

        以上所有通信过程均是通过查阅网上资料设想的,并没有经过查看协议或者网络抓包确认。如有任何错误,欢迎指正。