1. 區塊鏈的故事 - 9 - RSA 演算法
RSA
迪菲與赫爾曼完美地解決了密鑰分發的難題,從此,交換密鑰就很簡單了,愛麗絲與鮑勃完全可以可以在村頭大喇叭里喊話,就能夠交換出一個密鑰。但加密的方式,依然是對稱加密的。
DH 協議交換密鑰雖然方便,但依然有一些不盡人意的麻煩處,愛麗絲還是要與鮑勃對著嚷嚷半天,二人才能生成密鑰。當愛麗絲想要交換密鑰的時候,若是鮑勃正在睡覺,那愛麗絲的情書,還是送不出去。
迪菲與赫爾曼在他們的論文中,為未來的加密方法指出了方向。 通過單向函數,設計出非對稱加密,才是終極解決方案。 所謂非對稱加密,就是一把鑰匙用來合上鎖,另一把鑰匙用來開鎖,兩把鑰匙不同。鎖死的鑰匙,不能開鎖。開鎖的鑰匙,不能合鎖。
麻省理工的三位科學家,他們是羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman),他們讀了迪菲與赫爾曼的論文,深感興趣,便開始研究。迪菲與赫爾曼未能搞定的演算法,自他們三人之手,誕生了。
2002 年,這三位大師因為 RSA 的發明,獲得了圖靈獎。 但不要以為 RSA 就是他們的全部,這三位是真正的大師,每一位的學術生涯都是碩果累累。讓我們用仰視的目光探索大師們的高度。
李維斯特還發明了 RC2, RC4, RC 5, RC 6 演算法,以及著名的 MD2, MD3, MD4, MD5 演算法。他還寫了一本書,叫 《演算法導論》,程序員們都曾經在這本書上磨損了無數的腦細胞。
薩莫爾發明了 Feige-Fiat-Shamir 認證協議,還發現了微分密碼分析法。
阿德曼則更加傳奇,他開創了 DNA 計算學說,用 DNA 計算機解決了 「旅行推銷員」 問題。 他的學生 Cohen 發明了計算機病毒,所以他算是計算機病毒的爺爺了。他還是愛滋病免疫學大師級專家,在數學、計算機科學、分子生物學、愛滋病研究等每一個方面都作出的卓越貢獻。
1976 年,這三位都在麻省理工的計算機科學實驗室工作,他們構成的小組堪稱完美。李維斯特和薩莫爾兩位是計算機學家,他們倆不斷提出新的思路來,而阿德曼是極其高明的數學家,總能給李維斯特和薩莫爾挑出毛病來。
一年過後,1977 年,李維斯特在一次聚會後,躺在沙發上醒酒,他輾轉反側,無法入睡。在半睡半醒、將吐未吐之間,突然一道閃電在腦中劈下,他找到了方法。一整夜時間,他就寫出了論文來。次晨,他把論文交給阿德曼,阿德曼這次再也找不到錯誤來了。
在論文的名字上,這三位還著實君子謙讓了一番。 李維斯特將其命名為 Adleman-Rivest-Shamir,而偉大的阿德曼則要求將自己的名字去掉,因為這是李維斯特的發明。 最終爭議的結果是,阿德曼名字列在第三,於是這個演算法成了 RSA。
RSA 演算法基於一個十分簡單的數論事實:將兩個大素數相乘十分容易,但想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開,用作加密密鑰。
例如,選擇兩個質數,一個是 17159,另一個是 10247,則兩數乘積為 175828273。 乘積 175828273 就是加密公鑰,而 (17159,10247)則是解密的私鑰。
公鑰 175828273 人人都可獲取,但若要破解密文,則需要將 175828273 分解出 17159 和 10247,這是非常困難的。
1977 年 RSA 公布的時候,數學家、科普作家馬丁加德納在 《科學美國人》 雜志上公布了一個公鑰:
114 381 625 757 888 867 669 235 779 976 146 612 010 218 296 721 242 362 562 842 935 706 935 245 733 897 830 597 123 563 958 705 058 989 075 147 599 290 026 879 543 541
馬丁懸賞讀者對這個公鑰進行破解。漫長的 17 年後,1994 年 4 月 26 日,一個 600 人組成的愛好者小組才宣稱找到了私鑰。私鑰是:
p:3 490 529 510 847 650 949 147 849 619 903 898 133 417 764 638 493 387 843 990 820 577
q:32 769 132 993 266 709 549 961 988 190 834 461 413 177 642 967 992 942 539 798 288 533
這個耗時 17 年的破解,針對的只是 129 位的公鑰,今天 RSA 已經使用 2048 位的公鑰,這幾乎要用上全世界計算機的算力,並耗費上幾十億年才能破解。
RSA 的安全性依賴於大數分解,但其破解難度是否等同於大數分解,則一直未能得到理論上的證明,因為未曾證明過破解 RSA 就一定需要作大數分解。
RSA 依然存在弱點,由於進行的都是大數計算,使得 RSA 最快的情況也比普通的對稱加密慢上多倍,無論是軟體還是硬體實現。速度一直是 RSA 的缺陷。一般來說只用於少量數據加密。
RSA 還有一個弱點,這個在下文中還會提及。
在密碼學上,美國的學者們忙的不亦樂乎,成果一個接一個。但老牌帝國英國在密碼學上,也並不是全無建樹,畢竟那是圖靈的故鄉,是圖靈帶領密碼學者們在布萊切里公園戰勝德國英格瑪加密機的國度。
英國人也發明了 RSA,只是被埋沒了。
60 年代,英國軍方也在為密碼分發問題感到苦惱。1969 年,密碼學家詹姆斯埃利斯正在為軍方工作,他接到了這個密鑰分發的課題。他想到了一個主意,用單向函數實現非對稱加密,但是他找不到這個函數。政府通訊總部的很多天才們,加入進來,一起尋找單向函數。但三年過去了,這些聰明的腦袋,並沒有什麼收獲,大家都有些沮喪,這樣一個單項函數,是否存在?
往往這個時候,就需要初生牛犢來救場了。科克斯就是一頭勇猛的牛犢,他是位年輕的數學家,非常純粹,立志獻身繆斯女神的那種。 雖然年輕,但他有一個巨大優勢,當時他對此單向函數難題一無所知,壓根兒不知道老師們三年來一無所獲。於是懵懵懂懂的闖進了地雷陣。
面對如此凶險的地雷陣,科克斯近乎一躍而過。只用了半個小時,就解決了這個問題,然後他下班回家了,並沒有把這個太當回事,領導交代的一個工作而已,無非端茶倒水掃地解數學題,早點幹完,回家路上還能買到新出爐的麵包。他完全不知道自己創造了歷史。科克斯是如此純粹的數學家,後來他聽聞同事們送上的贊譽,還對此感到有些不好意思。在他眼裡,數學應該如哈代所說,是無用的學問,而他用數學解決了具體的問題,這是令人羞愧的。
可惜的是,科克斯的發明太早了,當時的計算機算力太弱,並不能實現非對稱的加解密。所以,軍方沒有應用非對稱加密演算法。詹姆斯與科克斯把非對稱加密的理論發展到完善,但是他們不能說出去,軍方要求所有的工作內容都必須保密,他們甚至不能申請專利。
軍方雖然對工作成果的保密要求非常嚴格,但對工作成果本身卻不很在意。後來,英國通訊總部發現了美國人的 RSA 演算法,覺得好棒棒哦。他們壓根就忘記了詹姆斯與科克斯的 RSA。通訊總部贊嘆之餘,扒拉了一下自己的知識庫,才發現自己的員工科克斯早已發明了 RSA 類似的演算法。 官僚機構真是人類的好朋友,總能給人們製造各種笑料,雖然其本意是要製造威權的。
科克斯對此並不介懷,他甚至是這樣說的:「埋沒就埋沒吧,我又不想當網紅,要粉絲幹嘛?那些粉絲能吃?」 原話不是這樣的,但表達的意思基本如此。
迪菲在 1982 年專程去英國見詹姆斯,兩人惺惺相惜,真是英雄相見恨晚。可惜詹姆斯依然不能透漏他們對 RSA 的研究,他只告訴了迪菲:「你們做的比我們要好。」 全球各國的科學家們,可以比出誰更好,但全球各國的官僚們,卻很難比出誰更顢頇,他們不分高下。
區塊鏈的故事 - 1
區塊鏈的故事 - 2
區塊鏈的故事 - 3
區塊鏈的故事- 4
區塊鏈的故事 - 5
區塊鏈的故事 - 6
區塊鏈的故事 - 7
區塊鏈的故事 - 8