Discrete-Logarithm

Schnorr 協議的變體(響應和驗證的差異對)

  • April 12, 2020

當我試圖更深入地學習 Schnorr 協議時。我發現為了尊重,有不止一個響應和驗證對。但我不確定我是否正確。

我們將使用 Schnorr 協議來證明 $ x $ 在 $ y=g^x $ . 這裡是 Schnorr 協議的詳細資訊,首先證明者發送 $ t=g^r $ 在哪裡 $ r $ 是驗證者的隨機數。驗證者發送挑戰 $ c $ 對於證明者,下一步證明者將計算響應並讓驗證者通過函式計算它是否正確。這是問題。

為了 $ y=g^x $ , $ t=g^r $ 和 $ c $ ,我們有以下 3 個等式。

  1. $ g^x g^{rc}=yt^c $ $ \rightarrow $ $ g^{x+rc}=yt^c $
  2. $ g^{xc} g^r=y^ct $ $ \rightarrow $ $ g^{xc+r}=y^ct $
  3. $ (g^x g^r)^c=y^ct^c $ $ \rightarrow $ $ g^{c(x+r)}=(yt)^c $

我可以說我可以選擇其中任何一個來完成協議嗎?

  1. 回复 $ s=x+rc $ , 核實 $ g^s=yt^c $
  2. 回复 $ s=xc+r $ , 核實 $ g^s=y^ct $
  3. 回复 $ s=c(x+r) $ , 核實 $ g^s=(yt)^c $

我對麼?

  1. 回复 $ s=c(x+r) $ , 核實 $ g^s=(yt)^c $

這個不行;一個說謊的證明者可以選擇 $ t = y^{-1}g^n $ , 對於任意 $ n $ . 然後,當挑戰者回應 $ c $ , 說謊的證明者可以回應 $ s = nc $ ,滿足關係。

另外兩個很好;第二個是標準 Schnorr,第一個是反關係的標準 Schnorr 證明,也就是說,如果你要證明 $ y^{x’} = g $ (相當於知識 $ g^x = y $ )

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