幾乎無解的最強加密方法,終於被證實真的存在

圖片來源:Kiel Mutschelknaus for Quanta Magazine

構建無法破解的密碼,是衆多密碼學科學家的目標。一種被稱爲不可區分混淆的加密方式因爲太過完美,多年來被認爲無法實現。不過最近,三名研究者首次證明不可區分混淆是可行的,這或許是通往完美密碼的重要一步。

>>>>

2018年,加州大學洛杉磯分校的研究生Ayush Jain前往日本,就他和同事正在開發的強大加密算法進行交流。當他講述團隊正在嘗試實現不可區分混淆(indistinguishability obfuscation,簡稱iO)時,一位觀衆困惑地舉起了手。

“可我一直以爲iO不存在?”他說。

當時,這樣的懷疑是普遍存在的。不可區分混淆如果可以被構建,不僅能隱藏數據集,還能隱藏程序本身,從而構建一種可以實現幾乎所有其他加密協議的加密算法。但對很多計算機科學家來說,強大到如此地步讓iO看起來難以實現。

計算機科學家從2013年開始提出iO的候選版本。但是他們很快被潑了一盆冷水,其他研究者發現了破解它安全性的方法。

現在,Jain與華盛頓大學的林惠嘉(Huijia Lin,音譯),以及Jain在加州大學洛杉磯分校的導師阿米特·沙海(Amit Sahai)一起證明了這種方法的可行性。在8月18日在網上公開的論文裏,這三名研究者首次展示瞭如何僅用“標準的”安全假設來構建不可區分混淆。

從左至右依次爲Jain、沙海和林惠嘉

所有的加密協議都基於某些假設,比如著名的RSA算法,基於人們普遍認爲的觀點——標準計算機不能快速對大數進行質因數分解。加密協議的安全性和前提假設是綁定的,而iO的前提假設建立在未經檢驗並且不牢固的基礎上。相比之下,新的加密協議建立在經過廣泛檢驗的假設基礎之上。

雖然協議還遠未能實用,但從理論上講,通過它可以立即構建一系列以前遙不可及的加密方式。例如,它支持創建可否認加密(deniable encryption),這種加密方式可以讓你向攻擊者發送和真實郵件完全不同的消息;以及函數加密(functional encryption),這種加密可以讓你向用戶提供不同級別的訪問權限,從而用數據進行計算。

以色列理工學院的尤瓦爾·伊沙伊(Yuval Ishai)說:“現在不會有人懷疑不可區分混淆的存在了,這似乎是個不錯的結局。”

皇冠上的寶石

幾十年來,計算機科學家一直都想知道是否存在安全,包羅萬象的方法來混淆計算機程序,讓人們使用的同時無法破解。

要想知道不可區分混淆是什麼,我們不妨先來看一看混淆是什麼。

例如,對於程序員來說,最寶貴的自然是代碼,一旦源碼被別人看到了,那麼基本上花的心血和知識產權都被人一覽無餘。爲了保護代碼,可以在導出程序之前採取一些手段來混淆程序,現在一般有兩種程序混淆方法,即代碼混淆(Code Obfuscation)和代碼編譯(Compilation)。

代碼混淆是爲了防止程序代碼本身給外人提供太多信息,同時使程序的運行效率更高。在導出程序時,會將所有標註性的符號(symbols)摘除掉。比較簡單的方法是直接全文替代關鍵詞,例如將全文的ui_controller替代爲a0123456,這樣程序的符號就無法暴露程序運轉內容了。代碼編譯更簡單,直接輸出編譯後的代碼,將人們可以看懂的源代碼轉換成電腦看得懂的機器碼。這個過程,就相當於把上面提到的符號全部抹除了,他人看到我們發佈的可執行文件中的機器碼時,自然看不懂其中發生了什麼。

但對人的混淆並不是嚴格意義上的混淆,這樣的混淆在密碼學的定義上是非常脆弱的。在電腦程序的分析下,“混淆”後的程序會變得一覽無餘,一下就能看出程序在幹什麼。

真正意義上的混淆被稱作虛擬黑盒(Virtual Black Box Obfuscation,VBB)。將一個程序C嵌入一個黑盒中,我們可以在黑盒的一端輸入x,另一頭會輸出C(x)。因爲整個程序都藏在黑盒中,我們完全無法得知任何C的構造信息。唯一可以做的,就是提供輸入x,觀察另一頭的輸出C(x)。

我們稱這樣的黑盒爲VBB混淆器O,對於經過O混淆的程序C,我們稱其爲O(C)。O(C)的輸出C(x)並不會暴露任何關於C的任何信息。

如果實現虛擬黑盒,用戶可以使用程序卻無法理解程序本身,那麼就能讓開發的程序永遠不被破解,或是用很簡單地實現公鑰加密。密碼學中幾乎所有比較高級的構造都可以非常簡單地用虛擬黑盒實現。

但虛擬黑盒的概念提出不久後,人們很快就被潑了一盆冷水。2001年,七位大牛聯手對混淆這一概念做了系統性的研究,並且發表了一篇文章:On the (Im)possibility of Obfuscating Programs。在文章中,他們提出了一種特殊構造的程序,並證明其無法被混淆。而這等於是在說:通用的VBB混淆是絕對不可能的。

不過,同樣是在這篇論文中,一種混淆的新型定義被提出來了——如果一對程序C1和C2具有相同的功能性,能否通過一種新的混淆算法,使第三方無法區分兩個程序的混淆結果呢?對於這樣的混淆,我們稱之爲不可區分混淆(iO)。

雖然VBB不可能實現,但是通過iO,我們仍然可以非常完美地混淆一個程序。

假如我們有一個程序P,我們可以用五花八門的辦法和技巧來混淆程序,得到一個最強混淆功能卻相同的P*。同時,如果我們擁有iO,那麼完全不需要很多費勁的混淆操作,可以直接得到相同的結果,因爲我們無法區分混淆後的iO(P)和iO(P*)。僅僅是給P套了一層iO,得到的結果和最強混淆過後P*的iO是一樣的。

圖片來源:知乎用戶@Steven Yue

這樣一來,如果我們想充分混淆一個程序P,使其構造不被別人發現,只需要輸出iO(P)就行了。

有了強大的不可區分混淆,我們就能完美加密已有的程序,使其永遠不會被破解。同時,由於iO密碼學完備(Crypto-Complete)的特性,我們可以輕易借其實現一系列強大的密碼學構造。

更少即是更多

2013年,沙海和五位合著者提出了一個iO協議,將程序拆成幾部分,類似拼圖,然後他們使用多線性配對來找出這些拼圖。單個碎片看上去毫無意義,但如果將碎片正確地組合到一起,程序就能正常工作。

多線性配對本質上是用多項式計算的密碼學方法——由不同變量和數字之積的加和組成的數學表達式,如3xy+2yz²。Jain表示,這些配對有點類似於一個連接着多項式計算器的密碼保險櫃。用戶輸入數字,看向最後一位,看保險櫃中隱藏的數值能否讓整個多項式歸零。

爲了保證計劃的安全,用戶不能獲知整個過程中任何參數。但是在所有可能的多線性配對候選中,打開保險櫃的過程,都透露了計算過程中應該隱藏的信息。

由於多線性配對機制全都有安全性問題,林惠嘉開始探索能否通過約束多線性配對的層數來實現iO。(這樣更容易實現安全性)四年前,她想出瞭如何用30層多線性配對構建iO。接下來幾年裏,她、沙海和其他研究者逐漸想出瞭如何只用3層多線性配對來實現iO。

表面上看,這是一個巨大的進步。但有一個問題——從安全的角度來看,3層多項式配對和其他任意層一樣不穩固。

研究人員們只知道2層及以下的多線性配對是安全的。林惠嘉與Jain和沙海聯手,試圖找出如何用2層多線性配對應設構建iO。但是,“我們被困住了很久很久。“林惠嘉這樣說。

最終,他們與加州大學聖巴巴拉分校的普拉漢漢·安納思(Prabhanjan Ananth),區塊鏈項目Concordium的克里斯蒂安·馬特(Christian Matt)一起,想出了一個折中方案:既然iO需要三層,但計算機科學家爲了安全需要二層,中間是否存在2.5層呢

研究人員設想了一個系統,其中保險櫃上有窗,用戶可以看到部分密碼的值。這讓整個機制不需要隱藏太多信息。爲了平衡多線性匹配的能力和二層的安全性,這個機制允許計算高於二階的多項式,但有一個限制——多項式被隱藏的變量必須不能超過二階。林惠嘉說:“我們試圖不去隱藏那麼多。”

圖片來源:quanta magazine

但是從不太強的多項式配對到iO,團隊還缺少最後一塊拼圖——一種新型的僞隨性數生成器,它能將一串隨機的數據轉換成擴展成更長,更隨機的一串。而這正是Jain,林惠嘉和沙海在新論文中想出來的。

結果是,iO協議最終避免了多項式配對的安全性漏洞。“他們的結果看起來幾乎是完美的。”康奈爾大學的拉斐爾·帕斯(Rafael Pass)說。

該方案的安全性基於四個數學假設,這些假設已經被廣泛的應用於其他加密方式中。即使是被研究最少的假設——“Learning Parity with Noise“假設——也和20世紀50年代以來一直被研究的問題有關。

很可能只有一種東西能打破新的方案——量子計算機,如果我們能造出真正的量子計算機的話。四個假設中的一個容易受到量子攻擊,但過去的幾個月裏,帕斯和其他研究者分別獨立地在論文中得到同一個結果,這一結果提供了一條不同的潛在路徑,讓iO在量子攻擊下也能確保安全。研究人員表示,相較於Jain,林惠嘉和沙海的版本,這些新版本的iO基於不太成熟的安全假設。哈佛大學的博阿茲·巴拉克(Boaz Barak)說:“但它是有可能的。這兩種嘗試可能在接下來的幾年融合,創造一種基於標準安全假設上,能抵禦量子攻擊的新版iO。

伊沙伊預測,Jain,林惠嘉和沙海的創造可能吸引新的研究者進入該領域,讓該方案更加實用並作出一些新的嘗試。他說:“一旦你知道某件事原則上是可能的,就會讓這個領域的研究者在工作時心理上好受得多。”

在協議(或者是其變體)可用於實際應用之前,計算機科學家還有許多工作要做。但研究人員表示這是意料之中的。帕斯說:“密碼學中有很多概念,當它們第一次出來的時候,人們會說:‘這只是純理論,(它)與實踐無關。’然後10年20年後,Google開始實施這些計劃。”

巴拉克說,從理論突破到實際可用的協議還有很長一條路要走。“但是你可以想象。或許50年後密碼學教科書上會說,‘好吧,這裏有一個很簡單的iO構造,我們能從中得到其他所有加密方式。’”他說。

—THE END—

部分內容經授權轉載自知乎用戶@Steven

Yuehttps://zhuanlan.zhihu.com/p/270364254

文章推薦

小學數學與伽羅瓦理論的一次奇遇

爲什麼要學數學?因爲這是一場戰略性的投資

關於投資的12個數學原理

頂級數學家如何做數學?當代大師阿蘭·孔涅的探祕之旅

耶魯大學教授給研究生的一些忠告

數學竟然可以如此美麗

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章