數(shù)學(xué)之美-Diffie–Hellman密鑰交換

作為一名coder,平時(shí)工作中真正用到數(shù)學(xué)公式的機(jī)會(huì)其實(shí)并不多,而且因?yàn)楣ぷ鲀?nèi)容以CRUD為主,本質(zhì)上是在做數(shù)據(jù)的提取與組裝,很少有用到數(shù)學(xué)公式的機(jī)會(huì),更遑論感受數(shù)學(xué)之美了(說起來當(dāng)年考研數(shù)學(xué)分?jǐn)?shù)高出英語不到10分,要知道數(shù)學(xué)總分150,英語總分100,不提了,說起來都是淚),直到我研究HTTPS協(xié)議時(shí),看到Diffie–Hellman密鑰交換協(xié)議,真是驚為天人,第一次感覺到了數(shù)學(xué)之美,持續(xù)數(shù)年之久,于今日成文。

什么是Diffie–Hellman密鑰交換?

它可以讓雙方在完全沒有對(duì)方任何預(yù)先信息的條件下通過不安全信道創(chuàng)建起一個(gè)密鑰。這個(gè)密鑰可以在后續(xù)的通訊中作為對(duì)稱密鑰來加密通訊內(nèi)容。

盜圖一張


image

神奇之處

數(shù)學(xué)公式看著是容易讓人頭疼的,不過簡(jiǎn)單來講就是

  1. Alice與Bob兩人要協(xié)定一個(gè)只有兩人知道的共享密鑰
  2. Alice公開g、pA三個(gè)數(shù)并提供給Bob
  3. Bob公開B并提供給Alice
  4. 由此Alice與Bob通過計(jì)算可以得到相同的值K,作為共享密鑰,就算知道這個(gè)數(shù)學(xué)公式,但是通過公開的g、p、AB卻難以計(jì)算出a

中間人攻擊

一切看起來似乎很美好,不過前面有提到不安全信道,這種方式難以防止中間人攻擊

image.png

Alice的網(wǎng)絡(luò)被Jack監(jiān)聽,Alice跟Bob的交互都要先通過Jack,于是Jack就可以將g、p、A偽造成g'、p'、A'(為什么要偽造呢,因?yàn)镴ack目前還不知道Bob私有的數(shù)據(jù)b),Jack偽裝成Alice與Bob通信,同理,得到Bob的數(shù)據(jù)B,然后偽造新的數(shù)據(jù)B'返回給Alice;所以此時(shí)其實(shí)共享密鑰K其實(shí)有兩個(gè)值,Alice與Jack共享的K1以及Jack與Bob共享的K2,此時(shí)Jack作為中間人,就可以竊取Alice與Bob的通訊記錄了:

  1. Alice發(fā)送使用K1加密后的數(shù)據(jù)M
  2. Jack得到M, 使用K1解密,然后使用K2加密成M'
  3. Jack將M'發(fā)送給Bob
  4. Bob給Alice發(fā)送數(shù)據(jù)同上

雖然通信信道被竊聽,但是雙方是無感知的,這就是中間人攻擊。

參考:

?著作權(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)容

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