5分钟学会非对称加密

有非对称加密必然有对称加密,这里对称加密做个背景介绍:数据发送方将明文(原始数据)和加密密钥 一起经过加密算法处理后,使其变成加密密文发送出去。接收方收到密文后,使用和加密同样的密钥及相同算法的逆算法对密文进行解密,使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,双方都使用这个密钥对数据进行加密和解密,因为都是用同样的密钥,所以叫做对称加密。

相对于对称加密,非对称加密使用两个密钥,公钥(public key)和私钥(private key),一个用于加密一个用于解密,两者是根据一定的算法计算出来的,但是知道其中一个,又不能推算出另一个,所以两者相关而不相同,所以叫非对称加密。以下对每个步骤进行图解,希望能够达到一看就明白的效果。这里使用最著名的RSA算法来计算公钥(public key)和私钥(private key),RSA算法以发明者Rivest, Shamir 和Adleman的首字母命名,这里不讲述具体的RSA算法细节,只说明非对称加密的每个步骤。

(1)通信的双方使用RSA算法计算出各自的public key和private key,以备后用。

 

(2)通信之前把public key发送给对方,因为是大家知道的,所以叫public,而自己保留那份别人不知道,所以叫private key。

(3)发送方在发送之前准备对两个数据进行加密,一是数据本身,而是数据的hash值。hash值的目的是为了对方能验证数据是否完整。

  • 数据本身:使用对方的public key加密
  • 数据的hash值:使用自己的private key加密

然后把两者都发送到对方,对于两个数据

  • 数据本身:使用自己的private key解密
  • 数据的hash值:使用发送方的public key解密

最后验证解密后的数据的hash值是否等于发送过来的hash值。

(4)潜在的危险:在发送public key的过程中,public key可能会被坏人劫持,然后坏人把自己的public key发送给发送接收两方。

 

(5)坏人再劫持发送接收两方的消息之后解密,知道了双方的内容,再把自己想说的坏话发送给双方,达到挑拨离间的目的。

(6)保证public key是安全的:为了避免(4)出现的危险,我们使用CA(Certificate Authority)来保证public key的真实性。CA相当于一个权威机构,它给信息发送接收双发(实际上是多方,我们以1vs1举例)一个法宝,通过这个法宝,就能验证对方发送的public key是否真实的。这个法宝叫做CA证书,是集成在浏览器和操作系统里的,所以只要不是使用来历不明的操作系统和浏览器,都是安全的。

CA证书本身也是通过非对称加密来实现的,它的工作过程是:发送方A把public key给CA,CA用自己的私钥对public key加密后返还给A,A把加密后的public key发送给B,因为B已经有了CA证书,而这个CA证书里有CA的public key,所以A能够还原真实的public key,这就保证了public key的真实性。这个过程中,即使C劫持了A发送给B的public key,但是因为它没有CA的private ke,所以不会被CA证书认可,所以伪造不了public key。

 

好吧,估计看到这里不止5分钟了,估计10分钟吧 :),逃~~~~

猜你喜欢

转载自www.cnblogs.com/592YiRen/p/10793725.html