Homomorphic-Encryption
python中的完全同態加密(過加法和乘法)庫
我想知道 Python(或另一種通用語言,如 Java、C++ 等)中是否有一個常用的庫,用於在乘法和加法上進行完全同態加密,也支持浮點數。這意味著如果我們的加密函式是 $ f $ 我們的解密函式是 $ g $ 我們必須明文消息 $ m_1,m_2 $ , 那麼以下兩個都成立:
- $ g(f(m_1)+f(m_2))=m_1+m_2 $
- $ g(f(m_1)\cdot f(m_2))=m_1\cdot m_2 $
實現 Paillier 密碼系統的Python-paillier似乎有很好的文件記錄,它實際上確實支持浮點數(通過固定精度並將所有浮點數縮放為整數來實現),但不幸的是它不是完全同態的乘法(它不支持密文的乘法,而是具有較弱的乘法性質)。
我做了一個快速搜尋,似乎有很多這樣的密碼系統(我現在不太關心執行時),但我一直無法找到一個具有具體實現的庫。
提前致謝!
CKKS 方案是近似浮點運算的主要同態加密方案。幾個同態加密庫實現了它,包括:
大多數同態加密方案都有效
- 整數模某個值,比如 n
- 或超過位。
在第一種情況下,您可以嘗試通過首先將所有原始數據縮放為整數並在同態評估期間跟踪縮放因子來模擬浮點數,以便您可以在解密後除以正確的值。但這通常效率不高。
在第二種情況下,您可以加密浮點數的每一位,並使用該方案提供的同態二進制門實現對浮點數進行加法、乘法等電路,但這非常費力。
我所知道的唯一可以在(非常接近)浮點數上原生工作的方案是 Cheon 等人的這個方案,它在這個 Github 儲存庫中實現。