如何安全的通信
HTTP是一个文本协议容易被中间人攻击。对信息进行加密,从http到https。
对称加密
服务器端与浏览器端均用一个协商好的同一个秘钥进行加/解密,此种加密速度快,适用于发送消息双方需要大量加解密的场景。可能会出现中间人攻击,截获用户的秘钥泄露用户消息,如何将秘钥安全的传送到解密方非常重要,经典的对称加密有AES。
非对称加密
非对称加密是通过一对秘钥对public_key、private_key进行加解密的,用public_key加密就必须用private_key解密反之亦然,经典的非对称加密算法有RSA算法,其基于大素数的分解
服务器与浏览器之间的加密过程如下:
(1)服务器公开自己的公钥public_key
(2)浏览器用此公钥对自己的消息进行加密
(3)服务器用自己的私钥进行解密
非对称加密可能被人伪造服务器,向浏览器发送来自黑客的public_key消息,黑客就和浏览器之间建立了联系,用户的消息就会泄露。基于此,将产生CA证书来证明服务器的是否可信。
数字证书
CA是签发证书、认证证书、管理已颁发证书的第三方机构。数字证书包含两部分:一部分是网站信息(网站的公钥,网站组织名、证书有效期、证书的颁发机构 );另一部分是数字签名。
网站信息-----(Hash算法)------消息摘要----(CA私钥)-----数字签名
浏览器得到网站的数字证书后将会通过:
(1)用CA的公钥对数字签名进行解密得到消息摘要
(2)用hash算法对网站信息进行计算获得消息摘要
(3)对比(1)、(2)得到的消息摘要是否相同
如何安全的通信
下图为浏览器端与服务器之间建立的通信链接,可以看到这个过程中用到了数字证书、非对称加密以及对称加密的技术。
(1)浏览器想网站服务器发起安全请求https://xxx.com
(2)服务器向浏览器发送数字证书(其中包含服务器的public_key)
(3)浏览器用预置的CA列表验证服务器的安全性
(4)浏览器用服务器的public_key对对称秘钥key进行加密
(5)服务器用自己的private_key进行解密获得对称秘钥key
(6)浏览器与服务器之间通过对称秘钥key进行加密通信
加密通信的探讨
对于CA的伪造,我们可以继续用上级CA机构的数字签名进行验证,最终将追溯到浏览器中的根证书。
就目前的12306网站的查询网页的根证书需要在站点下载,但是支付的页面用的是CA证书。可能的威胁是黑客可以伪造为12306网站,而用户下载的根证书就是一个假的证书,无法验证站点的安全性。如果用了CA机构颁发的证书,证书的试用期受制于国外CA 机构。