Zero-Knowledge-Proofs
實現分佈式 ElGamal 加密方案的承諾和挑戰
我正在嘗試通過將這本書(Delfs 和 Knebl 的密碼學簡介)和這篇 Internet 文章(Wood 的比網路更多的混合)作為主要資訊來源來實現分佈式加密系統。
我生成以下變數:
- $ p $ : 主要,
- $ g $ : 發電機,
- $ x $ : 隨機內 $ [1, p-1] $ ,
- $ h $ : $ g^x \bmod p $
然後,我可以使用這些變數成功地加密、重新加密和解密消息。
我現在試圖通過遵循Delfs 書中的第4.5.5小節來使系統使用多個權限:
根據本小節 $ x $ 被計算為之間的隨機數 $ 1 $ 和 $ q-1 $ ,但我正在使用範圍 $ 1 $ 和 $ p-1 $ 如文章所示。另一個區別是書中沒有提到模 $ p $ 計算時 $ h $ .
請注意,我還實現了本書中描述的 ElGamal 系統,但我想使用文章中的實現,因為它對我更有意義,而且我不想使用外部庫)。
我的問題是,我應該做出什麼承諾,以後如何驗證它?
您可以使用基於雜湊的承諾方案,該方案非常易於實現。缺點是對承諾進行零知識證明並不容易。但是從您在問題中給出的內容來看,這似乎不是問題。
讓 $ \lambda $ 是安全參數(例如 128),讓 $ H $ 是一個密碼散列函式:
1 要送出,生成一個 $ \lambda $ -bit 均勻隨機字元串 $ r $ . 然後計算承諾 $ C(h_i)=H(h_i||r) $ .
2 打開承諾 $ c=C(h_i) $ , 揭示 $ (h_i,r) $ 其他人可以驗證並接受如果 $ c=H(h_i||r) $ .