貓鼠遊戲:加密技術如何對付量子計算機?

譯者: 譚成好發表於2015-09-25

今年8月的時候,美國國家安全域性(NSA)在其網頁上更新了一段不起眼的內容,他們計劃對現在政府和軍方加密資料的方式更新,以期能夠阻擋來自量子計算機quantum computer的攻擊。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這樣的攻擊迫使他們重新審視過去,回到那些可能沒有那麼有效率,但是更加穩固的方案。對於一個方案而言,在效率和安全性這兩條相反的道路上,還是需要研究人員仔細權衡。

相關文章