📢 Gate廣場 #MBG任务挑战# 發帖贏大獎活動火熱開啓!
想要瓜分1,000枚MBG?現在就來參與,展示你的洞察與實操,成爲MBG推廣達人!
💰️ 本期將評選出20位優質發帖用戶,每人可輕鬆獲得50枚MBG!
如何參與:
1️⃣ 調研MBG項目
對MBG的基本面、社區治理、發展目標、代幣經濟模型等方面進行研究,分享你對項目的深度研究。
2️⃣ 參與並分享真實體驗
參與MBG相關活動(包括CandyDrop、Launchpool或現貨交易),並曬出你的參與截圖、收益圖或實用教程。可以是收益展示、簡明易懂的新手攻略、小竅門,也可以是現貨行情點位分析,內容詳實優先。
3️⃣ 鼓勵帶新互動
如果你的帖子吸引到他人參與活動,或者有好友評論“已參與/已交易”,將大幅提升你的獲獎概率!
MBG熱門活動(帖文需附下列活動連結):
Gate第287期Launchpool:MBG — 質押ETH、MBG即可免費瓜分112,500 MBG,每小時領取獎勵!參與攻略見公告:https://www.gate.com/announcements/article/46230
Gate CandyDrop第55期:CandyDrop x MBG — 通過首次交易、交易MBG、邀請好友註冊交易即可分187,500 MBG!參與攻略見公告:https://www.gate.com/announcements
初探全同態加密:FHE的定義與歷史回顧
作者:史蒂文·岳
前一陣子在史丹佛學習了CS355(高階密碼學)的課程。上課給我們的是Dan的三位PhD學生Dima Kogan,Florian Tramer和Saba Eskandarian。三位PhD講師各有特色,研究的方向也非常不同。 Dima主攻隱私保護技術PIR(Private Information Retri),Florian主攻ML與區塊鏈的研究,而Saba主攻零知識證明。
CS355這一課幾乎涵蓋了從古至今密碼學領域的所有內容。從最早的單向函數(One-way Function),到橢圓方程式(ECC)和Pairing,最後到一些近年來比較熱的MPC、零知識、私有資訊檢索(PIR)、全同態演算法等等。由於前兩天剛結課,趁著知識內容還在淺層記憶中沒有忘掉,整理了一波筆記。課程內容非常有趣,其餘的內容以後有時間跟大家慢慢分享~
這一期,我們來講一講最近很熱門的全同態加密(FHE)與伴隨而來的格加密(Lattice-based Encryption)技術。
全同態加密是什麼
我相信很多朋友已經多少聽過全同態加密(Fully Homomorphic Encryption/FHE)的大名了。近幾年對於個人隱私保護的話題越來越多,包括同態加密在內的一系列密碼學應用技術也得到了廣泛的普及。
為了更好的了解這個主題,我想要再對全同態加密這個定義稍作介紹一下。
加密體系回顧
在開始之前,我們先溫習一下最傳統的加密體系。
我們都知道,如果要建置一個加密系統,往往都需要一個金鑰(Key)。透過這個金鑰,我們可以一頭把明文的訊息加密成密文,然後在另一頭透過金鑰再把密文變回原來的樣子。如果沒有這個Key的話,其他的人很難知道我們到底傳遞了什麼訊息。
,然後解密用的是不一樣的私鑰(Private Key)。
在密碼學研究中,每當我們看到一個新的系統的定義之後,接下來往往都要陳述這個系統所應具有的屬性(Properties)。
進行某種安全代理運算(Secure Delegated Computation)。使用者可以透過同態加密的技術來把自己敏感的隱私輸入加密後託付給雲端,然後雲端可以在加密過後的資料上進行一定程度的運算,最後得到加密過後的使用者想要的結果,並且返還給用戶。最後用戶就可以用解密金鑰來開啟得到的結果了。在整個協定中,被代理方(雲端)始終無法看到任何和私密輸入有關的有用資訊。
大致上了解了兩種最基礎的同態性質之後,其他的概念就變得非常容易理解了。如果系統性的來看,同態加密體系大致上被分為四類:部分同態、近似同態、有限級數全同態與完全同態。
下面,我們就來依序來看每一個類別的具體定義。
部分同態加密(Partially Homomorphic Encryption)
同態加密最初級的階段稱為部分同態加密,定義就是密文只有一種同態特性。這一階段就包括了我們上文所描述的加法同態與乘法同態兩種模式。

就如同我們在上一段所說,如果我們又想讓私密輸入相乘,又想得到它們之間的線性組合的話,單純的部分同態加密演算法(RSA,ElGamal)是無法完成的。所以我們就需要來到下一階段。
部分同態加密的下一階段是近似同態加密,這階段距離我們想要實現的全同態更近了一步。如果我們有近似同態加密演算法的話,那麼我們就可以在密文上同時計算加法與乘法了。但要注意的是,正因為這一階段是近似同態(Somewhat Homomorphic)的,所以可以做的加法和乘法次數非常有限,可以計算的函數F 也在一個有限的範圍內。
近似同態加密這一階段常見的例子不多,如果說最好理解的例子的話,那就應該是基於配對(Pairing)的循環群加密演算法了。
上文我們簡單的討論過基於一般循環群的ElGamal加密演算法。我們都知道這個演算法是加法同態的,也就是說可以得到任意密文之間的線性組合。事實上,在某些特殊的循環群中,我們也可以找到一些薄弱的乘法同態性質。

來到下一個階段之後,我們距離全同態的目標更進一步了。
這階段稱為有限級數全同態加密。在這一階段的話,我們已經可以對密文進行任意的加法乘法組合了,沒有任何對於次數的限制。
全同態加密(Fully Homomorphic Encryption,FHE)
千呼萬喚使出來,最後就到我們拭目以待的全同態加密(FHE)了。
就像名字所說的一樣,一個全同態加密的系統沒有任何計算方法的限制,我們可以在沒有密鑰的情況下,把密文任意的組合起來,形成新的密文,並且新的密文,無論計算的複雜度,都可以完美的被還原成原文。
當我們達到這一階段的時候,先前提到的安全代理計算就變得可行了。如果可以找到一個效率比較高的全同態加密體系的話,我們可以安全的把所有本地的計算全部代理到雲端,並且不會洩露任何一丁點資料!
全同態加密體系的定義
在開始下文對於全同態歷史的討論之前,我們可以系統性的定義一下全同態系統的正式定義。一個全同態加密系統,總共擁有四個演算法:
的概念其實在上世紀70年代末期就已經被提出了。 1978年,密碼學界的幾個大牛Rivest,Adleman和Dertouzos在他們的論文On Data Banks and Privacy Homomorphisms中第一次提到了對於密文進行一定的計算,可以間接地對原文進行操作的系統構想。到後來這想法就被重新總結命名為全同態加密了。
由此可見,全同態加密這個概念已經被提出了很久了。令人驚訝的是,1976年,也就是論文發表的兩年前,Diffle-Hellman密鑰交換協議才剛被提出!由此可見密碼屆大牛的想像力還是非常豐富的。
當FHE的概念被提出來之後,整個學術界都為之所動,開始了長達幾十年的搜索,試圖找到一個擁有全同態性質的完美演算法。但這幾十年來下來,人們試遍了所有可以想到的選擇,但是找不到一個又能滿足全同態所有條件,並且安全性可以被輕易證實的選項。
直到2009年,在史丹佛讀書的PhD Craig Gentry突然靈光一現,攻破了FHE演算法的難關。在他的博士畢業論文中,他第一次給了一個合理且安全的全同態加密系統!此系統是基於理想格(ideal lattice)的假設。 Gentry09提出來的全同態系統,我們往往稱之為第一代全同態加密系統。
在Gentry的論文中,他也提到了一個至關重要的概念叫做Bootstrapping。 Bootstrapping是一種對於密文的特殊處理技巧,處理過後竟然可以把一個噪音接近臨界值的密文「重新刷新」成一個噪音很低的新密文。透過Bootstrapping,一個有限級數的系統的雜訊可以永遠不超過臨界值,從而變成了全同態的系統。這樣一來,我們就可以同態計算任意大小的F了。
在Gentry的重大突破之後,整個密碼圈又一次陷入了瘋狂,大家都開始爭相基於Gentry提出的想法尋找更加高效率和全能的全同態體系。
在2011年的時候,兩位大佬Brakerski和Vaikuntanathan提出了一個新的全同態加密體系,這個體系基於格(lattice)加密的另一種假設Learning With Errors(LWE)。在同一年,Brakerski,Gentry與Vaikuntanathan這三人一起把這個體係做完了,並且正式發表出來。他們發明的全同態系統簡稱為BGV系統。 BGV系統是一個有限級數的同態加密系統,但可以透過Bootstrapping的方式來變成全同態系統。 BGV系統相較於Gentry09所提出的系統,使用了更實際一點的LWE假設。一般來說我們都把BGV系統稱為第二代全同態加密系統。
2013年,Gentry又捲土重來了。 Gentry,Sahai和Waters三個大佬推出了新的GSW全同態加密系統。 GSW系統和BGV相似,本身俱有有限級數全同態性質,基於更簡單的LWE假設,並且透過Bootstrapping可以達到全同態。我們一般都把GSW系統稱為第三代全同態加密系統。
2013年後,密碼圈基本上就百花齊放了。基於原始的三代全同態系統之上,出現了各種新的設計,致力於優化和加速BGV與GSW系統的運作效率。 IBM基於BGV系統開發了一個開源的全同態運算庫HElib,並且成功的移植到各大移動平台上。同時,還有另外一個開源專案TFHE也非常值得注意。 TFHE是基於GSW系統,又加以了各種優化與加速,現在也非常有名的。
在開發傳統的全同態函式庫之外,也有很多團隊在研究如何透過GPU,FPGA,ASIC等異質硬體來更好的加速全同態加密演算法的運算。例如cuFHE就是一個比較有名的基於CUDA的GPU加速全同態加密系統。
站在今天的角度上,一路看來,全同態體系的大門被Gentry大神敲開已經過了11年了。現在業界對於FHE的研究百花齊放,不少人都在不同的角度和應用需求上在研究全同態系統。直到今天,我們已經擁有了多種可行的FHE實作方法,但現在大家還在不斷追求的是FHE系統運作的效率。以現在最前沿的FHE庫來說,在移動平台上同態計算一些比較簡單的邏輯可能要少則花上幾十毫秒,多則花費幾十秒的時間。這些時間單位對於電腦系統來說是極其緩慢的。
如何可以讓FHE系統更加高效率的在異構平台上運行,仍然是一個未解之謎。如果這道難題一旦被解決了,那麼把所有的電腦運算都轉為全同態,代理在第三方的雲端上進行運算,都是伸手可得的未來。
FHE與MPC的關係
在結束文章之前,我還想補充一下FHE與MPC之間的關係。 MPC即Secure Multi-Party Computation,就是可信任多方計算。通常代表的是有多方擁有自己的私密輸入,不想洩露給別人,但是他們想使用自己的輸入一起計算一個函數F並分享計算的結果。
MPC其實已經是一個非常廣為人知,並且被研究了很久的一個領域了。自從上個世紀密碼學家姚期智推出了他的Garbled Circuits之後,MPC領域獲得了非常廣的認可,並且也有很多突破。現在我們已經擁有很多可以使用的MPC函式庫,而且也具有一定的運作效率了。
如果了解MPC的朋友,看到全同態加密系統的艱辛歷史之後,也許會有很多疑問:為什麼不可以直接透過一個MPC協定來取代全同態加密呢?
的確,一個MPC協定可以完全取代一個FHE協定。我們只需要把使用者和私密輸入當作一個協定中的一個Party,再把遠端的代理計算伺服器當作另一個Party,就滿足了MPC協定執行的條件,只需要透過一定的交互,就可以實現代理計算,且伺服器也看不到私密輸入。
但有很重要的一點我們忽略了:由於MPC是有互動性的,所以需要使用者和伺服器共同進行計算與交流才可以完成協定。這也就和FHE代理計算最根本的需求衝突了。如果使用者需要一直保持線上完成協議,並且也要付出一部分算力的話,那其實計算根本就沒有被「代理」出去,雙方只是為了資訊的安全性而在做更多的計算。這也說明了為什麼MPC領域已經得到重大突破了,但是FHE的領域仍然是一片未知,因為他們兩個系統解決的是完全不同的問題。
看到這裡,想必大家已經對於全同態加密系統有了非常透徹的理解。
下一站,我們可以一起來學習前文提到的GSW全同態加密系統。雖然說這是全同態系統的第三代,但我認為Gentry09,BGV,GSW這三套系統中用到假設最少,構造最簡單,最容易理解的就是GSW了。而現在也有很多開源函式庫(如TFHE)就是基於GSW系統建構的。
由於篇幅原因,我們就在這裡結束這篇文章吧。下一篇文章,我們可以先學習GSW系統的基礎:基於格(lattice)的加密體系與LWE問題。一旦了解了LWE問題之後,GSW解決的問題就變得非常清晰了。