簡(jiǎn)述HTTPS的加密原理
HTTPS是保障網(wǎng)絡(luò)信息傳輸安全的重要環(huán)節(jié),而在這其中加密算法和加密技術(shù)扮演著重要的角色。下面我們就一起來(lái)了解一下HTTPS的加密原理。
為什么需要HTTPS?
HTTP的內(nèi)容是明文傳輸?shù)?,明文?shù)據(jù)會(huì)經(jīng)過(guò)中間代理服務(wù)器、路由器、wifi熱點(diǎn)、通信服務(wù)運(yùn)營(yíng)商等多個(gè)物理節(jié)點(diǎn),如果信息在傳輸過(guò)程中被劫持,傳輸?shù)膬?nèi)容就完全暴露了。劫持者還可以篡改傳輸?shù)男畔⑶也槐浑p方察覺(jué),這就是中間人攻擊。所以我們需要對(duì)信息進(jìn)行加密,HTTPS也就應(yīng)運(yùn)而生。

HTTPS的加密算法
對(duì)稱(chēng)加密算法
客戶(hù)端和服務(wù)器公用一個(gè)密匙用來(lái)對(duì)消息加解密,這種方式稱(chēng)為對(duì)稱(chēng)加密??蛻?hù)端和服務(wù)器約定好一個(gè)加密的密匙,客戶(hù)端在發(fā)消息前用該密匙對(duì)消息加密,發(fā)送給服務(wù)器后,服務(wù)器再用該密匙進(jìn)行解密拿到消息。
但對(duì)稱(chēng)加密最大的問(wèn)題就是這個(gè)密鑰怎么讓傳輸?shù)碾p方知曉,同時(shí)不被別人知道。如果由服務(wù)器生成一個(gè)密鑰并傳輸給瀏覽器,那在這個(gè)傳輸過(guò)程中密鑰被別人劫持了怎么辦?于是,在HTTPS中還需要使用非對(duì)稱(chēng)加密算法。

非對(duì)稱(chēng)加密算法
采用非對(duì)稱(chēng)加密時(shí),客戶(hù)端和服務(wù)端均擁有一個(gè)公有密匙和一個(gè)私有密匙。公有密匙可以對(duì)外暴露,而私有密匙只有自己可見(jiàn)。
使用公有密匙加密的消息,只有對(duì)應(yīng)的私有密匙才能解開(kāi)。反過(guò)來(lái)也是如此。這樣客戶(hù)端在發(fā)送消息前,先用服務(wù)器的公匙對(duì)消息進(jìn)行加密,服務(wù)器收到后再用自己的私匙進(jìn)行解密。
但非對(duì)稱(chēng)加密算法的速度很慢,并且瀏覽器無(wú)法確認(rèn)收到的公鑰是不是真實(shí)網(wǎng)站的。這時(shí)就需要加密技術(shù)的登場(chǎng)了。

HTTPS的加密技術(shù)
數(shù)字證書(shū)
網(wǎng)站在使用HTTPS前,需要向CA機(jī)構(gòu)申領(lǐng)一份數(shù)字證書(shū),數(shù)字證書(shū)里含有證書(shū)持有者信息、公鑰信息等。服務(wù)器把證書(shū)傳輸給瀏覽器,瀏覽器從證書(shū)里獲取公鑰就行了,證書(shū)就如身份證,證明“該公鑰對(duì)應(yīng)該網(wǎng)站”。
但證書(shū)本身的傳輸過(guò)程中,如何防止被篡改呢?別著急,數(shù)據(jù)簽名可以幫助我們解決這個(gè)問(wèn)題。

數(shù)字簽名
我們來(lái)了解一下數(shù)據(jù)簽名的制作過(guò)程:
- CA機(jī)構(gòu)擁有非對(duì)稱(chēng)加密的私鑰和公鑰。
- CA機(jī)構(gòu)對(duì)證書(shū)明文數(shù)據(jù)T進(jìn)行hash。
- 對(duì)hash后的值用私鑰加密,得到數(shù)字簽名S。
明文和數(shù)字簽名共同組成了數(shù)字證書(shū),這樣一份數(shù)字證書(shū)就可以頒發(fā)給網(wǎng)站了,瀏覽器拿到服務(wù)器傳來(lái)的數(shù)字證書(shū)后,通過(guò)一下方式進(jìn)行驗(yàn)證:
- 拿到證書(shū),得到明文T,簽名S。
- 用CA機(jī)構(gòu)的公鑰對(duì)S解密,得到S’。
- 用證書(shū)里指明的hash算法對(duì)明文T進(jìn)行hash得到T’。
顯然通過(guò)以上步驟,T’應(yīng)當(dāng)?shù)扔赟’,若相等則表明證書(shū)可信,反之則代表明文或簽名被篡改。
雖然看起來(lái)非常麻煩,但HTTPS的整個(gè)工作過(guò)程對(duì)于用戶(hù)而言是無(wú)感的,服務(wù)器和客戶(hù)端可以以極短的時(shí)間完成全部操作。
免責(zé)聲明:素材源于網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系刪稿。









