【技術分享】(全)同態加密底層算子NTT的FPGA加速





隱私計算




數據已經成爲數字經濟時代最重要的生產要素,成爲企業和機構的核心資產,而數據價值的體現則是數據的隱私保護。傳統的面向靜態數據保護的安全手段已經沒法知足數據在跨企業、跨機構之間流通的需求。隱私計算做爲新興技術爲數據的安全流動提供了新的可能性,即便在數據融合、計算的過程當中,也能夠保證數據的隱私。git


密碼學是隱私計算技術一個重要的方向,其中使用較爲普遍的幾個領域爲安全多方計算(secure Multi-Party Computation),同態加密(Homomorphic Encryption)和零知識證實(Zero-Knowledge Proof)。這三種密碼學技術分別適用於不一樣的場景,技術上也有不一樣的優劣勢。所以在具體的解決方案中每每是多種技術的組合在不一樣的環境下,知足不一樣的需求。github


安全多方計算(MPC)是由圖靈獎得到者姚期智院士於1982年提出的概念。經過將近40年的發展,在理論和工程上都獲得了長足的進步。以祕密分享(Secret Sharing),混淆電路(Garbled Circuit)和不經意傳輸(Oblivious Transfer)等技術爲主的MPC協議中(從廣義的概念上來看,同態加密和零知識證實也能夠歸於安全多方計算的範疇),每每網絡通訊上的代價要大於計算的代價在合適的網絡條件下基於上述技術的MPC協議的實際性能也能知足許多實際的需求。web





同態加密




同態加密(HE)是Ron Rivest, Leonard Adleman, 以及Michael L. Dertouzo在1978年提出的概念。與傳統的加密算法的區別在於,除了加密和解密算法以外,還支持同態計算算法。即,能夠在密文上進行計算,計算後解密可等價於先解密後計算。同態加密具備很是多的應用,一個典型的應用就是安全外包計算,以下圖。因爲同態加密對於網絡通訊的要求較低,所以也能夠作爲MPC的一個組件來支持不一樣的協議。算法


 


同態計算有多種分類。加法同態加密(只能支持加法的同態操做,好比Paillier),乘法同態加密(只能支持乘法的同態操做,好比ElGamal),深度受限的同態加密(能夠同時支持加法和乘法,可是電路的深度有限制,好比BGV/BFV/CKKS/TFHE等),全同態加密(能夠支持全部的計算,加法和乘法,同時深度不受限制,好比BGV/BFV/CKKS/TFHE + Boostrapping)。安全


全同態加密(Fully Homomophic Encryption)一直被稱爲密碼學的聖盃,直到2009年才由Craig Gentry給出第一個基於格理論的方案。此後幾乎全部的全同態加密方案都是在該框架下進行優化和改良。在Craig Gentry的開創性工做之上,(全)同態加密方案在算法性能上有了極大的提高,而且已經開始應用到隱私機器學習、深度學習等領域。微信


雖然算法上的性能有了很大提升,可是同態加密的計算複雜度仍然很是高。與明文的操做相比,密文同態的操做要超出4-5個數量級。如何從硬件的角度對同態加密算法進行加速已經成爲很是迫切的需求,性能的提高也直接推進同態加密在各種複雜場景的應用。網絡





數論變換NTT




幾乎如今全部的具有複雜同態計算能力的(全)同態加密算法都是基於格理論(Lattice)的。其安全性都可基於Learning With Error(LWE)或者Ring Learning With Error(RLWE)這兩類困難問題上。從表現來看,這類同態加密算法的基本操做都會涉及到維數較大的整係數多項式的加法和乘法對於基本操做的性能提高,能夠直接提高整個加密方案的性能,甚至提高倍數還具備放大效應。app


平凡的算法計算兩個N次多項式的加法的複雜度爲O(N),乘法的複雜度爲O(N2),所以多項式乘法是基本操做中更耗性能一個操做。爲提高多項式乘法的計算性能,經常使用的作法是採用數論變換(Number-Theoretic Transform,NTT),能夠將乘法的複雜度降爲O(NlogN)框架


NTT 其實是傅立葉變換(FFT)的一個變種,其優點在於能夠直接對整數進行處理,無需考慮浮點數中的存儲以及精度問題。另外對大整數(針對同態的場景)的運算能夠經過中國剩餘定理轉換爲多個獨立的小素數的NTT,所以該算法也很是適合FPGA的並行優化。dom





NTT的FPGA加速




NTT中最重要的部分爲蝶形運算

爲在FPGA中實現蝶形預算,矩陣元設計專門的處理單元(Processing Element,PE以及與之匹配的交換網絡,結合狀態機等組成一個完整的NTT模塊。多個NTT模塊經過鏈接器(connector)與片外存儲(off chip memory)DDR進行交互。


除此以外,矩陣元在第一版的NTT加速的框架中,進行了如下幾點的優化:


  • 驅動層,接口層進行了優化,使用了QDMA等方法,極大的下降了數據在Host端與FPGA端的傳輸耗時。傳輸的時間仍然佔整個計算時間的70%左右,傳輸時間仍然還有優化的空間。

  • 針對多NTT模組,經過大量測試,獲取不一樣數量NTT模組並行時系統的性能數據。最後肯定了資源佔用/性能提高最爲合適的模組數目,矩陣元硬件加速框架目前含有4個NTT模組,每一個NTT模組含有16個PE。

  • 在FPGA端,多NTT模組並行時對片外存儲(off chip memory)的操做會產生讀寫衝突。NTT模組數目越多,讀寫衝突越嚴重。矩陣元在這方面也作了相應的優化處理,減小讀寫衝突。


矩陣元硬件加速框架採用Xilinx Alveo U250加速卡,Host端CPU爲Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz。目前的性能數據以下。其中 爲多項式維度,模數爲51比特的q = 0x7FFFFFFFE0001UL,CPU的NTT實現使用目前較快的軟件庫 NFLlib (https://github.com/quarkslab/NFLlib)。



系統資源佔用數據以下:



LUT

Look-Up Table 查找表

LUTRAM

Look-Up Table Random Access Memory 查找表內存

FF:

Flip Flop 觸發器

BRAM

Block Random Access Memory 塊內存

URAM

Ultra RAM Ultra 內存

DSP

Digital Signal Processor 數字信號處理器


總體而言,當前版本的NTT計算FPGA加速倍數在25倍左右。目前狀態看,在算法和工程上還具備必定的優化空間,特別是在數據傳輸時間上的優化,資源的使用也可進一步減小,並行化進一步提升等等。





後續規劃




NTT只是(全)同態加密算中最爲基礎、最爲底層的操做。矩陣元在第一版NTT的基礎上將持續優化基礎算子的性能。同時將逐步實現更爲高階的操做,好比加密、解密和同態操做,最終實現對(全)同態加密的總體硬件加速支持。並應用在隱私機器學習、深度學習等同態加密的相關場景中,知足性能要求。


最終矩陣元的(全)同態加密硬件加速將配合Rosetta(https://github.com/LatticeX-Foundation/Rosetta)隱私AI計算框架,一塊兒提供完備的軟硬一體化解決方案。



本文分享自微信公衆號 - GDG(GDG_Shanghai)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索