加法 ElGamal 密碼乘積正確性的零知識證明
假設我們使用 Additive ElGamal 定義如下:
讓 $ (K,E,D) $ 成為三人組。密鑰生成器 $ K $ 輸出有限乘法群的描述 $ G $ 素數的 $ q $ , 三台發電機 $ (g,h,f) $ 設置為公鑰 $ p_k $ 系統的;密鑰 $ s_k $ 設置為值 $ \log_g h $ . 對於公鑰 $ (g,h,f) $ 加密函式 $ E(r,x) $ 等於元組 $ (g^r, h^r, f^x) $ . 操作 $ + $ 和 $ \oplus $ 被定義為加法模 $ q $ 和操作 $ \otimes $ 被定義為逐點乘法 $ G \times G $ . 解密函式記為 $ D $ . 對於密鑰 $ \log_g(h) $ 給定 $ (G,H) $ 它返回 $ H/G^{\log_g(h)} $ 然後對所有可能的值執行蠻力搜尋 $ f^x $ 恢復 $ x $ .
所以如果我有兩個 ElGamal 加密的密文, $ c_1= E(r_1,m_1) $ 和 $ c_2 = E(r_2,m_2) $ , 我可以 $ c_1 \otimes c_2 $ 得到和我一樣的結果 $ E(r_1 \oplus r_2, m_1+m_2) $ .
給定密文,我能以某種方式建構一個零知識證明嗎 $ c_1 $ ,證明我只添加了一個 $ x $ 可能的密碼?
背景將是電子投票的應用程序。給定一組候選者,我想證明我剛剛將一個有效候選者(預定數字)添加到密碼中。我已經找到了一個 ZKP,它表明我要添加的 Cipher 格式正確。
El Gamal 可以使用此處顯示的技術進行加法同態:Elgamal 可以加法同態嗎?它如何用於電子投票?或加法 ElGamal 加密算法(另請參閱https://crypto.stackexchange.com/a/13240/351)。
如果您使用 El Gamal 的加法同態變體,則不需要任何零知識證明。任何人都可以驗證添加是否正確完成。請參閱同態 ElGamal 和的正確性證明,它準確地說明瞭如何。