8.1 概述
本章嘗試解決以下問題,Alice和Bob,他們之前從未見過,現(xiàn)在需要商議出一個(gè)私密的信息。他們溝通的信道是不安全的,他們?cè)谛诺乐袀鬏數(shù)娜魏涡畔⒍际怯锌赡鼙唤俪值摹?/p>
這里強(qiáng)調(diào)下,Alice和Bob在不安全的信道上溝通,最終要共享一個(gè)密鑰。盡管中間可能有人看到Alice和Bob發(fā)送給對(duì)方的全部信息,但是他不能知道共享密鑰的任何信息。
這個(gè)協(xié)議被稱為Diffie-Hellman(DH),Diffie-Hellman協(xié)議的實(shí)際實(shí)現(xiàn)依賴于復(fù)雜的數(shù)學(xué)問題,從正確的方向計(jì)算非常容易,但是從逆的方向計(jì)算非常難。
8.2 Diffie-Hellman簡(jiǎn)介
為了介紹Diffie-Hellman,我們使用混合顏色來(lái)做為一個(gè)例子??梢园凑找韵乱?guī)則來(lái)混合顏色:
- 可以很容易將兩個(gè)顏色進(jìn)行混合,生成第三個(gè)顏色
- 將兩個(gè)或更多的顏色按不同的順序混合,會(huì)得到相同的顏色
- 混合顏色是單向的,給定混合后的顏色,即使知道它是混合生成的顏色,甚至知道生成該顏色的部分顏色,也不能猜測(cè)好粗剩下的顏色。
在以上規(guī)則的基礎(chǔ)上,可以制造出只有Alice和Bob知道混合方法的秘密顏色。之后我們會(huì)介紹密鑰交換的具體實(shí)現(xiàn)方法。
為了強(qiáng)調(diào)即使有監(jiān)聽者該協(xié)議依然安全,我們把整個(gè)過程的中間都假定有監(jiān)聽者Eve,Eve監(jiān)聽到網(wǎng)絡(luò)中的所有消息,記錄她所知道的一些,和她可以計(jì)算的一切,然后最后我們可以看到Eve依然沒有辦法知道Alice和Bob共享的秘密是什么。
- Alice和Bob必須要先擁有一個(gè)基礎(chǔ)顏色。這個(gè)顏色他們可以在網(wǎng)絡(luò)上直接溝通,盡管Eve看到這條消息,知道了基礎(chǔ)顏色是什么也沒有關(guān)系。通常情況下基礎(chǔ)顏色就是協(xié)議固定的一部分。Alice和Bob可以不用為此溝通。這一步之后,Aclie,Bob和Eve都有了相同的信息,這個(gè)基礎(chǔ)的顏色。

- Alice和Bob各自挑選一個(gè)隨機(jī)的顏色,然后將其和基礎(chǔ)顏色混合。

- 現(xiàn)在Alice和Bob知道他們各自的私密顏色,混合后的顏色,和基礎(chǔ)顏色。任何人包括Eve在內(nèi)都知道基礎(chǔ)顏色。

- Alice和Bob將自己的混合后的顏色在網(wǎng)絡(luò)中發(fā)送給對(duì)方。Eve也可以看到這些混合后的顏色,但是她不知道Alice和Bob各自的私密顏色是什么。盡管知道基礎(chǔ)顏色,她也沒有辦法還原出之前的顏色。(這里只是為了講明白這個(gè)過程的假設(shè),顏色混合復(fù)原本身是很簡(jiǎn)單的。這里假設(shè)復(fù)原非常難。)

- 最后Alice和Bob知道基礎(chǔ)顏色,和他們各自的私密顏色,各自的混合顏色,和對(duì)方的混合顏色。Eve知道基礎(chǔ)顏色和全部的混合顏色。

- Alice和Bob講自己接受到的混合顏色和他們自己的私密顏色混合,由于混合的順序是不影響結(jié)果的,此時(shí)他們就擁有了一個(gè)僅兩者知道的混合顏色。

- Eve并不能進(jìn)行相應(yīng)的計(jì)算,這個(gè)計(jì)算在沒有Alice或者Bob的私密顏色的情況下無(wú)法進(jìn)行。她也可能將兩個(gè)混合顏色直接混合,然而由于基礎(chǔ)顏色出現(xiàn)了兩次,得到的是與Alice和Bob不一樣的一個(gè)混合顏色。
8.3 基于離散對(duì)數(shù)的Diffie-Hellman
本節(jié)介紹Diffie-Hellman基于離散對(duì)數(shù)的一種實(shí)現(xiàn)。它需要一定的數(shù)學(xué)背景,需要一點(diǎn)現(xiàn)代數(shù)學(xué)的知識(shí)來(lái)理解。
基于離散對(duì)數(shù)的Diffie-Hellman是基于以下想法的,計(jì)算下面公式的y是簡(jiǎn)單的,然而給定y,g和p計(jì)算x是很難的。這被稱為離散對(duì)數(shù)問題。
這個(gè)與8.2節(jié)的顏色是類似的,大素?cái)?shù)p和基g 相當(dāng)于基礎(chǔ)顏色,混合顏色相當(dāng)于上面的公式,其中x是輸入顏色,y是結(jié)果的混合顏色。
當(dāng)Alice和Bob選擇自己的隨機(jī)數(shù)rA和rB,然后將其應(yīng)用后
通過網(wǎng)絡(luò)發(fā)送這兩個(gè)數(shù)字,Eve當(dāng)然也可以看到這兩個(gè)數(shù)字,但是由于離散對(duì)數(shù)的問題,已知m計(jì)算r是非常難得。
Alice和Bob擁有彼此混合后的數(shù)字,和他們自己的私密數(shù)字,Bob可以這么計(jì)算
Alice可以這么計(jì)算
即Alice和Bob計(jì)算所得的s完全相同。而Eve沒有rA或者rB,并不能計(jì)算出s。
8.4 基于橢圓曲線的Diffie-Hellman(ECDH)
基于橢圓曲線的Diffie-Hellman的一個(gè)好處是其所需的密鑰長(zhǎng)度要比基于離散對(duì)數(shù)的Diffie-Hellman要小的多。這是因?yàn)槠平怆x散對(duì)數(shù)的算法要比破解橢圓曲線快的多。
對(duì)于目前的算法來(lái)講解決橢圓曲線問題比解決離散對(duì)數(shù)要難的多。要達(dá)到相同的密碼要求,橢圓曲線需要的密鑰大小要小的多。
| Security Level in bits | Discrete log key bits | Elliptic curve key bits |
|---|---|---|
| 56 | 512 | 112 |
| 80 | 1024 | 160 |
| 112 | 2048 | 224 |
| 128 | 3072 | 256 |
| 256 | 15360 | 512 |
8.5 遺留問題
Diffie-Hellman算法使得可以在不安全的互聯(lián)網(wǎng)環(huán)境,在可能有監(jiān)聽者的情況下,協(xié)商出一個(gè)共用的密鑰。攻擊者可能是無(wú)法簡(jiǎn)單通過劫持獲取到密鑰,但是攻擊者仍有可能破壞系統(tǒng)。通常該類型攻擊者被稱為Mallory,在Alice和Bob之間,她可以執(zhí)行兩次DH算法,一次和Alice,一次和Bob。在Alice面前假裝自己是Bob,在Bob面前假裝自己是Alice。

這里實(shí)際上有兩個(gè)共享的密鑰,一個(gè)是Alice和Mallory之間,一個(gè)是Mallory和Bob之間。攻擊者在中間接受到信息后,用密鑰獲取到明文消息,然后使用另一邊的密鑰加密再發(fā)送給另一邊。
糟糕的是,即便兩個(gè)參與者之一發(fā)現(xiàn)了這一點(diǎn),他們也沒有辦法讓任何人詳細(xì)自己。Mallory執(zhí)行了正確的Diffie-Hellman算法,她擁有正確的密鑰。Bob沒有和Alice共享密鑰,他無(wú)法證明他是實(shí)際的參與者。
類似的攻擊被稱為MITM攻擊,因?yàn)楣粽撸∕allory)是在兩者之間。在互聯(lián)網(wǎng)架構(gòu)下大家都有可能發(fā)送消息,這一類型的攻擊非常的常見,一個(gè)密碼系統(tǒng)需要想辦法識(shí)別出這種攻擊。
雖然Diffie-Hellman可以讓兩個(gè)節(jié)點(diǎn)之間成功的共享一個(gè)私密信息,在真實(shí)的密碼系統(tǒng)中還是有一些其他的阻礙。需要有方法認(rèn)證從Alice到Bob以及反過來(lái),還需要有辦法保證消息的完整性,來(lái)確保接收者可以驗(yàn)證收到的消息是否真實(shí)來(lái)源于發(fā)送者。