加法 Paillier 密碼產品的零知識證明
假設Alice收到了密碼值: $ E(x_1), E(x_2), …, E(x_n) $ 使用 Paillier 密碼系統加密的 $ n $ 具有Bob公鑰的實體。
愛麗絲計算 $ E(\sum x_i) $ 來自她收到的密碼值的乘積。愛麗絲發送 $ E(\sum x_i) $ 給 Bob 進行解密,但她需要證明她使用了她收到的所有密碼值來形成產品 $ E(\sum x_i) $ 讓 Bob 返回純文字 $ \sum x_i $ .
每個實體應該做什麼: $ i $ 連同他們的份額一起發送 $ E(x_i) $ Bob 能夠進行這樣的驗證,他怎麼能做到呢?
筆記: $ x_i $ 價值觀不僅僅是 $ 0 $ 或者 $ 1 $ . 它們可以採用任何整數值。
假設實體確實希望 Bob 解密總和,但不能解密單個密文:實體將向 Bob 發送明文承諾,同時向 Alice 發送密文。承諾方案應該是加法同態的,這樣 Bob 可以使用解密的明文作為驗證打開結果(收集的承諾過多)。這將阻止 Alice 操縱收集到的密文(假設是誠實的實體)。
請注意明文不是Paillier方案模中的整數 $ n^2 $ , 但是一個環元素模 $ n $ .
如果你不需要全範圍的明文空間,並且可以保證有效明文的總和保持在某個門檻值以下,你可以為每一方添加某種標記,可以在總和中被 Bob 檢查。
玩具範例:
- 有 $ 4 $ 各方,他們只加密之間的值 $ 0 $ 和 $ 255 $ ,所以總和小於 $ 1024 $ ,因此 10 個最低位就足夠了。
- 第一方實際上加密了值 $ 2^{12} + x_1 $
- 第二個加密 $ 2^{13} + x_2 $
- 第三次加密 $ 2^{14} + x_3 $ 和第四個 $ 2^{15} + x_5 $
當 Bob 現在解密該值時,他會檢查該值是否實際上在有效範圍內:減去 $ \sum_{k=12}^{15}2^k $ ,並檢查餘數是否在正確的範圍內。
附加值也可以設置為相互抵消。但是,Alice 必須不知道實際值,否則她可能會以巧妙的方式組合不同的消息,在上面的範例中,她可以將第一條消息添加兩次而不是第二條。如果第一個值低於 128,那將被忽視。