最初的HTTP协议没有加密,很容易被中间人截取
有了对称加密后,数据经过了加密,但通信的双方首先要协商对称加密的密
钥,中间人截取到了协商的数据就可以获得密钥,也是不安全的
接下来有了非对称加密,非对称加密就是一对密钥(公钥与私钥)。公钥可
以解开用自己的私钥加密的数据,私钥可以解开用自己的公钥加密的数据,公钥
(PK)在网络上传输,私钥(SK)则保存在本地。
A用自己的私钥SK加密数据得到“A的SK数据”,再用B的公钥PK加密“A
的SK数据”得到“B的PK(A的SK数据)”,加密后发送给B,B收到后用自己
的私钥SK解密“B的PK(A的SK数据)”,得到“A的SK数据”,再用A的PK解
密得到“数据”,数据传输完成。因为A在发送数据的最外层用的是B的PK,只
有B的SK才能解开,所以中间人截取到传输的数据包也解不开,这就保证了数据
传输的安全。但是这种加密方式也是有漏洞的,A与B要知道对方的公钥就要通
过网络传输,传输过程中就可能被中间人截取篡改,中间人截取A与B的公钥,
分别告诉A于B中间人自己的公钥,相当于中间人分别于A和B建立了连接。
为了解决以上问题,引用了SSL(securesocketlayer)协议,组成了
HTTPS。
引入了CA证书,服务器将自己的公钥和自己的基本信息交给第三方CA认证
机构,由第三方认证机构将这些明文信息经过hash运算后得出一个信息摘要,
再用自己的SK加密摘要信息,返回给服务器,加密后的摘要信息叫做数字签
名,签名加上服务器的基本信息、证书序列号、服务器的公钥等,这个叫做证
书。
客户端内置了知名CA颁发机构的根证书,里面携带CA认证机构的公钥信
息,当客户端需要访问服务器时,会请求服务器的证书,拿到证书先用CA认证
机构的PK解密,得到签名与基本信息、过期时间等,用CA机构同样的hash算法
得出信息摘要,相同则没有被人篡改、完整性没有被破坏,再检查证书时间、公
司信息等,如果都没有问题,则取出证书内的服务器公钥信息,这样的公钥信息
就没有被中间人篡改的可能,安全性得到了保障。
这种非对称加密方式虽然安全但过于繁琐,为了解决这种问题,采用对称加
密与非对称加密结合的方式,先用非对称方式协商出对称加密的密钥,这样对称
加密的密钥安全性就得到了保证,再用对称密钥传输数据就不会被人知道。