Fork me on GitHub

中间人攻击

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

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

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

示意图如下:

消息发送者A攻击者C消息接受者B"1.请发送你的公钥""2.请发送你的公钥""3.这是我的公钥""4.C拦截B的公钥,并替换成C的公钥"A误以为收到的是B的公钥,实际上却用了C的公钥加"5.A向B发送密文,用C的公钥加密""6.C拦截信息,用自己的私钥解密,并伪造新的信息,用B的公钥加密后发给B""B用私钥解密"消息发送者A攻击者C消息接受者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算法,任何公钥算法都可能受到中间人攻击的影响。

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

更多教程请参考 flydean的博客

posted @ 2020-01-15 09:49  flydean  阅读(420)  评论(0编辑  收藏  举报