密碼學中有很多優雅的想法。全同態加密(FHE)可能是其中最荒誕卻真正有效的一個。
其概念是:你將資料加密後交給他人,對方對其進行運算,再將結果交還給你,當你解密該結果時,它是正確的。負責運算的人從未看過你的資料。不是經過清理的版本,不是雜湊值,而是實際的底層數值,從未曝光,哪怕是一微秒。

Craig Gentry 於 2009 年證明了這是可行的。在此之前,密碼學界已對此能否實現探索了約 30 年。
FHE 的運作原理
一般的加密是一扇單向門。你鎖上資料,任何想對其進行操作的人都必須先解鎖。FHE 讓門保持鎖定,但允許你從外部重新排列室內的傢俱。
更精確地說:FHE 方案在密文上定義了兩種運算,通常稱為同態加法和同態乘法。這些運算對應於底層明文上的相同運算。如果你將兩個加密值相加,解密後的結果等於原始值的總和。乘法亦同。
這兩種運算足以建構電腦能夠計算的任何函數。(二進位域上的加法和乘法可以實現 AND 閘和 XOR 閘,進而實現任意電路。)這就是從「對加密數字進行兩種運算」到「對加密資料進行任意運算」的橋樑。
問題在於雜訊。每次 FHE 運算都會向密文中添加少量誤差。運算次數足夠多後,雜訊會淹沒訊號,使你無法再解密。Gentry 的關鍵貢獻是一種稱為「自舉(Bootstrapping)」的技術:一種在密文仍處於加密狀態時對其執行解密電路的方法,從而重置雜訊水準。若你細想,這是極為奇特的。解密函數在加密內部進行解密……正是這一點使該方案成為「全」同態,而非僅僅「部分」同態。
部分同態加密(SHE)在雜訊變得致命之前只能處理固定次數的運算。分層同態加密(LHE)處理預定的電路深度。FHE 能處理任意電路,無上限,因為自舉技術讓運算得以持續進行。
FHE 目前的可用場景
對大多數應用而言,FHE 仍然太慢。但「大多數」並非絕對。目前已有真實的部署在運行。
私密機器學習推論。用戶端擁有敏感的輸入資料,伺服器擁有專有模型,雙方都不希望向對方暴露自己所有的內容。FHE 讓伺服器能夠對用戶端的加密輸入評估其模型,並回傳用戶端可以解密的加密結果。伺服器從未看到輸入,用戶端從未看到模型權重。多家公司已針對特定模型架構推出了此類方案。由於電路深度有界且可預測,該工作負載符合 FHE 目前的限制條件。
私密基因組運算。 基因組資料的敏感程度遠超社會安全號碼:它牽涉你的親屬,是永久性的,且隨著參考資料庫的增長,隱私風險也不斷累積。研究人員已使用 FHE 計算疾病風險評分和基因比對,而無需向運算方暴露底層序列。iDASH 競賽自 2014 年起便一直對此使用案例進行基準測試。
私密資料庫查詢。你希望在不透露搜尋內容的情況下查詢資料庫。關鍵字搜尋、範圍查詢和集合成員測試均有對應的 FHE 構造方案。開銷仍然較大,但對於低頻率、高價值的查詢而言尚在可控範圍內。
具有隱私保障的聯邦運算。多家醫院希望在不共享病歷的情況下,基於合併的患者資料訓練模型。FHE(通常與安全多方計算結合使用)讓你能夠進行聯合運算,而無需匯聚資料。
FHE 與其他隱私保護方法的比較
FHE 並非孤立存在,它是一個技術堆疊中的工具之一,該堆疊還包括:
安全多方計算(MPC):多方在不向彼此透露各自輸入的情況下,共同計算某個函數。對於特定函數,MPC 通常比 FHE 更快,且需要多個不共謀的參與方。FHE 則只需單一伺服器即可運作。
差分隱私(DP):向輸出結果添加經過校準的雜訊,以限制對手對資料集中個體資訊的推斷能力。差分隱私能防範對聚合結果的推論攻擊,但無法實現對私密輸入的運算。
可信執行環境(TEEs):硬體飛地(Intel SGX、AMD SEV),在作業系統無法讀取的受保護記憶體區域中執行程式碼。TEEs 要求你信任硬體廠商且實作中沒有缺陷。FHE 則要求你信任數學本身。
零知識證明(ZKPs):讓你在不揭露原因的情況下證明某個陳述為真。ZKPs 用於證明屬性,FHE 用於對私密數值進行運算,兩者相輔相成。
混合系統日益普遍。FHE 處理敏感運算,ZKPs 驗證運算是否正確執行,MPC 分散信任。隨著從業者構建需要同時具備多種技術特性的系統,這些技術之間的界限正在逐漸消融。








