13. 什么是中间人攻击

前面的文章我们讲到了RSA算法以目前的手段是很难被攻破的,那么使用RSA算法是不是就一定安全了呢?

答案当然是否,因为我们并没有考虑到网络传输中的各种情况。本文会讲一种攻击叫做中间人攻击,为了抵御这种攻击,我们引入证书的概念。我们会在后续的文章中讲解证书的概念。这里我们重点讲一下中间人攻击。

所谓中间人攻击就是在A和B通信的过程中加入了恶意攻击者C。C作为中间人转发两者的请求。

示意图如下:

sequenceDiagram

消息发送者A--x 攻击者C:"1.请发送你的公钥"
攻击者C--x 消息接受者B:"2.请发送你的公钥"
消息接受者B--x 攻击者C:"3.这是我的公钥"
攻击者C--x +消息发送者A:"4.C拦截B的公钥,并替换成C的公钥"
Note left of 消息发送者A: A误以为收到的是B的公钥,实际上却用了C的公钥加密
消息发送者A--x -攻击者C:"5.A向B发送密文,用C的公钥加密"
攻击者C--x 消息接受者B:"6.C拦截信息,用自己的私钥解密,并伪造新的信息,用B的公钥加密后发给B"
Note right of 消息接受者B:"B用私钥解密"

上面是一个完整的中间人攻击流程:

  1. A向B请求公钥,但是却被C截获。

  2. C向B发送公钥请求。

  3. B将公钥发给C。

  4. C截获了B的公钥,然后替换成自己的公钥发给A。

  5. A将C的公钥当成了B的公钥,并用其加密信息,发给B。

  6. C截获了加密信息,用自己的私钥解密,获得明文。同时伪造新的信息,再用B的公钥加密,发给B。

  7. B获得加密信息,用自己的私钥解密。

中间人攻击不仅仅针对于RSA算法,任何公钥算法都可能受到中间人攻击的影响。

只靠公钥本身是无法防御中间人攻击的。这时候,我们就需要一个第三方的可信任的机构来解决这个公钥传递的问题,那就是证书。我们会在后面的文章中讲到。

最后更新于