Diffie-Hellman密鑰交換算法

以前寫(xiě)的一篇文章,copy過(guò)來(lái).

前言

根據(jù)百度百科的解釋: Diffie-Hellman密鑰交換算法是一種確保共享KEY安全穿越不安全網(wǎng)絡(luò)的方法, 它是OAKLEY的一個(gè)組成部分. Whitefield與Martin Hellman在1976年提出了一個(gè)奇妙的密鑰交換協(xié)議, 稱為Diffie-Hellman密鑰交換協(xié)議/算法(Diffie-Hellman Key Exchange/Agreement Algorithm). 這個(gè)機(jī)制的巧妙在于需要安全通信的雙方可以用這個(gè)方法確定對(duì)稱密鑰. 然后可以用這個(gè)密鑰進(jìn)行加密和解密. 但是注意, 這個(gè)密鑰交換協(xié)議/算法只能用于密鑰的交換, 而不能進(jìn)行消息的加密和解密, 雙方確定要用的密鑰后, 要使用其他對(duì)稱密鑰操作加密算法實(shí)際加密和解密消息.
該算法的基本原理是: 在有限域上計(jì)算離散對(duì)數(shù)非常困難.

單向函數(shù)

單向函數(shù)(one-way function)的概念是公開(kāi)密鑰密碼的中心. 單向函數(shù)的基本思想就是單向函數(shù)計(jì)算起來(lái)相對(duì)容易, 但求逆卻非常困難. 也就是說(shuō), 已知x, 我們很容易計(jì)算f(x), 但已知f(x), 卻難于計(jì)算出x.
在Diffie-Hellman密鑰交換算法中運(yùn)用的單向函數(shù)就是模運(yùn)算:

f = x mod p

例如, 設(shè)p = 7, 已知x = 9, 則f(x) = 2, 非常容易計(jì)算. 但是若已知f(x) = 2, 要逆向計(jì)算出x, 幾乎是不可能的, 因?yàn)閤的可能性非常多.

Diffie-Hellman密鑰交換步驟

假設(shè)Bob和Jim需要交換密鑰, 而中間有一個(gè)Eve在竊聽(tīng), 其基本步驟如下(下文中'^'表示多少次方):

1.Bob和Jim公開(kāi)一個(gè)生成器a和素?cái)?shù)模n, 假設(shè)分別為3和17(就是公鑰), 這個(gè)信息是Bob, Jim和Eve(竊聽(tīng)者)都掌握的. 
2.Bob隨機(jī)選擇一個(gè)數(shù), 記為s1, 假設(shè)為15(就是私鑰), 計(jì)算單項(xiàng)函數(shù)f(s1) = 3 ^ s1 mod 17的值, 記為ret1(此處為6), 然后發(fā)送給Jim. 在這個(gè)過(guò)程中, Jim得到單項(xiàng)函數(shù)的值(6), 竊聽(tīng)者Eve也能截獲.
3.Jim也選擇一個(gè)數(shù), 記為s2, 假設(shè)為13(就是私鑰), 計(jì)算單項(xiàng)函數(shù)f(s2) = 3 ^ s2 mod 17的值, 記為ret2(此處為12), 然后發(fā)送給Bob. 在這個(gè)過(guò)程中, Bob得到單項(xiàng)函數(shù)的值(12), 竊聽(tīng)者Eve也能截獲.
4.定義函數(shù) g1(x) = ret2 ^ x mod p, Bob計(jì)算g1(s1)的值作為密鑰, 此例中為10(g1(15) = 12 ^ 15 mod 17 = 10).
5. 定義函數(shù) g2(x) = ret1 ^ x mod p, Jim計(jì)算g2(s2)的值作為密鑰, 此例中為10(g2(13) = 6 ^ 13 mod 17 = 10).
                               Eve   a.掌握公鑰(3, 17)
                                |    b.獲得單項(xiàng)函數(shù)的值(6)
                                |    c.獲得單項(xiàng)函數(shù)的值(12)
                                |    d.由于缺少信息(私鑰)無(wú)法計(jì)算得到密鑰
                                |
                                | 
                                | 
 Bob     -------------------------------------------->      Jim
 a.公開(kāi)公鑰(3, 17)                                       a.掌握公鑰(3, 17)
 b.隨機(jī)選擇一個(gè)數(shù), 計(jì)算單項(xiàng)函數(shù)(f(x) = 3 ^ x)的值并發(fā)送       b.獲得單項(xiàng)函數(shù)的值(6)
 c.獲得單項(xiàng)函數(shù)的值(12)                                    c.隨機(jī)選擇一個(gè)數(shù), 計(jì)算單項(xiàng)函數(shù)(f(x) = 3 ^ x)的值并發(fā)送
 d.計(jì)算得到密鑰                                           d.計(jì)算得到密鑰

在整個(gè)過(guò)程中, Bob和Jim得出的密鑰是一致的, 因此雙方可以用共享的密鑰來(lái)加密. 而竊聽(tīng)者Eve由于沒(méi)有私鑰信息, 無(wú)法計(jì)算出密鑰. 其中較為關(guān)鍵的一點(diǎn)是:

第四步Bob計(jì)算的密鑰和第五步Jim計(jì)算的密鑰一定是一致的. 在此例中:

g1(x) = ( 3^12 mod 17 ) ^ 15 mod 17 = ( 3^12 ) ^ 15 mod 17
g2(x) = ( 3^15 mod 17 ) ^ 12 mod 17 = ( 3^12 ) ^ 15 mod 17

下面證明一般情況.

(a ^ b mod p) ^ c mod p = (a ^ b) ^ c mod p                           (1)

其中, a和p是公開(kāi)的公鑰, b是Bob生成的隨機(jī)數(shù)(私鑰), c是Jim生成的隨機(jī)數(shù)(私鑰).

首先證明:

(x mod p) ^ y mod p = x ^ y mod p
證明:
(x mod p) ^ y mod p = ((x mod p) * (x mod p) ^ (y - 1)) mod p
                    = (x * (x mod p) ^ (y-1)) mod p
                    = (x * x * (x mod p) ^ (y - 2)) mod p
                    = x ^ y mod p                                   (2)

利用式(2)可以很容易的證明式(1).

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末及刻,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖圆丹,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異裂允,居然都是意外死亡廓旬,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)碘耳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)显设,“玉大人,你說(shuō)我怎么就攤上這事辛辨〔段妫” “怎么了瑟枫?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)指攒。 經(jīng)常有香客問(wèn)我慷妙,道長(zhǎng),這世上最難降的妖魔是什么允悦? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任膝擂,我火速辦了婚禮,結(jié)果婚禮上澡屡,老公的妹妹穿的比我還像新娘猿挚。我一直安慰自己,他們只是感情好驶鹉,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布绩蜻。 她就那樣靜靜地躺著,像睡著了一般室埋。 火紅的嫁衣襯著肌膚如雪办绝。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,007評(píng)論 1 284
  • 那天姚淆,我揣著相機(jī)與錄音孕蝉,去河邊找鬼。 笑死腌逢,一個(gè)胖子當(dāng)著我的面吹牛降淮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播搏讶,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼佳鳖,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了媒惕?” 一聲冷哼從身側(cè)響起系吩,我...
    開(kāi)封第一講書(shū)人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎妒蔚,沒(méi)想到半個(gè)月后穿挨,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡肴盏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年科盛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片菜皂。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡土涝,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出幌墓,到底是詐尸還是另有隱情但壮,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布常侣,位于F島的核電站蜡饵,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏胳施。R本人自食惡果不足惜溯祸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望舞肆。 院中可真熱鬧焦辅,春花似錦、人聲如沸椿胯。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)哩盲。三九已至前方,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間廉油,已是汗流浹背惠险。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留抒线,地道東北人班巩。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像嘶炭,于是被迫代替她去往敵國(guó)和親抱慌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 公鑰密碼系統(tǒng)及RSA公鑰算法 本文簡(jiǎn)單介紹了公開(kāi)密鑰密碼系統(tǒng)的思想和特點(diǎn)旱物,并具體介紹了RSA算法的理論基礎(chǔ)遥缕,工作原...
    火狼o閱讀 4,272評(píng)論 2 15
  • 背景介紹 最近在看《密碼學(xué)與網(wǎng)絡(luò)安全》相關(guān)的書(shū)籍,這篇文章主要詳細(xì)介紹一下著名的網(wǎng)絡(luò)安全協(xié)議SSL宵呛。 在開(kāi)始SSl...
    四月不見(jiàn)閱讀 849評(píng)論 3 1
  • 原文: 高性能網(wǎng)絡(luò)瀏覽器-第四章傳輸層安全性(Transport Layer Security,TLS) 翻譯: ...
    夢(mèng)很想家閱讀 4,567評(píng)論 2 6
  • 1单匣、各大視頻平臺(tái)VIP免費(fèi)播放方法。 鏈接:http://peng3.com/vip/ 2宝穗、教你獨(dú)特的玩轉(zhuǎn)你的照片...
    simonXX閱讀 293評(píng)論 0 1
  • When I often tell myself, wronged tears to belly pharynx,...
    那夜的銷魂閱讀 218評(píng)論 0 0