一次性安全無反對反對bmod手術?
認為 $ r_1,r_2 $ 僅使用一次,並從有限域中隨機(每次我們想要屏蔽一個值)均勻選取 $ \mathbb{F}_p $ , 在哪裡 $ p $ 是一個大素數。認為 $ r_i\neq0 $ 和 $ b $ 是欄位的(非零)固定元素。讓 $ (r_i)^{-1} $ 乘法倒數 $ r_i $ .
成像有一個客戶端 $ B $ 和一個伺服器。伺服器對加密值進行一些同態操作,然後提供 $ c=E_{pk_{B}}(r_1\cdot b) $ 給客戶 $ B $ . 其中密文空間遠大於 $ p $ .
所以明文可能會在欄位中溢出 $ \mathbb{F}_p $ , 換句話說 $ r_1\cdot b $ 可能不在現場 $ \mathbb{F}_p $ . 因此,客戶端有一個 rick $ B $ 解密後了解一些關於 $ b $ . 所以我們要強制客戶端 $ B $ , 解密消息後執行 $ \bmod p $ .
為此,我們計算 $ c’=E_{pk_{B}}(r_1\cdot b \cdot r_2\cdot (r_2)^{-1}) $ .
問題1:給定 $ c’ $ , 可以客戶端 $ B $ 學習任何東西 $ b $ 在執行之前解密密文之後 $ \bmod p $ 手術?
*更簡單的版本:*給定 $ r_1\cdot b \cdot r_2\cdot (r_2)^{-1} $ 不涉及 $ \bmod p $ 操作 半誠實的一方可以學到任何東西 $ b $ ?
給定 $ c’ $ , 可以客戶端 $ B $ 學習任何東西 $ b $ 在執行之前解密密文之後 $ \bmod p $ 手術?
給定 $ r_1 \cdot b \cdot r_2⋅(r_2)^{−1} $ 不涉及 $ \bmod p $ 操作 半誠實的一方可以學到任何東西 $ b $ ?
這些似乎是同一個問題;只是在第一個問題中, $ B $ 被交給了一個密文,他有它的解密密鑰;。
答案:顯然,是的。如果 $ r_1 \cdot b \cdot r_2⋅(r_2)^{−1} $ 恰好是素數的相對素數 $ q $ (例如, $ q=3 $ ),那麼攻擊者知道 $ b $ 也是比較素的 $ q $ . 這並沒有立即告訴他 $ b $ ; 但是它允許攻擊者推斷出什麼 $ b $ 不是。
如果攻擊者可以考慮 $ r_1 \cdot b \cdot r_2⋅(r_2)^{−1} $ ,然後他可以整理出一個簡短的合理值列表 $ b $ ; 但是很可能 $ b $ 並且要麼 $ r_1 $ 或兩者 $ r_2, r_2^{-1} $ 有足夠大的素因數來使這個難以處理(假設 $ b $ 最終以不利於平滑數字的方式選擇)。
但是,如果給攻擊者兩個相同的編碼 $ b $ , $ r_1 \cdot b \cdot r_2⋅(r_2)^{−1} $ 和 $ r’_1\cdot b \cdot r’_2⋅(r’_2)^{−1} $ ,那麼他很幸運;他可以計算 $ \gcd( r_1 \cdot b \cdot r_2⋅(r_2)^{−1}, r’_1\cdot b \cdot r’_2⋅(r’_2)^{−1}) $ , 那就是 $ r $ ,乘以一個(可能很小的)整數。