目录
一、介绍
1. 对称加密、非对称加密
对称加密:信息的发送方和接收方使用同一个密钥去加解密、算法公开、加解密速度快。
非对称加密:加解密的一方使用公钥、一方使用私钥,安全性更好,但比较耗时间。
2. 相比于http建立tcp连接后就可以直接通信,https协议则在建立tcp连接后,还需要建立ssl建立,才能通信。
二、https加密过程
https采用的是对称加密和非对称加密的方式。
在验证公钥真实性时,采用的是CA机构的非对称加密。(服务器自身的公钥也是非对称)
在https通信阶段,采用的是对称加密。
1. 在使用https前,网站(服务器)会先向CA机构申请一份数字证书,证书中包含了网站自己的公钥(非对称加密)以及其他信息等。
2. CA机构对证书的明文数据进行hash,然后CA用自己的私钥(CA是非对称加密)对hash值进行加密,从而得到了数字签名。然后将证书和签名一起颁发给网站。
注意:为了避免中间人攻击,我们通过数字证书来确保浏览器收到的公钥就是服务器自身的公钥、另外,为了防止证书在传输过程中被篡改,又增加了数字签名,通过比对数字签名和证书的内容是否一致就能判别出是否被篡改。
3. 当浏览器向网站服务器发送https请求时,服务器将证书和签名发给浏览器,浏览器使用内置的CA公钥对数字签名解密得到一个hash值。然后使用hash算法对证书中的明文数据进行hash得到另一个hash值,如果两个hash值相同,那么就表明证书可信任的。
4. 之后浏览器随机生成一个对称加密的密钥,然后使用服务器给的公钥加密后传给服务器。
5. 服务器拿到后就用自己的私钥解密得到了这个对称加密的密钥。
(以上过程都是ssl的握手阶段)
6. 这样双方都有对称密钥了,之后双方用对称加密进行传输通信。
三、hash算法、常见的加解密算法
哈希算法是一种不可逆的数学函数,通过哈希算法可以将任意长度的一块数据映射为一段数据唯一的、定长的字符串,这个字符串又叫哈希值、散列值。常见的hash算法有MD5和SHA-1等。
1. MD5算法
产生一个128位长的散列值。速度更快。
2. SHA-1算法
产生一个160位长的散列值。更为安全。