Zero-Knowledge-Proofs

為什麼以下不是離散日誌的 ZKP?

  • August 24, 2022

在查看教科書 ZKP 離散對數之前,我嘗試自己建構一個。這與教科書完全不同,我一直想知道它可能有什麼問題?(我無法反駁任何 ZKP 要求,所以我想我遺漏了一些東西)。

原來的問題:

給定 $ g,h \in \mathbb{Z}_p^x $ ( $ g $ 作為生成器),為知道的人提供一個 ZKP $ x \in \mathbb{Z}_p^x $ 這樣 $ g^x=h $ .

我的建議:

  • 驗證者隨機選擇一個 $ r\in \mathbb{Z}_p^x $ 並發送 $ h^r $ 給證明者。
  • 證明者發回它的最佳猜測 $ g^r $ , 表示 $ a $ .
  • 驗證者斷言 $ a=g^r $ .

如果證明者確實知道 $ x $ 然後他會發送: $ a=(g^{rx})^{x^{-1}}=g^r $ .

如果證明者不知道 $ x $ 那麼,為了得到 $ a=g^r $ 從知道 $ g^{rx} $ 他必須解決離散對數 $ (g^r)^x $ 恢復 $ g^r $ ,即離散對數 $ g^x $ .

如果驗證者不誠實,我看不出他如何在發現方面獲得優勢 $ x $ .

我錯過了什麼?

好問題。請注意,“零知識”不僅僅意味著“不學習 x”。這意味著您根本不應該從協議中學到任何東西(這是用模擬範式形式化的)。

特別是您的協議不是針對惡意驗證者的 ZK。這很容易看出,因為驗證者可以選擇一些任意的組元素 $ f $ 代替 $ h^r $ 然後驗證者會學習 $ f^{1/x} $ . 這是驗證者不應該學習的一些額外資訊。

引用自:https://crypto.stackexchange.com/questions/101607