Paillier
如何計算 Paillier 密碼系統中的隨機因子?
我目前正在學習paillier密碼系統,有兩個關於隨機r的問題。我利用同態加法的特性得到兩個密文C和對應的明文P的乘積。
- 假設我知道私鑰,我如何計算r?(我想知道更多關於如何計算 r 的細節)
- 如果我得到 r 發給另一個只知道公鑰的人,他能不能用**(P,r)加密得到密文C**來證明我的解密操作是正確的?
讓 $ C $ 成為密文並讓 $ N $ 成為公鑰。因此, $ C=(1+N)^m \cdot r^N \bmod N^2 $ 對於一些消息 $ m $ . 我們想恢復 $ r $ 給定私鑰 $ \phi(N) $ . 這可以通過首先計算來實現 $ C’ $ 作為 0 的加密。為此,解密得到 $ P $ 然後拿 $ C’=C\cdot (1-P\cdot N)\bmod N^2 $ (這是標量減法)。接下來,計算 $ M = N^{-1}\bmod \phi(N) $ 最後我們有 $ r = {C’}^M\bmod N $ . 這工作以來 $ {C’}^M = r^{N\cdot M} = r^{1+k\cdot\phi(N)} = r \cdot (r^{\phi(N)})^k= r \bmod N $ 由於順序 $ \mathbb{Z}_N^* $ 是 $ \phi(N) $ .
關於你的第二個問題,如果你給某人 $ P $ 和 $ r $ 然後他們可以重新加密使用 $ r $ 並比較 $ C $ . 這將證明解密是正確的,但不是零知識。如果需要零知識,這在 Paillier 中也是可能的(並且非常有效)。