加密附加 elgamal 消息在有效消息集中的非互動式 ZKP
這取自F. Hao PYA Ryan P. Zielinski 的兩輪公開討論的匿名投票
投票使用 ElGamal 的加法變體進行加密。我也在使用 ECElgamal。這個想法是為了投票給特定的候選人,你將你的資訊設置為以下之一 $ v $ 下面計算。
一個問題是,如果投票者發送的投票未在有效集合中指定 $ v $ ‘s,那麼得到的總和 $ v $ 會影響選票的統計。例如,如果您投票使用 $ 2\times2^0 $ ,您可以投票給候選人 1 $ 2 $ 不理想的時代。或者 $ 2\times2^m $ 為候選人 2 投票兩次。
如何驗證記錄的投票(已加密)是否屬於有效投票之一 $ v_i $ 無需解密投票的密文或顯示 $ v_i $ ?
標準解決方案是使用零加密證明,加上 or 證明和仔細選擇密文。
零加密證明是密文解密為零的證明。對於 ElGamal,這通常使用相等離散對數的證明來完成。回想一下,零的加密形式為 $ (x,w) = (g^r, y^r g^0) $ , 在哪裡 $ y $ 是公共加密密鑰,所以你需要證明的是 $ \log_g x = \log_y w $ . (這種 d.log. 證明的相等性是標準的,我相信它被稱為 Chaum-Pedersen 或其他東西。它本質上相當於一個精心挑選的組中的 Schnorr 證明。)
一個或證明允許您證明幾個聲明中的一個是真實的。在這種情況下,我們考慮了幾種不同的密文是零加密的說法,儘管只有一種是。(同樣,這是 sigma 協議的標準技術,上面的零加密證明就是。它可以追溯到 90 年代。)
現在,您將 or 證明應用於**哪些密文?**你想證明 $ (x,w) $ 是一種加密 $ v_1 $ , $ v_2 $ , …, 或者 $ v_L $ ? 然後將 or 證明應用於密文 $ (x,w g^{-v_1}) $ , …, $ (x, wg^{-v_L}) $ . 如果加密有效,其中之一將是零加密,允許您完成或證明。