对称加密和非对称加密(关于中间人攻击, 数字签名)

对称加密

对称加密做加密和解密使用的是同一个密钥, 通信双方需通过电话或邮件等其它手段来进行告知密钥, 所以无法确保密钥被安全传递.

  • 常见对称加密算法 DES , 3DES, Blowfish, IDEA, RC4, RC5, RC6和 AES等

非对称加密

非对称加密(Asymmetric Cryptography)使用两种密钥, 公钥(Public Key)和私钥(Private Key)它们是一对的, 公钥公开给发送信息方用于信息加密, 接收方接收密文使用私钥解密. 这样很好的解决了密钥传输过程的安全性问题. 还有私钥可以通过算法能推导出公钥, 但是私钥到公钥的推导过程是单向的, 也就是说公钥是无法反推导出私钥.

  • 常见非对称加密算法 RSA, ECC(椭圆曲线加密算法), Rabin, Diffie-Hellman, El Gamal, DSA(数字签名用)等

通信过程(非对称加密

  • Tom想发给Bob一些信息, 首先Bob需先公开自己的 Public Key给Tom, 那么Tom可以使用Bob给的 Public Key把将要发送的信息加密发送, 最后Bob使用自己的 Private Key解密接收到的密文. 这样第三人即使截取了密文如果没有Bob的 Private Key也无法解析出密文.
  • 相反Bob想发给Tom一些信息, 显然Tom也可以生成自己的 Public Key给Bob, 以此走相关加解密过成.

关于中间人攻击(非对称加密

  1. Tom生成密钥(a_pri/a_pub), Bob生成密钥(b_pri/b_pub)两者都公开公钥 a_pub和 b_pub为了相互传递信息. 第三人(窃听者)也生成密钥(ca_pri/ca_pub)和(cb_pri/cb_pub) 生成两对.
  2. 首先John(窃听者)会把Tom的公钥 a_pub截取保存, 再把自己的 ca_pub发给Bob, 然后Bob的公钥 b_pub截取保存, 再把自己的 cb_pub发给Tom. 他们两者都会认为自己拿到的公钥是对方的.
  3. 此时Tom和Bob相互传递自认为对方的公钥(实际是窃听者John的)加密后的信息发给对方, John在两边接收密文通过自己的私钥(ca_pri, cb_pri)解密, 再发给各方 完美扮演了中间人的角色.

关于数字签名(非对称加密

窃取者可以当中间人是因为无法保证收到的公钥可能被篡改, 这时可以使用数字签名来防止公钥被篡改

关于RSA签名(数字签名
  • 使用私钥给信息加密, 然后用对应的公钥来解密(验证签名)信息, 和上面加解密过成相反, 数字签名是私钥加密, 公钥解密. 还有数字签名和一般加解密目的有所不同. 一个是不想让别人看到通信信息, 不过数字签名是不想让别人冒充自己或被篡改, 接收者可以使用公钥鉴定签名.
  • 制作RSA数字签名: 考虑到信息量很大, 如RSA计算效率和信息量是成正比的, 所以最好使用效率更高且固定长度的 Hash算法(摘要算法)来提取摘要, 然后把提取出的哈希值当数字签名. 这样接收方使用公钥判断信息内容是否被篡改了.
证书认证机构 CA(Certificate Authority)
  • 最后还是无法确定相应公钥是否是可信的, 这时就需要找有公信力的组织来颁布 CA证书.
  • 拿到 CA数字证书后Tom和Bob相互传递信息时, 只要签名的同时附上数字证书, 再用 CA的公钥解开数字证书后获取对方的公钥, 鉴定"数字签名".

如果您觉得有帮助,欢迎点赞哦 ~ 谢谢!!

发布了62 篇原创文章 · 获赞 325 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qcl108/article/details/102767276
今日推荐