簡述HTTPS的加密原理

HTTPS是保障網(wǎng)絡(luò)信息傳輸安全的重要環(huán)節(jié),而在這其中加密算法和加密技術(shù)扮演著重要的角色。下面我們就一起來了解一下HTTPS的加密原理。

為什么需要HTTPS?

HTTP的內(nèi)容是明文傳輸?shù)模魑臄?shù)據(jù)會經(jīng)過中間代理服務(wù)器、路由器、wifi熱點、通信服務(wù)運營商等多個物理節(jié)點,如果信息在傳輸過程中被劫持,傳輸?shù)膬?nèi)容就完全暴露了。劫持者還可以篡改傳輸?shù)男畔⑶也槐浑p方察覺,這就是中間人攻擊。所以我們需要對信息進(jìn)行加密,HTTPS也就應(yīng)運而生。

HTTPS

HTTPS的加密算法

對稱加密算法

客戶端和服務(wù)器公用一個密匙用來對消息加解密,這種方式稱為對稱加密??蛻舳撕头?wù)器約定好一個加密的密匙,客戶端在發(fā)消息前用該密匙對消息加密,發(fā)送給服務(wù)器后,服務(wù)器再用該密匙進(jìn)行解密拿到消息。

但對稱加密最大的問題就是這個密鑰怎么讓傳輸?shù)碾p方知曉,同時不被別人知道。如果由服務(wù)器生成一個密鑰并傳輸給瀏覽器,那在這個傳輸過程中密鑰被別人劫持了怎么辦?于是,在HTTPS中還需要使用非對稱加密算法。

HTTPS

非對稱加密算法

采用非對稱加密時,客戶端和服務(wù)端均擁有一個公有密匙和一個私有密匙。公有密匙可以對外暴露,而私有密匙只有自己可見。

使用公有密匙加密的消息,只有對應(yīng)的私有密匙才能解開。反過來也是如此。這樣客戶端在發(fā)送消息前,先用服務(wù)器的公匙對消息進(jìn)行加密,服務(wù)器收到后再用自己的私匙進(jìn)行解密。

但非對稱加密算法的速度很慢,并且瀏覽器無法確認(rèn)收到的公鑰是不是真實網(wǎng)站的。這時就需要加密技術(shù)的登場了。

HTTPS

HTTPS的加密技術(shù)

數(shù)字證書

網(wǎng)站在使用HTTPS前,需要向CA機(jī)構(gòu)申領(lǐng)一份數(shù)字證書,數(shù)字證書里含有證書持有者信息、公鑰信息等。服務(wù)器把證書傳輸給瀏覽器,瀏覽器從證書里獲取公鑰就行了,證書就如身份證,證明“該公鑰對應(yīng)該網(wǎng)站”。

但證書本身的傳輸過程中,如何防止被篡改呢?別著急,數(shù)據(jù)簽名可以幫助我們解決這個問題。

HTTPS

數(shù)字簽名

我們來了解一下數(shù)據(jù)簽名的制作過程:

  1. CA機(jī)構(gòu)擁有非對稱加密的私鑰和公鑰。
  2. CA機(jī)構(gòu)對證書明文數(shù)據(jù)T進(jìn)行hash。
  3. 對hash后的值用私鑰加密,得到數(shù)字簽名S。

明文和數(shù)字簽名共同組成了數(shù)字證書,這樣一份數(shù)字證書就可以頒發(fā)給網(wǎng)站了,瀏覽器拿到服務(wù)器傳來的數(shù)字證書后,通過一下方式進(jìn)行驗證:

  1. 拿到證書,得到明文T,簽名S。
  2. 用CA機(jī)構(gòu)的公鑰對S解密,得到S’。
  3. 用證書里指明的hash算法對明文T進(jìn)行hash得到T’。

顯然通過以上步驟,T’應(yīng)當(dāng)?shù)扔赟’,若相等則表明證書可信,反之則代表明文或簽名被篡改。


雖然看起來非常麻煩,但HTTPS的整個工作過程對于用戶而言是無感的,服務(wù)器和客戶端可以以極短的時間完成全部操作。

免責(zé)聲明:素材源于網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系刪稿。