vlambda博客
学习文章列表

https之对称加密、非对称加密

1、对称加密

 服务端把密钥发给客户端(通过明文传输),服务端将要发送的数据用密钥加密, 到客户端之后,客户端用服务端发过来的密钥解密加密密文。

问题
 如何安全地把密钥发送给客户端。

2、各自两把钥匙

 客户端有自己的私钥和服务端的公钥两把钥匙,服务端也有自己的私钥和客户都安的公钥两把钥匙。发送数据就用对方的公钥加密,接收数据就用自己的私钥解密。

3、对称加密+非对称加密

 1、客户端发送自己的公钥给服务端。2、服务端用客户端的公钥加密对称密钥,然后发送给客户端。3、客户端用自己的私钥 解密,得到对称密钥。然后双方都有了对称密钥,用密钥进行密文传输。

https之对称加密、非对称加密

 存在一个问题:对应的公钥采用明文传输,接收方能否确认自己收到的公钥一定是对方的。

 假设一个场景:1、S端发送公钥给C端,黑客把公钥截获。2、黑客把自己的公钥传给C端,C端用黑客的公钥进行加密对称密钥,发送给S端。3、黑客再次截获C端用自己的公钥加密的密文,用自己的私钥解开,得到对称密钥。4、黑客用S端的公钥加密对称密钥,发送给S端。
  最后,黑客,S/C端都有了对称密钥。

非对称加密之所以不安全是因为接收方不知道公钥是否是对方的。

数字证书

数字证书=(数字签名)+(服务器个人信息+服务器公钥)

数字签名 = (服务器个人信息+服务器公钥)-->Hash算法=信息摘要-->CA的私钥

CA的公钥和私钥
发送发的公钥和私钥

客户端拿到数字证书,得到CA的公钥,CA的公钥可信,因为在网上公开,可以和其他的对比。用CA的公钥解开数字签名,得到信息摘要。
客户端用对应的hash算法hash出服务端信息的信息摘要。

对比两个信息摘要,如果一致,证明发送方法的公钥真实性。

CA的公钥和私钥保证对比信息摘要的真实性。



常用的对称加密算法:DES(Data Encryption Standar),非对称加密算法RSA,签名哈希算法MD5(SHA256)等等。