ビットコインウォレットにおけるメッセージ署名機能の功罪が話題に
皆さんが利用しているビットコインウォレットにはメッセージに署名する機能がありますか?
ビットコインアドレスに対応する秘密鍵で任意のメッセージに署名すること自体はたやすいことですが、この機能を搭載しているウォレットは多くありません。Bitcoin CoreのほかはElectrum、Sparrowなどのデスクトップ版のアドバンスユーザー向けのウォレットが大半となっています。それもそのはず、ビットコインウォレットによるメッセージ署名のユースケースがあまり存在しないためです。
アドレスに紐づいた秘密鍵のコントロールを示すことになるので、保有資産の証明、あるいは確かに秘密鍵を保有していることの証明にはなるのですが、それが求められる場面は(現時点では)滅多にありません。
強いて言えばOpendimeのように物理的に破壊しないと秘密鍵を取り出せないデバイスは署名機能を活用してアドレスに対応する秘密鍵がちゃんと存在することを証明しています。実際に2019年に私は未破壊のOpendimeから出力された署名から公開鍵を逆算し、マルチシグに利用できるようにするためのスクリプトを作成し公開しました。
ところがBitcoin Coreからこの機能を削除してしまおうという提案がなされています。一体どういうことでしょうか。
Bitcoin Wallets should remove message signing. It never made sense and it needs to go away.https://t.co/pwJeLXHkGN
— Matt Corallo (@TheBlueMatt) April 22, 2023
不本意なユースケースの伸長が理由
皆さんはAOPPを覚えていらっしゃるでしょうか。2022年1月にTrezorやBluewalletが追加したことで物議を醸し、コミュニティの猛烈な反発によって撤回に追い込まれたウォレットがスイスの規制に対応するための機能です。
この記事で騒動の詳細を解説しています:
当時はスイスのみが採用している、取引所などから出金する際にユーザーが実際に出金先のアドレスの秘密鍵を所有していることを証明させるという規制に対応するための仕組みでしたが、FATFが定めるトラベルルールへの対応が世界中の取引所へと広がる中でAOPPと同様の仕組みが検討されている例が多数ある模様です。
そこでMatt Corallo氏はBitcoin Coreのウォレットからビットコインアドレスの秘密鍵でメッセージに署名する機能を削除してはどうか?と提案しました。この機能はあまり使われていないほか、P2PKH (1で始まるアドレス)にしか対応していない場合が大多数でスクリプトアドレスには適用できないことも理由として挙げています。(例えばアドレスに対応した1つの秘密鍵がないマルチシグアドレスへの引き出しが直接できなくなってしまう)
ユーザーの利益を害する規制をソフトウェアの非対応によって非現実的にしようというこの提案は意外にも大きな反発を生んでいます。
開発者は署名機能を欲している
Bitcoin Coreへのプルリクエストには否定的な意見が相次いでいます。その多くは開発者で、Bitcoin Coreにある秘密鍵で任意のメッセージに署名する機能は意外と多くの場面で利用されており、削除することでAOPPを遅らせる効用よりも弊害が大きいのではないかというものです。
例えばマルチシグアドレスの共同管理を手掛けるCasaやUnchainedという企業は顧客のハードウェアウォレット内の秘密鍵が壊れていないかメッセージ検証によって確認できるもののみをサポートしていたり(Trezor, Ledger, Coldcard, Keystone, Passport)、冒頭で触れたOpendimeなどに関してはユーザー視点でトラストモデルの一部となっています。
また、同様の仕組みはライトニングネットワーク上のゴシップメッセージに対する署名(※定形のスクリプトを定めてマルチシグに応用している)などにも利用されているように、ビットコインエコシステムが共通規格として使用できる秘密鍵による任意のメッセージ署名機能には大きな需要があります。
強いて言えば現在のメッセージ署名はBIPというプロセスが導入される以前のサトシ自身が書いたコードによるものであるため正式に規格化されておらず、対応しているアドレス形式も限られるためBIP-322などの改善案(代替案)にも注目が集まってほしいところです。
開発者エコシステムがBitcoin Coreの実装を元にメッセージ署名機能を導入している一方、コンシューマ向けのウォレットの多くにはこの機能は搭載されていません。(わずか数行のコードを追加すれば導入できますが) Bitcoin Coreウォレットのユーザーも非常に少ないため、AOPP対策の効果よりエコシステムへの弊害が大きいという意見には一理あると感じます。
まとめ
・取引所からの出金時にウォレットによる署名でアドレスの保有を証明する仕組みが存在し、トラベルルールの対応策として有望視する国が少なくない
・ただしこれは必要以上のプライバシーの侵害であるほか、メッセージ署名機能自体が限られた種類のアドレスにしか対応しておらず、例えばマルチシグなどに適用できないため取引所からマルチシグアドレスへの出金が(簡単には)できなくなる
・規制コストを上げるためMatt Corallo氏がBitcoin Coreウォレットからあまり利用されていないメッセージ署名機能を削除しようと提案した
・開発者コミュニティからBitcoin Coreを参照して開発されているメッセージ署名機能は様々なプロダクトやプロトコルに導入されているため、事実上の共通規格となっている実装を失う弊害は大きいとの指摘があった
・Bitcoin Coreの署名機能は非常に古く、BIPとして正式に規格化されていないことも問題
・将来的にAOPPに似た規制がデファクトスタンダードになってしまった場合、ビットコインコミュニティが取れる手段は取引所のボイコット以外に残されているのだろうか (2022年1月にTrezor・Bluewalletが猛烈に批判され、実装撤回に追い込まれたことを念頭に)
AOPP以外の規制方法を想定してみた記事はこちら:
次の記事
読者になる
一緒に新しい世界を探求していきましょう。

ディスカッション