本文討論如何以及何時使用同態加密,以及如何使用開放原始碼 Microsoft 簡單加密算術庫 (SEAL) 實現同態加密。
架構
下載此架構的 Visio 檔案。
工作流程
傳統的加密方案由三個功能組成:金鑰產生、加密和解密。 對稱金鑰加密方案使用相同的金鑰進行加密和解密。 它可以對大量資料進行高效加密,以實現安全的外包雲端儲存。 公鑰加密方案使用公鑰進行加密,使用單獨的金鑰進行解密。 任何知道公鑰的人都可以加密資料,但只有知道秘密金鑰的人才能解密和讀取資料。 公鑰加密可以實現安全的線上通訊,但通常效率低於對稱金鑰加密。
您可以使用傳統加密來安全儲存和通訊,但外包計算需要刪除加密層。 提供外包計算的雲端服務必須實施存取策略,以防止未經授權的存取資料和金鑰。 資料隱私依賴雲端提供者實施並受到客戶信任的存取控制策略。
借助 Microsoft SEAL 同態加密,雲端供應商永遠無法對其儲存和計算的資料進行未加密的存取。 可以直接對加密資料進行計算。 這種加密計算的結果保持加密狀態,並且只能由資料擁有者使用金鑰來解密。 大多數同態加密都使用公鑰加密方案,儘管可能不會總是需要公鑰功能。
案例詳細資料
公司通常以加密形式傳送、接收和儲存雲端資料。 但要利用雲端計算,公司必須提供未加密的資料或解密資料的金鑰。 這種做法使公司資料面臨更大的風險。 同態加密允許直接對加密資料進行計算,從而更輕鬆地將雲端的潛力應用於隱私關鍵資料。
潛在使用案例
- 輕量級計算,例如對隱私關鍵資料和程序部分進行加法和乘法。
- 外包雲端計算,單一擁有者擁有所有資料,並且可以單獨存取解密金鑰。
考量
只能對加密資料進行一些計算。 Microsoft SEAL 同態加密函式庫允許對加密整數或實數進行加法和乘法。 使用此技術對加密資料進行加密比較、排序或規則計算式通常不可行。 因此,只能使用 Microsoft SEAL 實現對部分程式的特定隱私關鍵雲端計算。
Microsoft SEAL 附帶兩種具有不同屬性的同態加密方案。 BFV 方案允許對加密整數進行模計算。 CKKS 方案允許對加密實數或複數進行加法和乘法,但僅產生近似結果。 當加密實數求和、評估加密資料上的機器學習模型或計算加密位置的距離時,CKKS 是最佳選擇。 對於需要精確值的應用,BFV 方案是唯一的選擇。
同態加密效率不高。 由於同態加密會帶來很大的效能開銷,因此對未加密資料進行成本高昂的計算可能在加密資料上不可行。
使用同態加密加密的資料比未加密的資料大很多倍,因此使用該技術加密整個大型資料庫可能沒有意義。 相反,嚴格的隱私要求禁止未加密的雲端計算,但計算本身相當輕量級的情境是有意義的使用案例。
通常,同態加密方案有一個由資料擁有者持有的金鑰。 對於多個不同私有資料擁有者想要進行協作計算的情境,同態加密並不合理。
將未加密的計算轉換為加密資料的計算並不總是容易或直接的。 即使新使用者可以使用 Microsoft SEAL 進行程式設計和執行計算,高效能和低效實施之間也可能存在很大差異。 很難知道如何提高效能。
雖然同態加密原語本身是安全的,但它並不能保證使用它的應用程式和協定是安全的。
參與者
本文由 Microsoft 維護。 原始投稿人如下。
主要作者:
- Jose Contreras | 首席軟體工程經理
下一步
要了解有關同態加密和 Microsoft SEAL 庫的更多資訊,請參閱 Microsoft Research 的 Microsoft SEAL 以及 GitHub 上的 SEAL 程式碼專案。
請參閱以下有關 Azure 安全性的資源: