HTTPS是保障网络信息传输安全的重要环节,而在这其中加密算法和加密技术扮演着重要的角色。下面我们就一起来了解一下HTTPS的加密原理。
为什么需要HTTPS?
HTTP的内容是明文传输的,明文数据会经过中间代理服务器、路由器、wifi热点、通信服务运营商等多个物理节点,如果信息在传输过程中被劫持,传输的内容就完全暴露了。劫持者还可以篡改传输的信息且不被双方察觉,这就是中间人攻击。所以我们需要对信息进行加密,HTTPS也就应运而生。
HTTPS的加密算法
对称加密算法
客户端和服务器公用一个密匙用来对消息加解密,这种方式称为对称加密。客户端和服务器约定好一个加密的密匙,客户端在发消息前用该密匙对消息加密,发送给服务器后,服务器再用该密匙进行解密拿到消息。
但对称加密最大的问题就是这个密钥怎么让传输的双方知晓,同时不被别人知道。如果由服务器生成一个密钥并传输给浏览器,那在这个传输过程中密钥被别人劫持了怎么办?于是,在HTTPS中还需要使用非对称加密算法。
非对称加密算法
采用非对称加密时,客户端和服务端均拥有一个公有密匙和一个私有密匙。公有密匙可以对外暴露,而私有密匙只有自己可见。
使用公有密匙加密的消息,只有对应的私有密匙才能解开。反过来也是如此。这样客户端在发送消息前,先用服务器的公匙对消息进行加密,服务器收到后再用自己的私匙进行解密。
但非对称加密算法的速度很慢,并且浏览器无法确认收到的公钥是不是真实网站的。这时就需要加密技术的登场了。
HTTPS的加密技术
数字证书
网站在使用HTTPS前,需要向CA机构申领一份数字证书,数字证书里含有证书持有者信息、公钥信息等。服务器把证书传输给浏览器,浏览器从证书里获取公钥就行了,证书就如身份证,证明“该公钥对应该网站”。
但证书本身的传输过程中,如何防止被篡改呢?别着急,数据签名可以帮助我们解决这个问题。
数字签名
我们来了解一下数据签名的制作过程:
- CA机构拥有非对称加密的私钥和公钥。
- CA机构对证书明文数据T进行hash。
- 对hash后的值用私钥加密,得到数字签名S。
明文和数字签名共同组成了数字证书,这样一份数字证书就可以颁发给网站了,浏览器拿到服务器传来的数字证书后,通过一下方式进行验证:
- 拿到证书,得到明文T,签名S。
- 用CA机构的公钥对S解密,得到S’。
- 用证书里指明的hash算法对明文T进行hash得到T’。
显然通过以上步骤,T’应当等于S’,若相等则表明证书可信,反之则代表明文或签名被篡改。
虽然看起来非常麻烦,但HTTPS的整个工作过程对于用户而言是无感的,服务器和客户端可以以极短的时间完成全部操作。
免责声明:素材源于网络,如有侵权,请联系删稿。