京東云開發者|經典同態加密算法Paillier解讀 - 原理、實現和應用


京東云開發者|經典同態加密算法Paillier解讀 - 原理、實現和應用

文章插圖
摘要隨著云計算和人工智能的興起,如何安全有效地利用數據,對持有大量數字資產的企業來說至關重要 。同態加密,是解決云計算和分布式機器學習中數據安全問題的關鍵技術,也是隱私計算中,橫跨多方安全計算,聯邦學習和可信執行環境多個技術分支的熱門研究方向 。
本文對經典同態加密算法Pailier算法及其相關技術進行介紹,重點分析了Paillier的實現原理和性能優化方案,同時對基于公鑰的加密算法中的熱門算法進行了橫向對比 。最后介紹了Paillier算法的一些實際應用 。
【關鍵詞】:同態加密 , 多方安全計算,聯邦學習,隱私計算
1 背景知識1.1 同態加密同態加密(Homomorphic Encryption,HE)[1]是將數據加密后,對加密數據進行運算處理 , 之后對數據進行解密,解密結果等同于數據未進行加密 , 并進行同樣的運算處理 。同態加密的概念最初在1978年,由Ron Rivest , Leonard Adleman和Michael L. Dertouzos共同提出,旨在解決在不接觸數據的前提下,對數據進行加工處理的問題 。
目前,同態加密支持的運算主要為加法運算和乘法運算 。按照其支持的運算程度 , 同態機密分為半同態加密(Partially Homomorphic Encryption, PHE)和全同態加密(Fully Homomorphic Encryption, FHE) 。半同態加密在數據加密后只持加法運算或乘法運算中的一種 , 根據其支持的運算的不同,又稱為加法同態加密或乘法同態加密 。半同態加密由于機制相對簡單 , 相對于全同態加密技術,擁有著更好的性能 。全同態加密對加密后的數據支持任意次數的加法和乘法運算 。
1.2 復合剩余類問題如果存在一個數
京東云開發者|經典同態加密算法Paillier解讀 - 原理、實現和應用

文章插圖
那么符合公式z ≡ yn (mod n2)的數z,稱為y的模n2的n階剩余 。復合剩余類問題(decisional composite residuosity assumption , DCRA),指的是給定一個合數n和整數z,很難確定模n2的n階剩余數z是否存在 。
1.3 中國剩余定理中國剩余定理(Chinese Remainder Theorem, CRT),又稱為孫子定理,源于《孫子算經》,是數論中的一個關于一元線性同余方程組的定理,說明了一元線性同余方程組有解的準則以及求解方法 。
有物不知其數,三三數之剩二,五五數之剩三,七七數之剩二 。問物幾何?翻譯為數學語言為:
京東云開發者|經典同態加密算法Paillier解讀 - 原理、實現和應用

文章插圖
其通用方程為:
京東云開發者|經典同態加密算法Paillier解讀 - 原理、實現和應用

文章插圖
中國剩余定理的解法流程為:
京東云開發者|經典同態加密算法Paillier解讀 - 原理、實現和應用

文章插圖
2 Paillier算法原理2.1 Paillier簡介在Paillier算法出現之前 , 基于公鑰加密的算法主要有兩個分支:
  • 以RSA為代表的 , 基于大數因數分解難題的公鑰加密算法
  • 以ElGama為代表的,基于大數離散對數難題的公鑰加密算法
Paillier加密算法,由Pascal Paillier于1999年發表,給出了公鑰加密算法的一個新的分支領域 。Paillier基于復合剩余類難題,滿足加法同態和數乘同態,具有非常高效的運行時性能 。
2.2 一個典型的應用場景
京東云開發者|經典同態加密算法Paillier解讀 - 原理、實現和應用

文章插圖
圖1 傳統聯邦學習同態加密算法使得密文數據,在沒有額外數據泄露的情況下 , 可以在第三方平臺進行進一步加工處理 。隨著大規模云計算的興起 , 尤其是涉及到敏感數據的云計算,同態加密算法將是其中至關重要的技術基礎 。我們以一個典型的聯邦學習的例子為切入點,看看Paillier算法的原理和在實踐中應用的問題 。
假設Alice和Bob想共同訓練一個網絡模型,Alice和Bob各自持有一部分訓練數據,并且他們不想把自己的數據泄露給對方 。那么在訓練期間,Alice和Bob需要交互各自訓練的梯度數據,并根據雙方的梯度數據,共同計算一個對雙方都合適的梯度值,用來執行聯合梯度下降過程 。
2019年,Ligeng Zhu等人發表的“Deep Leakage from Gradients”論文中給出了一種算法,可以從幾次迭代的梯度數據中 , 推斷出訓練的數據,標簽,模型等一系列隱私信息 。這使得在分布式機器學習中 , 通過傳輸梯度數據來進聯合模型訓練變得不再安全 。那么如果在梯度數據傳輸的過程中,傳輸的是加密后的梯度數據 , 并且這些加密數據可以進行二次計算,那么便可以規避梯度數據傳輸過程帶來的安全風險 。

推薦閱讀