网络安全之https

142 阅读4分钟

我们知道http是基于tcp之上的,主要用于在浏览器和服务器之间传输数据,而https则是在httptcp之间加了安全层,该层存在的目的是确保数据安全性以及服务器合法性。

http传递数据的过程中,可能会遇到数据被窃取或者篡改的情况。

image.png

为了说明白https的原理,先从简单模型开始。

一、对称加密

对称加密指的是,服务器和浏览器用同一套加密算法对数据进行加密和解密。服务器和浏览器在传递相同加密算法的时候,可能会被中间人截取该算法,进而修改浏览器发送给服务器或者服务器发送给浏览器的数据。

二、非对称加密

非对称加密指的是,服务器拥有私钥,浏览器拥有公钥,浏览器通过公钥对数据进行加密传递给服务器,服务器通过秘钥将数据进行解密。该过程的特点是,秘钥掌握在服务器手里,所以服务器获取到的数据不会被中间人窃取或篡改,但是,浏览器获取公钥的过程中可能被中间人窃取,进而导致服务器发送给浏览器的数据可能会被中间人窃取或者篡改。

三、混合加密

非对称加密除了不能确保发送到浏览器数据安全性问题,其效率也很低。如果对称加密的算法通过非对称加密的方式传递,而数据的传输过程中的加密或解密依然通过对称加密的方式,那么就解决了安全问题和效率问题,这种方式称为混合加密

四、数字证书

混合加密貌似解决了浏览器和服务器传输数据安全问题,但是浏览器如果访问的服务器是被劫持后的危险服务器,而危险服务器又自己搞了一套公钥和私钥,那么,浏览器传输的数据直接被危险服务器窃取或伪造。

此时,服务器就需要向浏览器证明其合法性:

这里首先引入CA(Certificate Authority)权威机构,然后颁发数字证书,并且为数字证书进行签名

  • 权威机构CA:顶级权威机构CA内置于操作系统中,中间CA由顶级CA授权,并且又可以为下一级中间CA授权,这样就形成了一个CA树,每一个叶子CA都会通过链路找到一个顶级权威机构CA。
  • 数字证书:包含公司的公钥、CA的信息、证书有效时间、公司组织信息等明文信息。
  • 数字签名:CA使用Hash 函数计算明文信息得出信息摘要;然后CA使用其秘钥对信息摘要进行加密,得到的就是CA颁发给公司的数字签名

再看浏览器验证服务器合法性时的流程:

(1)服务器发送CA(包含用于解密信息摘要的公钥)信息和数字证书(包含用于解密服务器数据的公钥)给浏览器。
(2)浏览器接收CA信息和数字证书后,会通过Hash 函数计算得出数字证书的信息摘要,同时通过CA中的公钥解密数字签名得到信息摘要,如果通过两种方式计算的信息摘要相同,说明叶子CA是合法的,但是,叶子CA还需要通过CA链路找到顶级CA,顶级CA是内置CA才能证明服务器其合法性。
(3)浏览器将生成对称加密算法的一组随机数通过数字证书中的公钥传递给服务器,服务器解密得到随机数,通过和浏览器相同的方式生成加密算法,经过浏览器和服务器的确认后,进行浏览器和服务器的数据传递。

总结

浏览器和服务器交互的过程中,通过https中数字证书以及数字证书签名证明了服务器的合法性,也安全的实现了对称加密算法在服务器和浏览器中的统一,至此,浏览器就开始和目标服务器进行安全的数据传输。