非对称加密总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lewis_007/article/details/73336758

概述

非对称加密算法需要两个密钥:公开密钥(public key)和私有密钥(private key)。

公开密钥与私有密钥是一对。公钥加密,只能用对应的私钥解密。私钥加密,只能用对应的公钥解密。

因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

目的

相比对称加密,非对称加密的提出,主要是解决两个问题:

  • 数据加密传输,防止消息明文传输时被拦截和篡改
  • 数字签名,防止伪造冒充信息源头

数据加密传输

甲方给乙方发送消息

  • 双方都需要生成一套密钥,其中私钥自己保存,公钥公开出去
  • 甲方,使用乙方的公钥,加密消息,传递给乙方
  • 乙方收到消息,使用乙方的私钥,解密消息

注释:如果消息被拦截,拦截者没有乙方的私钥,无法解密消息

乙方给甲方回复消息

  • 乙方,使用甲方的公钥,加密待回复消息,传递给甲方
  • 甲方收到消息,使用甲方的私钥,解密回复消息

注释:如果消息被拦截,拦截者没有甲方的私钥,无法解密消息

数字签名

甲方给乙方发送消息

  • 甲方,使用甲方的私钥,对信息签名,传递给乙方
  • 乙方收到消息,使用甲方的公钥,对信息验签

注释:第三方无法伪造甲方的私钥,验签通过,就防止了伪造和冒充

总结

通过以上,可以总结:

  • 公钥加密,私钥解密
  • 私钥签名,公钥验签

使用的原理,开头已提到:

  • 公钥加密,只能用对应的私钥解密
  • 私钥加密,只能用对应的公钥解密

问题

思考

甲方给乙方发送消息这个过程,如何同时保证以下两点:

  • 甲方的消息不怕第三方拦截
  • 乙方收到的消息来自甲方,而不是第三方通过乙方的公钥伪造

自问

甲方给乙方发送消息,到底是用乙方的公钥加密,还是甲方的私钥加密?

因为,公钥是对外公布的:

  • 只用 公钥加密、私钥解密,如何做到验签,也就是,如何确认消息来自甲方
  • 只用 私钥加密、公钥解密,如何做到加密,也就是,任何拿到甲方公钥的第三方都可以解密

自答

甲方给乙方发送消息,这么优化一下:

  • 双方都需要生成一套密钥,其中私钥自己保存,公钥公开出去
  • 甲方,使用乙方的公钥,加密消息,并且加上甲方的私钥(数字签名),传递给乙方
  • 乙方收到消息,使用乙方的私钥和甲方的公钥,解密消息

再思考

按照上面的解答,如果第三方,拦截了甲方的消息,保留甲方的数字签名,用乙方的公钥,加密任意消息,这不就做到了伪造甲方的消息,但是消息内容被篡改?

自问

甲方给乙方发送消息,如何防止消息被篡改?

他答

甲方使用甲方的私钥加密的内容,最好是MD5签名后的明文。

—— 没看懂

最后

到这里,大致搞清楚原理了,具体如何实现,不在这里说,可能实际的项目中,会进一步演化,加入 SHA-256 等。但是无论如何演化,其基本原理和目的就是这些了。

参考网址

猜你喜欢

转载自blog.csdn.net/lewis_007/article/details/73336758