Signature
為什麼 Schnorr 驗證公式有效並實際驗證簽名的有效性?
閱讀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(這就是我們需要這個驗證方程的原因)所以
- 查看g s = RX c,我們意識到我們知道*(R,s)、X和c*(因為c = H(X,R,m)並且公鑰X是已知的)。由於生成器g也是已知的,我們實際上可以計算等式的兩邊。
- 由於s=r+cx,我們知道g s = g r+cx
- 由於我們在素數的****循環群中進行這些計算,我們可以應用以下規則:g a + b = g a g b和 g ab = (g a ) b(據我了解,這就是為什麼組必須是循環的並且是素數的。)
- 因此,g s = g r+cx = g r g cx
- 回顧R = g r並將其從 4 代入等式中。我們得到g s = Rg cx
- 回顧 3 中的另一條規則。我們有g s = Rg cx = R(g x ) c = RX c
這正是應該顯示的方程式。
請注意一個有趣的事實,如 1 中所述。驗證方程所需的所有數據都是已知的,但只有在x和r已知的情況下才能生成數據。這就是為什麼x的所有者可以生成簽名並且其他人可以驗證它的原因。