Diffie-Hellman 密鑰交換
惠特菲爾德·迪菲(Whitfield Diffie)出生于 1944 年,留著披肩長(zhǎng)發(fā),胡須半尺,須發(fā)盡皆雪白如銀亡脑,看上去瀟灑磊落,卻又不拘一格洲尊,乃是風(fēng)清揚(yáng)远豺、令狐沖一流的人物,他自稱(chēng)是 “離經(jīng)叛道者”坞嘀。
他從小喜愛(ài)數(shù)學(xué)躯护,后來(lái)在麻省理工讀了數(shù)學(xué)專(zhuān)業(yè),于學(xué)業(yè)上他并不很用心丽涩,對(duì)學(xué)校留的作業(yè)沒(méi)什么興趣棺滞。他的興趣在于研究密碼學(xué),尤其是密碼分發(fā)問(wèn)題矢渊。使用傳統(tǒng)的對(duì)稱(chēng)加密算法继准,密鑰的安全交付成了加密工作中最薄弱的一環(huán),為了分發(fā)密碼所耗費(fèi)的人力及物力巨大矮男。軍方移必、政府、銀行都維持著龐大的密碼運(yùn)送團(tuán)隊(duì)毡鉴,團(tuán)隊(duì)中的人必須絕對(duì)可信崔泵,薪資自然也就不低,這些人走南闖北四處運(yùn)送密鑰猪瞬。?
就這樣憎瘸,密碼分發(fā)問(wèn)題一直困擾著密碼學(xué)家們,也困擾著密碼的重度用戶(hù) - 各國(guó)的政府和軍方陈瘦。
迪菲思考了很久幌甘,希望能夠想出個(gè)方案來(lái)顛覆這個(gè)行業(yè),解放那些忙碌不堪的密碼分發(fā)員。他熱愛(ài)自由锅风,于是他不上班酥诽,自由自在,號(hào)稱(chēng)專(zhuān)門(mén)研究密鑰分發(fā)問(wèn)題皱埠。
1974 年盆均,迪菲聽(tīng)聞?dòng)腥撕退粯樱瑢?duì)密碼分發(fā)問(wèn)題感興趣漱逸,那個(gè)人叫做馬丁·赫爾曼(Martin Hellman),在斯坦福大學(xué)做教授游沿。 迪菲不虧是北美令狐沖饰抒,他當(dāng)晚就驅(qū)車(chē) 5000 公里去找赫爾曼。馬丁接到迪菲電話诀黍,是不是把他當(dāng)傳銷(xiāo)不好說(shuō)袋坑,總之,大教授勉強(qiáng)答應(yīng)了見(jiàn)面半小時(shí)眯勾。
赫爾曼從面相上看枣宫,儒雅斯文,一派學(xué)者氣象吃环。 但人不可貌相也颤,實(shí)際上他一直是積極的社會(huì)活動(dòng)家,在 “遠(yuǎn)離戰(zhàn)爭(zhēng)”郁轻、“反對(duì)核武器” 這一類(lèi)的社會(huì)活動(dòng)中都有他的身影翅娶。
這次見(jiàn)面的結(jié)果是,當(dāng)晚赫爾曼就把迪菲帶回了家好唯,和家人一起吃晚飯竭沫。
而另一個(gè)成果是,兩人情投意合骑篙,義結(jié)金蘭蜕提,發(fā)誓要一起研究密碼分發(fā)技術(shù)。他們碰到的第一個(gè)難題是靶端,兩人都太窮了谎势。赫爾曼是個(gè)窮教授,而迪菲干脆沒(méi)有固定收入躲查。 兩人畢竟聰明它浅,合計(jì)了一下,一致同意镣煮,對(duì)付貧窮最好的辦法就是考研姐霍。于是赫爾曼運(yùn)用自己僅有的那點(diǎn)權(quán)力,把迪菲招為自己的博士研究生。實(shí)際上镊折,迪菲比赫爾曼還大一歲胯府。
迪菲一向不守陳規(guī),在學(xué)校也不樂(lè)意做作業(yè)恨胚,到最后骂因,那個(gè)博士也沒(méi)畢業(yè)。他擅長(zhǎng)的是提出創(chuàng)新的主意赃泡。早在 1973 年寒波,迪菲就提出了非對(duì)稱(chēng)加密的思想來(lái),可惜無(wú)人能夠?qū)崿F(xiàn)升熊。
迪菲與赫爾曼努力的方向是密碼交換問(wèn)題俄烁。
人類(lèi)在密碼學(xué)上的研究,可以截然劃分為兩個(gè)階段级野。在迪菲和赫爾曼的成果之前页屠,可以稱(chēng)之為原始密碼時(shí)代,所用技術(shù)全是對(duì)稱(chēng)加密蓖柔。所謂對(duì)稱(chēng)加密辰企,就是加密與解密,用同一個(gè)密鑰况鸣。舉例來(lái)說(shuō)牢贸,一個(gè)簡(jiǎn)單的加密方法,是把? A 加密成為 B懒闷, 把 C 加密成為 D十减。(A - B,C - D) 就是這個(gè)加密方法的密鑰愤估,對(duì)密文解密帮辟,也需要這個(gè)密鑰。
如果用生活中鑰匙與鎖做比的話玩焰,那么鑰匙是密碼由驹,鎖是消息。合上鎖昔园,需要鑰匙蔓榄。打開(kāi)鎖,也需要鑰匙默刚,這就是對(duì)稱(chēng)加密甥郑。
再舉一個(gè)影視劇的例子,潛伏里余則成收到廣播中的數(shù)字荤西,根據(jù)數(shù)字和規(guī)則澜搅,從一本書(shū)上尋找對(duì)應(yīng)的文字伍俘。那本書(shū),就是密鑰勉躺。加密方和解密方癌瘾,都需要那本書(shū)。
這種原始的方法饵溅,其中最讓人痛苦的問(wèn)題有二妨退,其一是密碼的分發(fā),如何給余則成送去那本書(shū)蜕企。對(duì)于經(jīng)常需要更改密碼的情況咬荷,送密碼的代價(jià)就非常高。 其二是密碼一旦被截獲轻掩,則一切全完萍丐。
在人們的直覺(jué)中,兩人之間要想使用密碼通信放典,那么必須約定密鑰。兩人必須鬼鬼祟祟的見(jiàn)一面基茵,避開(kāi)人群奋构,偷偷摸摸交換個(gè)密碼、鑰匙什么的拱层。這難道還有什么可懷疑的弥臼?
然而在人們找到方法打破這個(gè)直覺(jué)之前,一個(gè)思想實(shí)驗(yàn)根灯,給了人們巨大的啟示径缅。 思想實(shí)驗(yàn)非常神奇,物理學(xué)家們都愛(ài)用烙肺,比如薛定諤的貓就是最著名的思想實(shí)驗(yàn)纳猪。愛(ài)因斯坦、費(fèi)曼等物理大牛更是用思想實(shí)驗(yàn)斗法桃笙,你講一個(gè)故事氏堤,我講一個(gè)故事。思想實(shí)驗(yàn)不涉及科學(xué)與技術(shù)的細(xì)節(jié)搏明,但故事其中的邏輯卻能對(duì)科學(xué)與技術(shù)問(wèn)題進(jìn)行推演鼠锈,仿佛戰(zhàn)爭(zhēng)之前的沙盤(pán)推演。而且星著,誰(shuí)不愛(ài)聽(tīng)故事呢购笆?
這個(gè)思想實(shí)驗(yàn)是這樣的。
愛(ài)麗絲和鮑勃虚循,是一對(duì)情侶同欠,住在臨近的兩個(gè)村子里样傍,雙方父母不同意兩人的戀情,兩人都被鎖在家中行您,只能通過(guò)信件訴衷情铭乾。 愛(ài)麗絲要送情書(shū)給鮑勃,又不愿意讓郵遞員看到信件內(nèi)容娃循。在人們直覺(jué)的思維中炕檩,愛(ài)麗絲和鮑勃可以用一個(gè)加鎖的盒子來(lái)寄信,兩人都有這個(gè)鎖的鑰匙捌斧,就可以了笛质。 但是,愛(ài)麗絲需要先把鑰匙送給鮑勃捞蚂。有送鑰匙的功夫妇押,別說(shuō)情書(shū)可以親自送過(guò)去了,兩人私奔都可以了姓迅。
有沒(méi)有這種可能敲霍,愛(ài)麗絲在見(jiàn)不到鮑勃的情況下,也能安全把信件送到鮑勃手里丁存,且郵遞員偷窺不到信件內(nèi)容肩杈?
愛(ài)麗絲很聰明,她想到了方法解寝。她把信件放到盒子里扩然,然后用一把鎖鎖上,鑰匙只有一把聋伦,在她手里夫偶。郵遞員把盒子送給了鮑勃,郵遞員因?yàn)闆](méi)有鑰匙觉增,打不開(kāi)盒子兵拢,所以偷窺不了。鮑勃收到盒子后逾礁,也無(wú)法打開(kāi)盒子卵佛。但鮑勃拿出另一把鎖,在盒子上再鎖一道敞斋,鑰匙也只有一把截汪,在他手里。 鮑勃讓郵遞員將盒子送回愛(ài)麗絲手中植捎。愛(ài)麗絲收到盒子后衙解,用自己的鑰匙,把自己的那把鎖打開(kāi)焰枢,讓郵遞員把盒子再交回鮑勃手中蚓峦。鮑勃收到盒子后舌剂,盒子上只有一把鮑勃自己的那把鎖,鮑勃摸出鑰匙暑椰,顫抖地打開(kāi)盒子霍转,拿出情書(shū)信件閱讀,沉浸在幸福中一汽。當(dāng)然避消,他還是要防備下郵遞員,他來(lái)回跑了三趟召夹,又沒(méi)看到信岩喷,怒氣之下起了殺心,把我們一場(chǎng)科技的思想實(shí)驗(yàn)监憎,反轉(zhuǎn)成兇殺故事也沒(méi)準(zhǔn)纱意。
就這樣,看似有違我們直覺(jué)的難題鲸阔,就解決了偷霉。迪菲和赫爾曼,他們這些科學(xué)家認(rèn)為褐筛,既然思想實(shí)驗(yàn)的邏輯可以走通腾它,那么只要找到合適的數(shù)學(xué)方法,就一定能實(shí)現(xiàn)死讹。迪菲與赫爾曼把目光放到了單向函數(shù)上,所謂單向函數(shù)曲梗,就是算法是不可逆的函數(shù)赞警。做個(gè)比喻,我們很容易就可知道虏两,黃色油漆與藍(lán)色油漆混到一起愧旦,能夠得到什么顏色,我們只要把兩種油漆倒在一起攪拌一下即可定罢。但若是給我們一桶綠色油漆笤虫,讓我們分辨出是哪兩種油漆混合而成,以及兩種油漆的混合比例祖凫,那就困難無(wú)比了琼蚯。
尋找這個(gè)數(shù)學(xué)方法,用去了迪菲和赫爾曼兩年時(shí)間惠况,最終的攻克遭庶,歸功于赫爾曼。他天才的發(fā)現(xiàn)稠屠,取模運(yùn)算峦睡,也就是做除法找余數(shù)的運(yùn)算翎苫,具有單向函數(shù)的特性。用這個(gè)取模函數(shù)榨了,愛(ài)麗絲與鮑勃煎谍,可以公開(kāi)的交換數(shù)字,最終生成共同的密鑰龙屉,只有他倆知道呐粘。郵遞員眼睜睜看著他倆一桶桶的送油漆,就是分離不出油漆的配方叔扼,也就得不到密鑰事哭。
其實(shí)還有第三人,拉爾夫·默克爾(Ralph Merkle)瓜富,他也參與了這個(gè)工作鳍咱。默克爾在此之前便已在密鑰分發(fā)技術(shù)上,成就非凡与柑。 他有過(guò)一個(gè)理論叫 Merkle 難題谤辜,那是對(duì)稱(chēng)加密的原始時(shí)代所能達(dá)到的最高成就,我們還是用思想實(shí)驗(yàn)的方法說(shuō)明這個(gè)理論价捧。
愛(ài)麗絲要送情書(shū)給鮑勃丑念,他們用的對(duì)稱(chēng)加密,所以必須約定密鑰结蟋。 愛(ài)麗絲找到 1 萬(wàn)把鎖脯倚,每把鎖有2 把鑰匙,在鎖和鑰匙上一一標(biāo)上號(hào)碼嵌屎。每把鎖的鑰匙推正,愛(ài)麗絲都留下一把。把 1 萬(wàn)把鎖和另外的 1萬(wàn)把鑰匙宝惰,一一對(duì)應(yīng)放進(jìn) 1 萬(wàn)個(gè)密封的盒子植榕,盒子上并不鎖死,但是要打開(kāi)盒子尼夺,需要擰盒子的螺絲尊残,每個(gè)盒子打開(kāi)都需要 10 分鐘。愛(ài)麗絲委托郵遞員淤堵,送這 1 萬(wàn)個(gè)盒子給鮑勃寝衫,倒霉的郵遞員怨氣沖天,但還是送去了拐邪。 鮑勃看到 1 萬(wàn)個(gè)盒子竞端,并沒(méi)有驚慌,他沉著地選擇了一個(gè)盒子庙睡,隨意選擇的一個(gè)事富,然后用 10 分鐘擰下盒子上的螺絲技俐,拿到了那把鎖,假設(shè)那鎖上標(biāo)號(hào)是 #6800统台。鮑勃用 # 6800 的鎖與鑰匙雕擂,鎖上一個(gè)盒子,盒子里裝著信件贱勃,委托郵遞員送給愛(ài)麗絲井赌。 愛(ài)麗絲收到盒子后,根據(jù)鎖上標(biāo)號(hào) #6800贵扰,找到 #6800 鑰匙仇穗,打開(kāi)盒子,閱讀情書(shū)戚绕,沉浸在幸福中纹坐。
若是郵遞員要打開(kāi)鮑勃的盒子,他就得一個(gè)個(gè)打開(kāi) 1 萬(wàn)個(gè)盒子(此處物理的盒子與數(shù)字的盒子舞丛,邏輯上難以徹底對(duì)應(yīng)耘子。對(duì)于物理盒子,在郵遞員從愛(ài)麗絲拿到 1 萬(wàn)個(gè)盒子時(shí)球切,他便需打開(kāi)所有 1 萬(wàn)個(gè)盒子谷誓,每個(gè)盒子 10 分鐘,并復(fù)制所有鑰匙吨凑。拿到鮑勃的信件盒子后捍歪,由于并不知道 6800 對(duì)應(yīng)哪一把鑰匙,他只能一把把去試鸵钝。而在數(shù)字世界中糙臼,此時(shí)郵遞員依然擁有從愛(ài)麗絲處拿到的 1 萬(wàn)個(gè)盒子的原始副本),每個(gè)盒子 10 分鐘蒋伦,然后一把把鑰匙試那個(gè) # 6800 的鎖。如果運(yùn)氣好焚鹊,他大約需要打開(kāi) 5000 個(gè)盒子痕届,也就是 5 萬(wàn)分鐘。
Merkle 難題末患,幾乎算是在對(duì)稱(chēng)加密技術(shù)下研叫,分發(fā)密鑰問(wèn)題的最佳方法了,但對(duì)稱(chēng)加密的潛力也就到此為止璧针,再無(wú)它途嚷炉。
1976 年迪菲與赫爾曼聯(lián)名的論文 《密碼學(xué)的新方向》,是一個(gè)新紀(jì)元的開(kāi)始探橱,從此這個(gè)世界走進(jìn)了非對(duì)稱(chēng)加密時(shí)代申屹。這篇論文幾乎奠定了互聯(lián)網(wǎng)傳輸安全的基礎(chǔ)绘证。實(shí)際上,這篇論文中哗讥,默克爾也有貢獻(xiàn)嚷那,只是那時(shí)他還年輕,只是赫爾曼的博士生杆煞。2015 年圖靈獎(jiǎng)?lì)C給了迪菲與赫爾曼魏宽,默克爾也因此無(wú)緣圖靈獎(jiǎng)這至高榮譽(yù)。
但默克爾也許并不在意决乎,他自己的發(fā)明 Merkle Tree队询,是區(qū)塊鏈上最基礎(chǔ)的技術(shù)之一。每一次區(qū)塊鏈上的數(shù)據(jù)校驗(yàn)构诚,都在致敬他蚌斩。