古詩詞大全網 - 藝術簽名 - HTTPS--握手,證書及秘鑰協商

HTTPS--握手,證書及秘鑰協商

壹、學習思路

二、HTTPS 協議層次

SSL和TLS為數據安全通信提供支持。

三、HTTPS設計思路

1、服務器生成公鑰對A,把公鑰和其他信息info發送給CA機構,申請證書;

2、CA機構,有壹套自己的公鑰對S,CA機構將info生成數字摘要,並使用S私鑰對摘要進行加密,CA機構在操作系統系統有有壹套證書,保存的是S公鑰;

3、CA機構將info和加密後的數字摘要生成證書發送給服務器;

4、服務器進行

瀏覽器在訪問https網站是,先檢查此證書是否已經被吊銷,如果證書已經被吊銷,則會顯示警告信息: “此組織的證書已被吊銷。安全證書問題可能顯示試圖欺騙您或截獲您向服務器發送的數據。建議關閉此網頁,並且不要繼續瀏覽該網站。 ”

5.2、信任鏈

CA組織結構是壹個樹結構,壹個root CA下面有多個mid CA,而mid CA又可以包含多個mid CA。

root CA和mid CA都可以頒發證書給用戶,頒發的分別是root證書和中間證書,最終用戶用來認證公鑰的證書被稱為end-user證書。

如果end-user證書是mid CA頒發的,那麽握手階段,需要把中間證書也壹並發給客戶端。

證書鏈驗證過程:

六、秘鑰協商過程

在TLS握手階段確定了雙方使用的密碼學套件。

(秘鑰協商、證書驗證、數據加密是三個獨立的過程)

舉例:

TLS_ DHE_RSA _WITH_ AES_256_CBC_SHA

DHE_RSA :表示握手過程中使用的非對稱加密算法(秘鑰交換用的是DHE, 證書用的RSA),如果WITH只有壹個,那麽表示交換信息和證書用的是同壹個算法

(可選的主要的密鑰交換算法包括:RSA, DH, ECDH, ECDHE。可選的主要的證書算法包括:RSA, DSA, ECDSA。兩者可以獨立選擇,並不沖突)

AES_256_CBC_SHA :表示加密信道的對稱加密算法和hash算法

?

七、秘鑰交換算法

雙方在握手過程中,通過秘鑰交換算法,確定後續通信的秘鑰

常用的秘鑰交換算法:RSA、DH類秘鑰交換算法

7.1、RSA秘鑰交換過程:

A->B

B:把公鑰放在證書中

A:使用隨機數算法,生成壹個秘鑰key,用公鑰加密,發送給B。

RSA面臨的問題:壹旦私鑰外泄(私鑰參與了協商過程),那麽key就能解密之前監聽的所有的密文(向前不安全),安全性取決於私鑰是否保存完好。

7.2、更安全的DH類秘鑰交換算法

DH類秘鑰算法有:DH, DHE, ECDH, ECDHE

DH(靜態DH算法,秘鑰交換始終選擇相同的私鑰,因此,每次的***享私鑰都相同)

DHE(臨時DH算法,每個連接生成壹個臨時的DH秘鑰,因此同壹秘鑰永遠不會被使用兩次。向前保密)

7.3、DHE秘鑰交換算法(基於離散對數難題)簡單說明:

A->B

A:生成壹個隨機數X(作為自己的私鑰),a= g^x mod p (g的x次方對p取模),p 是個大素數,g是生成數,將a發送給B

B:生成壹個隨機數Y(作為自己的私鑰),b= g^y mod p,將b發送給A。

A: 計算 key1 = b^x mod p

B:計算 key2 = a^y mod p

根據數學邏輯,key1=key2,所以秘鑰交換成功

DHE安全性體現在:傳輸的只是a、b、p、g,中間沒有傳輸私鑰x和y,在已知這四個數很難得出x和y(依賴於離散),保證了安全。

DH秘鑰計算舉例:

假設 g =10, p = 7,x = 3, a = 6,y = 11 , b = 5

key1 = ((g^x)mod p)^y mod p = ((10^3)mod 7)^11 mod 7 =6

key2 = ((g^y)mod p)^x mod p = ((10^11)mod 7)^3 mod 7 =6

7.4、基於ECDHE的秘鑰交換算法(基於橢圓離散對數難題)

ECDHE的運算是把DHE中模冪運算替換成了點乘運算,速度更快,可逆更難

A->B

A:生成壹個隨機數Ra,計算Pa(x,y) = Ra * Q(x, y),Q(x, y)為全世界公認的某個橢圓曲線算法的基點。將Pa(x, y)發送至服務器。

B:生成隨機值Rb,計算Pb(x,y)= Rb * Q(x, y)。將Pb(x, y)發送至客戶端。

A:計算Sa(x,y) = Ra * Pb(x, y)

B:計算Sb(x,y) = Rb * Pa(x, y)

算法保證了Sa =Sb = S,提取其中的S的x向量作為密鑰(預主密鑰)