如何理解算法為什麼使用加法或乘法同態
如果我們以 LWE(Learning With Errors)為例,如何通過加法或乘法知道它是同態的?
為什麼問題有一個深刻的答案,因為它是深入的研究!How 問題要容易得多。要檢查加密方案是如何同態的,請查看一般同態;
讓 $ f:A\to B $ 是保留結構的地圖。 $$ f(x \cdot y) = F(x)\cdot f(y) $$然後我們說 $ f $ 是同態(簡單來說)。
這在 FHE 設置中有點不同,因為方案在語義上是安全的(大多數方案),因此無法在範圍(加密消息空間)上進行比較,因此您需要解密才能看到。
要檢查加法(或 FHE(或部分 FHE)使用的任何操作)需要兩個不同的輸入 $ x_1 \neq x_2 $ 並應用規則 $ \mathcal{E} $ 代表 FHE 加密和 $ \mathcal{D} $ 代表FHE解密。
$$ \mathcal{E}(x_1 + x_2) = \mathcal{E}x_2) \boxplus \mathcal{E}(x_1), $$我們無法檢查這個,所以我們需要解密。
$$ x_1 + x_2 = \mathcal{D}\left(\mathcal{E}(x_2) \boxplus \mathcal{E}(x_2)\right) $$
正如為添加所做的那樣,這可以對任何操作進行。為什麼 $ \boxplus $ 代替 $ + $ ,對加密消息的操作不需要是加法。
所以一般規則,讓 $ \oplus $ 是您要測試其同態性的操作。然後
$$ x \oplus y = \mathcal{D}\left(\mathcal{E}(x) \boxplus \mathcal{E}(y)\right) $$在哪裡 $ \boxplus $ 可以等於 $ \oplus $ 或不。
$$ \begin{align} \mathcal{E}(b_1)\cdot \mathcal{E}(b_2) &= x^{b_1} r_1^2 x^{b_2} r_2^2 ;\bmod; n \[6pt] &= x^{b_1+b_2} (r_1r_2)^2 ;\bmod; n \[6pt] &= \mathcal{E}(b_1 \oplus b_2). \end{align} $$
密文的乘法等於明文的 X-OR,這主要用於加密數據的指紋驗證。
$$ \begin{align} \mathcal{E}(m_1) \cdot \mathcal{E}(m_2) &= (g^{m_1} r_1^n)(g^{m_2} r_2^n) ;\bmod; n^2 \[6pt] &= g^{m_1 + m_2} (r_1r_2)^n ;\bmod; n^2 \[6pt] &= \mathcal{E}(m_1 + m_2). \end{align} $$
正如我們所見,密文的乘法等於明文的加法。這用於數據的聚合,尤其是在數據庫中。
另一方面,(教科書)RSA密碼系統
$$ \begin{align} \mathcal{E}(m_1) \cdot \mathcal{E}(m_2) &= m_1^e m_2^e ;\bmod; n \[6pt] &= (m_1 m_2)^e ;\bmod; n \[6pt] &= \mathcal{E}(m_1 \cdot m_2) \end{align} $$
對明文和密文都使用相同的操作。