編者注:你可能認為量子計算機還屬于科幻范疇,但近幾十年它就有可能變成現實,而其超強的計算機能力也會對現有的加密技術構成威脅。那有沒有加密方法能抵御量子計算機攻擊呢?連線的這篇文章就對此做了科普,并指出這不僅是技術問題,更需要安全與效率的平衡。雷鋒網對全文編譯如下:
今年8月的時候,美國國家安全局(NSA)在其網頁上更新了一段不起眼的內容,他們計劃對現在政府和軍方加密數據的方式更新,以期能夠阻擋來自量子計算機的攻擊。NSA的發言人表示,量子計算機能夠帶來更新更強的計算能力,顯然現有的安全措施和加密方式無法承受來自這種設備的攻擊。如果要嚴密保護國家系統的安全的話,那么他們需要在這一方向取得顯著發展。
量子計算機對于過去的人而言聽起來就像是遙遠的神話,但現在人們普遍認為在5到30年內它就將成為現實。通過不斷探索量子物理的法則,不管是NSA的絕密檔案、銀行記錄還是郵箱密碼,這種機器能夠解密現在世界上絕大多數“機密”的數據。在意識到這可能的威脅后,密碼學家們正在量子計算機大范圍使用以前,抓緊開發能夠防止量子破譯的方案。
現在看來,最可行的方案是基于格的數學方案(mathematics of lattices)。這種方案有效性在于,要在一個擁有幾百空間維度的格中找出隱藏的信息非常難,除非你知道那條秘徑。
但是去年十月,英國政府通訊總部(GCHQ)的密碼專家發表論文指出,即便是最有效的格方案也面臨著安全問題。這些發現意味著,在以效率為目標發展了幾十年后,這種高效暴露出了安全風險。專家們通過簡化他們方案中的格,導致這些方案更容易受到攻擊。
基于上面所述的問題,一些密碼專家從去年開始都在做實驗,看哪些基于格的方案會被量子計算機打破,而哪些至少對于現在而言又是安全的。對于編寫密碼和破解密碼的專家而言,這就是一場貓鼠游戲。當解碼員沉默的時候,編碼員為了效率會放松方案的安全性,有時候,其結果就是導致安全越過了那條紅線。
公開的秘密
在談論這一話題前,我們需要先對現在的加密方式有一個了解。事實上,當你每次訪問以“HTTPS”開頭的鏈接時,你都會發送和接收加密的信息,而這一安全的網絡交易方式使用了基于加密技術的公共密鑰。這一創造性的發明始于上個世紀70年代,而在此前,密碼技術基本就是政府和間諜之間的比賽。通常而言,參與信息傳遞的人,例如一個人和他的對接人之間如果想要偷偷交流的話,要事先約定一個暗號或者“鑰匙”。而公共密鑰的技術則可以讓任何人給其他人發送一組加密信息,不管是否有人在偷聽,只有指定的接受人可以解密,即使參與的人一開始并沒有串通好。
在公鑰加密技術中,人們通過一些數學技巧來保證數據的安全性,一些數學問題解答起來容易,但是要用逆向工程解碼則很難。例如,要計算機計算兩個質數的乘積很容易,但是如果給計算機一個數,要它解出組成這個數的質因子,則可能要花費很多時間。在基于質數分解的方案中,這個質數就是某人并不與他人共享的“私鑰”。而質數的乘積則是“公鑰”,公開分發。當某人用公鑰來加密信息時,只有這個擁有私鑰的人才能夠解密信息。
有兩個公鑰加密方案自上世紀70年代以來廣為應用:一個是基于質因子的RSA方案,另一個是基于離散算法的Diffie-Hellman方案。雖然這兩種方案并不是說一定就無法破解,但是沒人能夠找到高效計算出結果的方法。如果要用計算機將特定長度的公鑰進行計算出來,可能要花費數年的時間。因此,這兩種方案成了保護互聯網信息的力盾。不過它們帶來的這份安全,似乎已快來到了終結之時。
Shor的算法
計算機難以短時計算出結果這一神話在1994年被打破,當時AT&T的研究人員Peter Shor提出了一種理論,他認為未來的量子計算機會具有破解算法的能力。
在普通計算機中,信息以比特的形式存儲。比特存在兩種狀態中的一種,即0或者1,而計算機的計算能力與比特數量相稱。但是在量子計算機中,數據是用量子位方式存儲的,數據存儲格式既可以是0也可以是1。由于大量的量子位,使得其中可以存在大量可能的組合形式和可能的個體狀態。因此隨著量子位數量的上升,量子計算機的計算能力會以指數級的方式增長。
基于此,量子計算機比普通計算機會具有更強的運算能力。然而要開發出其潛力,還必須同時找到一個合適的算法,能夠充分利用這種同時存在的狀態,即得到正確的解答。80年代量子計算機被提出來以后,超過10多年間都沒有什么有用的算法出現,這個領域似乎前途暗淡。
變化發生于1994年,Shor提出了一個量子計算機算法,能夠高效破解了質因子和離散算法,也就是說打破了RSA加密方法和Diffie-Hellman密鑰交換理論。于是一瞬間,人們對量子計算機的興趣一下子燃燒了起來。隨著Shor的算法揭示出了量子計算機高級的運算能力后,世界范圍內的研究人員爭相進行研究,試圖找出破譯的方式。而與之相對應的是,密碼編譯專家們也在競相賽跑,提出量子計算機無法攻破的方案。最后他們發現,格似乎是一個不錯的選擇。
迷失在格里
其實同RSA加密方案類似,理論上來說,計算質數的乘積很容易,但是求解質因子很難,基于格的安全加密方案也取決于,讓計算機迷失在一個500維的格中有多難。不同的是,在格方案中,私鑰與格點相關,而公鑰則與空間中的特定位置有聯系。
除了一開始的驚艷,這種加密方案卻發展遲緩。80年代的時候,這種方案的公鑰都太長,交換數據需要海量的字節空間。為了提高效率,密碼學家不得不簡化潛在的格。在一個普通的格中,格點是由計算一組向量的線性組合得出。給這些向量分配一個模式,使得算出來的結果簡單化,則相關的密鑰也更短。但這帶來的問題是,簡化方案使得人們可以從公鑰中推論出私鑰,從而破壞這個方案。因而,格對于密碼學來說,又成了災難的代名詞。
隨著時間的前進,一些密碼學專家仍然在不斷完善格。1995年的時候,一些專家提出了一種基于“環狀”的格,可以產生在任意方向旋轉的向量。這個名為NTRU的方案極其高效,甚至比老的RSA和Diffie-Hellman方案更高效。盡管沒有證據表明這種方案就是一定安全的,但20年過去了還沒有人能破解它,證明某種程度上還是具有安全性的。
格的前景自1997年以后變得明朗起來,IBM的研究人員提出第一種較好的加密方案,這種加密方案名為Learning With Errors(LWE),意即伴隨誤差學習,由于要找到最近的通用格要很長時間,因而可以抵抗來自量子計算機的攻擊。基于理想格下,他們開發出了一個更行之有效的方案。
什么是LWE方案
在2005年,Oded Regev基于LWE問題提出了一種加密方案,他證實這個方案解決起來很難,因而比較安全。這個方案的基本思路是這樣的:
首先選擇任何一個奇數,并且不要告訴任何一個其他人,這就是你的私鑰。然后把它乘上任何一個數,再加上一個小的偶數。重復多次,得到一系列的數,這些數就是你的私鑰,然后再把它們告訴別人。
現在,如果有誰想給你發信息,如0或1,首先這個人隨機地在你的公鑰里選擇一半的數,把它們加起來。然后如果要發送0,他們就把數據加起來然后發給你。如果要發送1的話,就把數據加1并發給你。之后你想要解碼這段數據的話,只要用你的私鑰求出這個和數的商。如果余數是偶數的話,這個信息就是0。如果是奇數,則為1。
再一次,人們似乎又要在安全和效率間進行權衡。魚和熊掌不可兼得,LWE方案雖然更加通用并且安全性更高,但它的效率較低。研究人員在這個方向上,還在不斷探索,之后提出了一些其他方案。
貓鼠游戲
不僅科研人員在開發基于格的加密方案,GCHQ的人員也在做同樣的事。他們使用數論開發除了名為Soliloquy的方案,把公鑰的大小從一個包含大量數據的矩陣降為僅僅是一個質數。把它量化到格里而言,則是產生一個非常短的矩陣。然而,這種方案的便利也正是其致命之處。
在他們發布的論文中可以看出,他們雖然發明出了這種方案,但是在2013年后又棄用了,原因是他們發現量子攻擊可以把這個加密方案攻破。雖然這篇論文只是對攻擊草草描繪了一下,但是給人們留下了無限的疑問:其他的格方案是不是也會受到影響?似乎在追求效率的同時,安全的紅線隨時也被越過。問題是,這條安全的警戒線到底該放在哪里?
GCHQ的團隊并沒有找出多少細節,而僅僅是覺得有很強的證據證明,這種攻擊會被開發出來,因而就推論Soliloquy不適用于現實。于是密碼學家們花了差不多一年來了解Soliloquy攻擊的范圍,此后研究人員發現,這種攻擊竟然只需要一臺普通的電腦就可以實現。
除了Soliloquy以外,他們的發現還表明,其他基于理想格的方案,構造單獨短向量的方法也可以被攻破,而基于一般格的方案,如Ring-LWE和NTRU則不受影響。用研究人員的話來說,似乎想要把這些技術轉化成有效的方案還有一些技術上的難題,需要更深的研究。
就安全和效率的對稱性而言,密碼學家過于傾向效率這一邊。在他們給政府和銀行等機構尋找最好的抵御量子攻擊的時候,Soliloquy這樣的攻擊迫使他們重新審視過去,回到那些可能沒有那么有效率,但是更加穩固的方案。對于一個方案而言,在效率和安全性這兩條相反的道路上,還是需要研究人員仔細權衡。