TLS過程(DH 非對(duì)稱加密)

TLS 的目的便是解決數(shù)據(jù)的
一、Record 記錄協(xié)議 (對(duì)稱加解密)

二、HandShake 握手,揮手
驗(yàn)證通訊雙方身份
交換加解密的安全套件
協(xié)商加密解密參數(shù)


非對(duì)稱加密

當(dāng)一個(gè)TLS會(huì)話建立好之后,會(huì)使用對(duì)稱加密的密鑰去通信,那么如何實(shí)現(xiàn)事先將對(duì)稱加密的密鑰傳遞給TLS會(huì)話的另一方呢。利用的就是非對(duì)稱加密。分對(duì)稱加密比對(duì)稱加密慢數(shù)千倍,所以只是使用對(duì)稱加密傳遞之后加密使用的對(duì)稱加密的密鑰。之后的加密安全性靠的是對(duì)稱加密來解決。

非對(duì)稱加密是有一把公鑰和一把私鑰,公鑰可以公開,而私鑰不能。
用公鑰加密成密文,再將密文用私鑰解密就能實(shí)現(xiàn)加解密過程。
而用私鑰加密,公鑰解密就是簽名認(rèn)證過程。
常見的非對(duì)稱加密方式分為兩大類

  • RSA(大數(shù)的因數(shù)分解)
  • ECC (橢圓曲線)

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

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


DH 握手
DH 密鑰交換協(xié)議

DH 密鑰交換協(xié)議,Diffile-Hellman key Exchange,簡(jiǎn)稱 DH 或 DHE 。它可以讓雙方在完全沒有對(duì)方任何預(yù)先信息的條件下通過一個(gè)不安全的信道創(chuàng)建一個(gè)密鑰。

1、客戶端瀏覽器隨機(jī)生成一個(gè)值Ra,計(jì)算Pa(x,y) = Ra*Q(x,y), Q(x,y)為全世界公認(rèn)的某個(gè)橢圓曲線算法的基點(diǎn)。將Pa(x,y)發(fā)送至服務(wù)器。

假設(shè) p = 97 g = 3

2、服務(wù)器隨機(jī)生成一個(gè)值Rb,計(jì)算 Pb(x,y) = Rb * Q(x,y)。將Pb(x,y)發(fā)送到客戶端瀏覽器。

a = 6  (Alice 的私鑰)
b =21 (Bob的私鑰)

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

A = (g**a)%p  (Alice計(jì)算得到的公鑰 傳遞給Bob)
B = (g**b)%p  (Bob計(jì)算得到公鑰 傳遞給Alice)

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

(B ** a) % p = 47
(A ** b) % p = 47

其安全性是和RSA是一樣的,其安全性依賴于大數(shù)因數(shù)分解,所以提高安全性只能靠增加位數(shù)來保證,這樣就涉及大量的乘法運(yùn)算。性能比較低下。

ECC 橢圓曲線

為了解決上述DH的問題,引入了ECC橢圓曲線,進(jìn)而進(jìn)化為 ECDHE 算法,稱為 Elliptic Curve Diffie-Hellman Key Exchange。ECC和RSA 在288字節(jié)的長(zhǎng)度下,破解RSA需要煮沸一勺水的能量,而破解相同位數(shù)的ECC 就需要煮沸整個(gè)地球水的能量。RSA 為了提高安全性,只能靠增大密鑰位數(shù)。尷尬的是現(xiàn)在的超算越來越厲害。量子計(jì)算下秀爾算法可8h內(nèi)輕松破解2048位的RSA。RSA只能再增大密鑰位數(shù),但是再增大位數(shù),移動(dòng)端設(shè)備就慘了,你增大的密鑰是運(yùn)營商要收取流量費(fèi)用的,而且加解密太費(fèi)電。
ECC 的數(shù)學(xué)原理是橢圓曲線和離散對(duì)數(shù)。橢圓曲線很復(fù)雜。為了提升性能,還需要選擇一個(gè)橢圓曲線,但是它不是真正的橢圓形,下面有圖可以看到,只是運(yùn)算上用到了橢圓算法。
但是ECC也有很多問題,1、ECC 可能有后門,如NSA(美國國家安全局發(fā)布的一套算法),這個(gè)算法就是被懷疑被植入后門了。2、而且ECC很多的算法都被注冊(cè)專利了,一不小心就要吃官司,其專利大部分都被黑莓注冊(cè)。

ECC 橢圓曲線的定義

  • 橢圓曲線表達(dá)式:


  • 如下四種不同的橢圓曲線。始終是關(guān)于x軸對(duì)稱的(y平方)

    ECC 曲線的特性 : +運(yùn)算
    A + B = E
    E 為 A ,B 連續(xù)與曲線相交在X軸上的鏡像
    當(dāng) A 和 B 重合后 就可以得到 2A = E
ecdsa.gif

ECC 的算法原理過于復(fù)雜,這里表示我也看不懂。點(diǎn)到為止吧。(以后看懂了再來補(bǔ)充)


這里的抓包結(jié)果就是用的EC DH E 算法來進(jìn)行密鑰交換的。這里選擇的曲線是 secp256r1, 在這個(gè)曲線中,基點(diǎn)和參數(shù)已經(jīng)給出了,PubKey 也給出了。
在 TLS1.3 中,一般使用的 X25519 曲線 (蒙哥馬利曲線)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 先放一張以太坊的架構(gòu)圖: 在學(xué)習(xí)的過程中主要是采用單個(gè)模塊了學(xué)習(xí)了解的,包括P2P,密碼學(xué),網(wǎng)絡(luò),協(xié)議等。直接開...
    麻臉大叔閱讀 11,530評(píng)論 1 10
  • 原文鏈接:http://blog.jobbole.com/86660/ 1 前言 百度已經(jīng)于近日上線了全站 HTT...
    xlhzj閱讀 1,178評(píng)論 0 2
  • 一、準(zhǔn)備知識(shí) 在開始介紹前,需要首先了解一下消息摘要、數(shù)字簽名、數(shù)字證書的知識(shí) 1、消息摘要 - Message ...
    浪夠_閱讀 2,836評(píng)論 1 2
  • 下文主要從加密算法的特征、常用加密算法和加密工具等方面,梳理和比較對(duì)稱加密、單向加密和公鑰加密的概念及其之間的聯(lián)系...
    georgeguo閱讀 4,149評(píng)論 0 5
  • CONNITcat閱讀 112評(píng)論 0 0

友情鏈接更多精彩內(nèi)容