Signature

為什麼 Schnorr 驗證公式有效並實際驗證簽名的有效性?

  • March 7, 2021

閱讀Musig 論文第 2 頁的底部,我們可以發現具有生成器g的素數階p的循環群**G的 Schnorr 簽名是一個元組*(R,s)*,其中

  • R = g r對於隨機秘密r
  • s=r+cx其中c = H(X,R,m)對於消息m,一些雜湊函式H和對應於私鑰x的公鑰X = g x

進一步指出,可以使用等式g s = RX c來驗證這樣的簽名*(R,s)*

我想知道為什麼最後一個等式證明了簽名的有效性?

為了證明簽名的有效性,我們必須看到元組*(R,s)實際上來自私鑰x*。特別是s被導出為s=r+cx。顯然,我們不應該擁有私鑰x(這就是我們需要這個驗證方程的原因)所以

  1. 查看g s = RX c,我們意識到我們知道*(R,s)、Xc*(因為c = H(X,R,m)並且公鑰X是已知的)。由於生成器g也是已知的,我們實際上可以計算等式的兩邊。
  2. 由於s=r+cx,我們知道g s = g r+cx
  3. 由於我們在素數的****循環群中進行這些計算,我們可以應用以下規則:g a + b = g a g b和 g ab = (g a ) b(據我了解,這就是為什麼組必須是循環的並且是素數的。)
  4. 因此,g s = g r+cx = g r g cx
  5. 回顧R = g r並將其從 4 代入等式中。我們得到g s = Rg cx
  6. 回顧 3 中的另一條規則。我們有g s = Rg cx = R(g x ) c = RX c

這正是應該顯示的方程式。

請注意一個有趣的事實,如 1 中所述。驗證方程所需的所有數據都是已知的,但只有在xr已知的情況下才能生成數據。這就是為什麼x的所有者可以生成簽名並且其他人可以驗證它的原因。

引用自:https://bitcoin.stackexchange.com/questions/85211