HTTPS 加密原理

熱衷技術(shù)的Java程序員
加密最初源自戰(zhàn)爭(zhēng)用途,雅典間諜的腰帶情報(bào),是世界上最早的密碼情報(bào),具體運(yùn)用方法是,通信雙方首先約定密碼解讀規(guī)則,然后通信—方將腰帶(或羊皮等其他東西)纏繞在約定長度和粗細(xì)的木棍上書寫。收信—方接到后,如不把腰帶纏繞在同樣長度和粗細(xì)的木棍上,就只能看到一些毫無規(guī)則的字母。

加密

加密,是以某種特殊的算法改變?cè)械男畔?shù)據(jù),使得未授權(quán)的用戶即使獲得了已加密的信息,但因不知解密的方法,仍然無法了解信息的內(nèi)容。

加密最初源自戰(zhàn)爭(zhēng)用途,雅典間諜的腰帶情報(bào),是世界上最早的密碼情報(bào),具體運(yùn)用方法是,通信雙方首先約定密碼解讀規(guī)則,然后通信—方將腰帶(或羊皮等其他東西)纏繞在約定長度和粗細(xì)的木棍上書寫。收信—方接到后,如不把腰帶纏繞在同樣長度和粗細(xì)的木棍上,就只能看到一些毫無規(guī)則的字母。

2345截圖20201119114036.png

從加密方式的維度來看,上述兩種加密都屬于對(duì)稱加密。加密技術(shù)起源于軍事通訊領(lǐng)域,在現(xiàn)代被廣泛應(yīng)用于各類通訊技術(shù)中。

加密之所以安全的原因,并不在于加密解密算法的方法,而在于加密的密鑰是絕對(duì)的隱藏。流行的RSA和AES加密算法都是完全公開的,一方得到已加密的數(shù)據(jù),就算知道加密算法,如果沒有加密的密鑰,也不能破解出被加密保護(hù)的信息。

加密的方式分為兩種:對(duì)稱加密和非對(duì)稱加密。

對(duì)稱加密

對(duì)稱加密,即使用相同的密鑰來進(jìn)行加密和解密。對(duì)稱加密的優(yōu)點(diǎn)是加密和解密速度快,適合大量加密的場(chǎng)景。

其缺點(diǎn)也非常明顯,密鑰不易維護(hù),加密方和解密方需要約定并分配密鑰,雙方對(duì)密鑰的保管和傳輸過程中一旦發(fā)生泄漏,安全性就會(huì)被打破。

2345截圖20201119114036.png

常見的對(duì)稱加密算法有以下幾種:

●DES

●3DES

●AES

非對(duì)稱加密

非對(duì)稱加密算法需要兩個(gè)密鑰來進(jìn)行加密和解密,這兩個(gè)密鑰是公開密鑰(public key,簡稱公鑰)和私有密鑰(private key,簡稱私鑰)。

非對(duì)稱加密的流程是,A生成公鑰和私鑰,將公鑰共享給B,私鑰自己保存。B用公鑰加密后將信息傳輸給A,A使用私鑰解密得到原始信息。

很明顯可以看出,非對(duì)稱加密在安全性上要更高,即使公鑰和密文被截取,沒有私鑰也無法獲取原始信息。

非對(duì)稱加密算法的特點(diǎn)是算法強(qiáng)度復(fù)雜,使得加密解密的速度遠(yuǎn)遠(yuǎn)低于對(duì)稱加密算法,因此不適用于數(shù)據(jù)量較大的情況。

使用公鑰加密的文本只能使用私鑰解密,同時(shí),使用私鑰加密的文本也可以使用公鑰解密。

2345截圖20201119114036.png

常見的非對(duì)稱加密算法有以下幾種:

●RSA

●DSA

●ECDSA

HTTPS

在網(wǎng)絡(luò)傳輸協(xié)議方面,越來越多的公司將服務(wù)從HTTP協(xié)議切換到HTTPS協(xié)議,來應(yīng)對(duì)紛繁復(fù)雜的網(wǎng)絡(luò)安全問題。

HTTPS(Hyper Text Transfer Protocol over SecureSocket Layer),是以安全為目標(biāo)的HTTP通道,在HTTP的基礎(chǔ)上通過傳輸加密和身份認(rèn)證保證了傳輸過程的安全性。

HTTP協(xié)議是沒有加密過程的,數(shù)據(jù)以明文方式傳輸,因此其安全性較低,使用抓包軟件可以輕易的獲取到隱私的數(shù)據(jù),篡改數(shù)據(jù)的中間人攻擊也難以防御。

HTTPS在HTTP基礎(chǔ)上增加了TSL或SSL層,使用了對(duì)稱加密和非對(duì)稱加密兩種加密方式來保證數(shù)據(jù)傳輸?shù)陌踩浴?/p>

HTTPS=HTTP+加密+認(rèn)證+數(shù)據(jù)完整性保護(hù)

以下是HTTPS協(xié)議客戶端與服務(wù)端的交互流程:

客戶端與服務(wù)端的通信流程如下:

1、客戶端向服務(wù)端發(fā)送請(qǐng)求

2、服務(wù)端將證書傳輸給客戶端,證書中包含公鑰信息,私鑰在服務(wù)端保存

3、客戶端生成隨機(jī)碼,使用公鑰加密

4、客戶端將加密后的隨機(jī)碼傳輸給服務(wù)端

5、服務(wù)端通過私鑰解密隨機(jī)碼

6、客戶端與服務(wù)端通過隨機(jī)碼作為對(duì)稱加密的密鑰來進(jìn)行加密傳輸

混合加密

從流程中可以看出,加密方式使用對(duì)稱加密和非對(duì)稱加密的混合使用。對(duì)稱加密的痛點(diǎn)是密鑰傳輸有可能被竊聽,導(dǎo)致加密變得不安全,所以用非對(duì)稱加密傳輸對(duì)稱加密的密鑰,后續(xù)通信使用對(duì)稱加密。

數(shù)據(jù)傳輸通信環(huán)節(jié)不使用公鑰加密、私鑰解密,因?yàn)榉菍?duì)稱加密由于算法復(fù)雜效率低。

認(rèn)證

服務(wù)端非對(duì)稱加密所使用的公鑰與私鑰是由保證安全的第三方數(shù)字認(rèn)證機(jī)構(gòu)簽發(fā)的,需要由服務(wù)端向數(shù)字認(rèn)證機(jī)構(gòu)申請(qǐng)。

數(shù)字認(rèn)證機(jī)構(gòu)的公鑰會(huì)事先植入瀏覽器中,服務(wù)端傳輸給客戶端證書后,客戶端使用公鑰驗(yàn)證證書簽名的有效性,以確保服務(wù)端的真實(shí)存在性。

2345截圖20201119114036.png

HTTPS中還可以使用客戶端證書,以確??蛻舳说恼鎸?shí)存在性,但基于成本高的原因,只有在特殊場(chǎng)景才會(huì)使用,比如網(wǎng)上銀行登錄時(shí)需要下載安全控件。

總結(jié)

HTTPS中使用了對(duì)稱加密和非對(duì)稱加密的混合,使得數(shù)據(jù)傳輸變得更安全,但是并非所有場(chǎng)景都適用HTTPS,受加密解密的通信步驟的增加和本身算法增加的機(jī)器負(fù)載影響,HTTPS要比HTTP慢2~100倍,所以針對(duì)非敏感、隱私信息的數(shù)據(jù)傳輸場(chǎng)景使用HTTP才是一個(gè)更好的選擇。

THEEND

最新評(píng)論(評(píng)論僅代表用戶觀點(diǎn))

更多
暫無評(píng)論