8.1 概述
本章嘗試解決以下問(wèn)題昆汹,Alice和Bob序矩,他們之前從未見(jiàn)過(guò),現(xiàn)在需要商議出一個(gè)私密的信息启绰。他們溝通的信道是不安全的昂儒,他們?cè)谛诺乐袀鬏數(shù)娜魏涡畔⒍际怯锌赡鼙唤俪值摹?/p>
這里強(qiáng)調(diào)下,Alice和Bob在不安全的信道上溝通委可,最終要共享一個(gè)密鑰渊跋。盡管中間可能有人看到Alice和Bob發(fā)送給對(duì)方的全部信息,但是他不能知道共享密鑰的任何信息着倾。
這個(gè)協(xié)議被稱(chēng)為Diffie-Hellman(DH)拾酝,Diffie-Hellman協(xié)議的實(shí)際實(shí)現(xiàn)依賴(lài)于復(fù)雜的數(shù)學(xué)問(wèn)題,從正確的方向計(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)聽(tīng)者該協(xié)議依然安全罐氨,我們把整個(gè)過(guò)程的中間都假定有監(jiān)聽(tīng)者Eve臀规,Eve監(jiān)聽(tīng)到網(wǎng)絡(luò)中的所有消息,記錄她所知道的一些栅隐,和她可以計(jì)算的一切塔嬉,然后最后我們可以看到Eve依然沒(méi)有辦法知道Alice和Bob共享的秘密是什么。
- Alice和Bob必須要先擁有一個(gè)基礎(chǔ)顏色租悄。這個(gè)顏色他們可以在網(wǎng)絡(luò)上直接溝通谨究,盡管Eve看到這條消息,知道了基礎(chǔ)顏色是什么也沒(méi)有關(guān)系泣棋。通常情況下基礎(chǔ)顏色就是協(xié)議固定的一部分胶哲。Alice和Bob可以不用為此溝通。這一步之后潭辈,Aclie鸯屿,Bob和Eve都有了相同的信息澈吨,這個(gè)基礎(chǔ)的顏色。
- Alice和Bob各自挑選一個(gè)隨機(jī)的顏色寄摆,然后將其和基礎(chǔ)顏色混合谅辣。
- 現(xiàn)在A(yíng)lice和Bob知道他們各自的私密顏色,混合后的顏色冰肴,和基礎(chǔ)顏色屈藐。任何人包括Eve在內(nèi)都知道基礎(chǔ)顏色。
- Alice和Bob將自己的混合后的顏色在網(wǎng)絡(luò)中發(fā)送給對(duì)方熙尉。Eve也可以看到這些混合后的顏色联逻,但是她不知道Alice和Bob各自的私密顏色是什么。盡管知道基礎(chǔ)顏色检痰,她也沒(méi)有辦法還原出之前的顏色包归。(這里只是為了講明白這個(gè)過(guò)程的假設(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ì)算在沒(méi)有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是很難的。這被稱(chēng)為離散對(duì)數(shù)問(wèn)題茫多。
這個(gè)與8.2節(jié)的顏色是類(lèi)似的祈匙,大素?cái)?shù)p和基g 相當(dāng)于基礎(chǔ)顏色忽刽,混合顏色相當(dāng)于上面的公式天揖,其中x是輸入顏色夺欲,y是結(jié)果的混合顏色。
當(dāng)Alice和Bob選擇自己的隨機(jī)數(shù)rA和rB今膊,然后將其應(yīng)用后
通過(guò)網(wǎng)絡(luò)發(fā)送這兩個(gè)數(shù)字些阅,Eve當(dāng)然也可以看到這兩個(gè)數(shù)字,但是由于離散對(duì)數(shù)的問(wèn)題斑唬,已知m計(jì)算r是非常難得市埋。
Alice和Bob擁有彼此混合后的數(shù)字,和他們自己的私密數(shù)字恕刘,Bob可以這么計(jì)算
Alice可以這么計(jì)算
即Alice和Bob計(jì)算所得的s完全相同缤谎。而Eve沒(méi)有rA或者rB,并不能計(jì)算出s褐着。
8.4 基于橢圓曲線(xiàn)的Diffie-Hellman(ECDH)
基于橢圓曲線(xiàn)的Diffie-Hellman的一個(gè)好處是其所需的密鑰長(zhǎng)度要比基于離散對(duì)數(shù)的Diffie-Hellman要小的多坷澡。這是因?yàn)槠平怆x散對(duì)數(shù)的算法要比破解橢圓曲線(xiàn)快的多。
對(duì)于目前的算法來(lái)講解決橢圓曲線(xiàn)問(wèn)題比解決離散對(duì)數(shù)要難的多含蓉。要達(dá)到相同的密碼要求频敛,橢圓曲線(xiàn)需要的密鑰大小要小的多。
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 遺留問(wèn)題
Diffie-Hellman算法使得可以在不安全的互聯(lián)網(wǎng)環(huán)境馅扣,在可能有監(jiān)聽(tīng)者的情況下斟赚,協(xié)商出一個(gè)共用的密鑰。攻擊者可能是無(wú)法簡(jiǎn)單通過(guò)劫持獲取到密鑰差油,但是攻擊者仍有可能破壞系統(tǒng)拗军。通常該類(lèi)型攻擊者被稱(chēng)為Mallory,在A(yíng)lice和Bob之間厌殉,她可以執(zhí)行兩次DH算法食绿,一次和Alice,一次和Bob公罕。在A(yíng)lice面前假裝自己是Bob器紧,在Bob面前假裝自己是Alice。
這里實(shí)際上有兩個(gè)共享的密鑰楼眷,一個(gè)是Alice和Mallory之間铲汪,一個(gè)是Mallory和Bob之間。攻擊者在中間接受到信息后罐柳,用密鑰獲取到明文消息掌腰,然后使用另一邊的密鑰加密再發(fā)送給另一邊。
糟糕的是张吉,即便兩個(gè)參與者之一發(fā)現(xiàn)了這一點(diǎn)齿梁,他們也沒(méi)有辦法讓任何人詳細(xì)自己。Mallory執(zhí)行了正確的Diffie-Hellman算法,她擁有正確的密鑰勺择。Bob沒(méi)有和Alice共享密鑰创南,他無(wú)法證明他是實(shí)際的參與者。
類(lèi)似的攻擊被稱(chēng)為MITM攻擊省核,因?yàn)楣粽撸∕allory)是在兩者之間稿辙。在互聯(lián)網(wǎng)架構(gòu)下大家都有可能發(fā)送消息,這一類(lèi)型的攻擊非常的常見(jiàn)气忠,一個(gè)密碼系統(tǒng)需要想辦法識(shí)別出這種攻擊邻储。
雖然Diffie-Hellman可以讓兩個(gè)節(jié)點(diǎn)之間成功的共享一個(gè)私密信息,在真實(shí)的密碼系統(tǒng)中還是有一些其他的阻礙旧噪。需要有方法認(rèn)證從Alice到Bob以及反過(guò)來(lái)吨娜,還需要有辦法保證消息的完整性,來(lái)確保接收者可以驗(yàn)證收到的消息是否真實(shí)來(lái)源于發(fā)送者淘钟。