當前位置:編程學習大全網 - 源碼下載 - TLS過程(DH 非對稱加密)

TLS過程(DH 非對稱加密)

TLS 的目的便是解決數據的

壹、Record 記錄協議 (對稱加解密)

二、HandShake 握手,揮手

驗證通訊雙方身份

交換加解密的安全套件

協商加密解密參數

當壹個TLS會話建立好之後,會使用對稱加密的密鑰去通信,那麽如何實現事先將對稱加密的密鑰傳遞給TLS會話的另壹方呢。利用的就是非對稱加密。分對稱加密比對稱加密慢數千倍,所以只是使用對稱加密傳遞之後加密使用的對稱加密的密鑰。之後的加密安全性靠的是對稱加密來解決。

非對稱加密是有壹把公鑰和壹把私鑰,公鑰可以公開,而私鑰不能。

用公鑰加密成密文,再將密文用私鑰解密就能實現加解密過程。

而用私鑰加密,公鑰解密就是簽名認證過程。

常見的非對稱加密方式分為兩大類

RSA 沒有向前安全性,也就是需要每次的對稱加密密鑰的傳遞都是基於 公鑰加密,服務端私鑰解密。如果服務端的私鑰丟失了,那幾年前的通信數據都有可能被解密。所以這是極度不安全的,私鑰的地位太重了,如果每次的加解密都是臨時生成的密碼來解決安全性,才不會對私鑰的安全性有如此強的依賴。在2013年的棱鏡門事件中,某個CA機構迫於美國政府壓力向其提交了CA的私鑰,這就是十分危險的。如果向前不安全,那麽之前利用該CA私鑰都會全部遭殃。所以這裏說的是更安全的 DH類非對稱加密。

下圖就是DH密鑰交換的TLS握手過程

DH 密鑰交換協議,Diffile-Hellman key Exchange,簡稱 DH 或 DHE 。它可以讓雙方在完全沒有對方任何預先信息的條件下通過壹個不安全的信道創建壹個密鑰。

1、客戶端瀏覽器隨機生成壹個值Ra,計算Pa(x,y) = Ra*Q(x,y), Q(x,y)為全世界公認的某個橢圓曲線算法的基點。將Pa(x,y)發送至服務器。

2、服務器隨機生成壹個值Rb,計算 Pb(x,y) = Rb * Q(x,y)。將Pb(x,y)發送到客戶端瀏覽器。

3、客戶端計算Sa(x,y) = Ra * Pb(x,y),服務器計算Sb(x,y)=Rb*Pa(x,y)

4、算法保證了Sa=Sb=S, 提取其中的S的x向量作為密鑰。

為了解決上述DH的問題,引入了ECC橢圓曲線,進而進化為 ECDHE 算法,稱為 Elliptic Curve Diffie-Hellman Key Exchange。ECC和RSA 在288字節的長度下,破解RSA需要煮沸壹勺水的能量,而破解相同位數的ECC 就需要煮沸整個地球水的能量。RSA 為了提高安全性,只能靠增大密鑰位數。尷尬的是現在的超算越來越厲害。量子計算下秀爾算法可8h內輕松破解2048位的RSA。RSA只能再增大密鑰位數,但是再增大位數,移動端設備就慘了,妳增大的密鑰是運營商要收取流量費用的,而且加解密太費電。

ECC 的數學原理是橢圓曲線和離散對數。橢圓曲線很復雜。為了提升性能,還需要選擇壹個橢圓曲線,但是它不是真正的橢圓形,下面有圖可以看到,只是運算上用到了橢圓算法。

但是ECC也有很多問題,1、ECC 可能有後門,如NSA(美國國家安全局發布的壹套算法),這個算法就是被懷疑被植入後門了。2、而且ECC很多的算法都被註冊專利了,壹不小心就要吃官司,其專利大部分都被黑莓註冊。

ECC 橢圓曲線的定義

ECC 的算法原理過於復雜,這裏表示我也看不懂。點到為止吧。(以後看懂了再來補充)

這裏的抓包結果就是用的EC DH E 算法來進行密鑰交換的。這裏選擇的曲線是 secp256r1, 在這個曲線中,基點和參數已經給出了,PubKey 也給出了。

在 TLS1.3 中,壹般使用的 X25519 曲線 (蒙哥馬利曲線)

  • 上一篇:永碩E盤如何設置首頁鏈接?
  • 下一篇:求畢業設計及論文“基於Java的學生信息管理系統的設計與實現”
  • copyright 2024編程學習大全網