本文へスキップ
ecdsa.com

BIP-340(secp256k1 の Schnorr 署名)

32 バイトの x 座標のみの公開鍵とタグ付きハッシュを使う、secp256k1 上の 64 バイトの Schnorr 署名を定めた Bitcoin の仕様で、Taproot と Nostr で使われています。
別表記BIP-340BIP340Schnorr signatures secp256k1x-only public key

鍵は x 座標だけでエンコードされ、y が偶数の点を暗黙に指すため、1 バイト節約できます。チャレンジは e = tagged_hash("BIP0340/challenge", R.x ‖ P.x ‖ m)、署名は R.x ‖ s です。タグ付きハッシュ SHA256(SHA256(tag) ‖ SHA256(tag) ‖ data) によって、ハッシュの用途が分離されます。推奨される署名手順では、32 バイトの補助的な乱数を nonce の導出に混ぜ込みます。また検証は厳格なので、署名に展性はありません。

線形性により、鍵の集約(MuSig2、BIP-327)やしきい値署名方式(FROST)が可能になり、バッチ検証によってブロックの検証が高速になります。BIP-340 のメッセージは 32 バイトです。任意長のメッセージは、BIP-340 の後の改訂と、先にハッシュを計算するプロトコルで扱われます(Nostr は 32 バイトのイベント ID に署名します)。

規格と参考文献

すべての用語