HTTPS是保障网络信息传输安全的重要环节,而在这其中加密算法和加密技术扮演着重要的角色。下面我们就一起来了解一下HTTPS的加密原理。

为什么需要HTTPS?

HTTP的内容是明文传输的,明文数据会经过中间代理服务器、路由器、wifi热点、通信服务运营商等多个物理节点,如果信息在传输过程中被劫持,传输的内容就完全暴露了。劫持者还可以篡改传输的信息且不被双方察觉,这就是中间人攻击。所以我们需要对信息进行加密,HTTPS也就应运而生。

HTTPS

HTTPS的加密算法

对称加密算法

客户端和服务器公用一个密匙用来对消息加解密,这种方式称为对称加密。客户端和服务器约定好一个加密的密匙,客户端在发消息前用该密匙对消息加密,发送给服务器后,服务器再用该密匙进行解密拿到消息。

但对称加密最大的问题就是这个密钥怎么让传输的双方知晓,同时不被别人知道。如果由服务器生成一个密钥并传输给浏览器,那在这个传输过程中密钥被别人劫持了怎么办?于是,在HTTPS中还需要使用非对称加密算法。

HTTPS

非对称加密算法

采用非对称加密时,客户端和服务端均拥有一个公有密匙和一个私有密匙。公有密匙可以对外暴露,而私有密匙只有自己可见。

使用公有密匙加密的消息,只有对应的私有密匙才能解开。反过来也是如此。这样客户端在发送消息前,先用服务器的公匙对消息进行加密,服务器收到后再用自己的私匙进行解密。

但非对称加密算法的速度很慢,并且浏览器无法确认收到的公钥是不是真实网站的。这时就需要加密技术的登场了。

HTTPS

HTTPS的加密技术

数字证书

网站在使用HTTPS前,需要向CA机构申领一份数字证书,数字证书里含有证书持有者信息、公钥信息等。服务器把证书传输给浏览器,浏览器从证书里获取公钥就行了,证书就如身份证,证明“该公钥对应该网站”。

但证书本身的传输过程中,如何防止被篡改呢?别着急,数据签名可以帮助我们解决这个问题。

HTTPS

数字签名

我们来了解一下数据签名的制作过程:

  1. CA机构拥有非对称加密的私钥和公钥。
  2. CA机构对证书明文数据T进行hash。
  3. 对hash后的值用私钥加密,得到数字签名S。

明文和数字签名共同组成了数字证书,这样一份数字证书就可以颁发给网站了,浏览器拿到服务器传来的数字证书后,通过一下方式进行验证:

  1. 拿到证书,得到明文T,签名S。
  2. 用CA机构的公钥对S解密,得到S’。
  3. 用证书里指明的hash算法对明文T进行hash得到T’。

显然通过以上步骤,T’应当等于S’,若相等则表明证书可信,反之则代表明文或签名被篡改。


虽然看起来非常麻烦,但HTTPS的整个工作过程对于用户而言是无感的,服务器和客户端可以以极短的时间完成全部操作。

免责声明:素材源于网络,如有侵权,请联系删稿。