Public-Key
Paillier 對單字元消息的已知明文攻擊是否安全?
假設我有三個消息 m1,m2,m3 其中 m1=m2=m3=1 並且我計算 c1,c2 和 c3。
這是否意味著 c1=c2=c3 在密文中來自 ?如果不是,我可以加密消息 m=1 多少次仍然產生唯一的密文?
如果不可能,我可以通過將零作為填充來解決問題並仍然使用附加屬性嗎?(例如 m1=01…m2=001 和 m3=0001 當我計算 x=c1+c2+c3 時解密結果 D{x}=3)
我剛開始使用密碼學,所以請理解。:-)
是的,Paillier 加密可以防止已知的明文攻擊(對於單字元消息和任何其他受支持的消息大小)。很有可能,三個密文 $ c_1 $ , $ c_2 $ 和 $ c_3 $ 對於相同的明文會有所不同。
使用公共模數時 $ n $ ,每個Paillier加密都會抽取一個統一的隨機數 $ r $ 在範圍內 $ [0,n) $ (有些描述說 $ [0,n^2) $ 但事實證明只有 $ r\bmod n $ 對密碼有影響;並且在某些描述中添加了 $ r $ 與 $ n $ ,但這極有可能用於安全選擇 $ n $ ,因此可以省略)。不同的 $ r $ 會導致不同的密碼 $ c=g^m\cdot r^n\bmod n^2 $ .
為了正確實施,通過生日問題 101,機率約為 $ k^2/2n $ 其中 $ k $ 相同明文的密文,任意兩個相等。為了防止保理, $ n $ 必須有幾千位,因此對於任何可行的,所述機率完全可以忽略不計 $ k $ 和安全的選擇 $ n $ . 無論產生什麼,都更有可能 $ r $ 有缺陷,打嗝,導致相同的密文。
注意:Pailler 加密僅對純整數消息是同態的 $ m $ . 左邊用零填充不能改變 $ m $ 如果同態屬性必須保留。