
スレッド「アラートシステムの開発」に、jimbobwayという利用者がサトシ宛ての四行を書き込んだ。
jimbobway(BitcoinTalkへの投稿、2010年8月25日16:45 UTC)サトシへのいくつかの修辞的な質問:
ウォーターボーディングに耐えられるだろうか? 電気ショックには耐えられるだろうか? あらゆる形態の拷問に? 最後に、ひょっとしてジャック・バウアーだったりして? 真面目に。
本人は修辞的な質問だと断っている。だが、その下にある心配は本物だった。三日前、サトシはアラートシステムを告知し、そのメッセージは「私だけが持つ秘密鍵で署名される」と書いていた。一人だけが持つ鍵は、その一人を狙う理由になる。狙う値打ちは鍵に何ができるかで決まる。記録はこれに二度答えている。一度は質問の11分後のサトシの返事で、もう一度は、鍵をネットワークから取り除くまでにかかった8年間で。
「私だけが持つ秘密鍵」
サトシがアラートシステムを告知したのは8月22日、バリュー・オーバーフロー事件の一週間後である。アラートを受けたノードは二つのことをする。ステータスバーに警告を出すことと、JSON-RPCの金銭を扱う命令がエラーを返すようにすることだ。後者をサトシはセーフモードと呼び、自動化されたウェブサイトに向けたものだとした。アップグレードされるまで、そうしたサイトが取引を続けないようにするためである。止まる命令はsendtoaddressやgetbalanceなど6つだった。コードは8月25日にSVNのr142としてリポジトリに入り、2日後にバージョン0.3.11として公開された。
「鍵を渡すまで拷問されるぞ」
反論は数時間のうちに出て、強制されることへの心配が何度も書かれた。
| 投稿者 | 投稿(UTC) | 書いたこと |
|---|---|---|
| BioMike | 8月23日5時15分 | 政府がサトシを逮捕して鍵を要求するか、コンピューターから取り出せば、「ネットワーク全体をシャットダウン」できるのか |
| FreeMoney | 8月23日5時23分 | 今は信頼できても、メッセージを送れる人が一人なのは危うい。その人は「拷問/買収/脅迫されるかもしれない」 |
| lfm | 8月23日5時28分 | オープンソースなのだから、サトシが強制されると思う人は、その鍵を自分の鍵に置き換えればいい |
| jimbobway | 8月25日16時45分 | 上の四つの修辞的な質問 |
FreeMoneyは投稿を、このページの題の元になった一行で始めている。「だめだ! そんなことをしたら、鍵を渡すまで拷問されるぞ、サトシ!」。そのあと「冗談はさておき」と続けて、本当の心配を書いた。サトシは、BioMikeの質問とjimbobwayの四行に、一つの返事で答えた。
サトシ・ナカモト(BitcoinTalkへの投稿、2010年8月25日16:56 UTC)アラートシステムに関して、誰が気にするのか? 鍵ができることは、サイト所有者が
-disablesafemodeスイッチを追加するかアップグレードするまで、6つのjson-rpcコマンドを一時的に無効にすることだけだ。すべてのノードは稼働し続け生成を続け、ネットワークは維持される。私が不在でも、スクリプトキディでも2文字追加してアラートシステムを無効にする新バージョンを作る方法を理解できる。一時的な不便でしかない。
サトシは、拷問に耐えられるとは書かなかった。鍵には手間をかけるほどの値打ちがない、と書いた。持っている人ができるのは6つの命令をしばらく止めることだけで、鍵を無視するクライアントは誰でも作れる。同じ日の22時48分(UTC)、FreeMoneyは「わかった、もう心配していない」と書いた。翌日、jimbobwayは「自分が何を言っているか分かっていなかったことは認める」と書き添えた。
軽くした鍵を渡す
サトシは、鍵を手放す前に、その力を弱めた。0.3.19を告知した最後の公開投稿で、「セーフモード」アラートを外している。
サトシ・ナカモト(BitcoinTalkへの投稿、2010年12月12日18:22 UTC)「セーフモード」アラートは、0.3.9のオーバーフローバグの後の一時的な措置だった。「-disablesafemode」を付けて実行すればいいだけだとは言えるが、見栄えのためにも無い方がいい。もともと長期的な機能として意図したものではない。セーフモードは、より長い(合計PoWがより大きい)無効なブロックチェーンを検知した場合には今後もトリガーされうる。
どこまで変わったかは、コードに残っている。r199の17分後に入ったr200で、アラートのRPCのエラー文の欄はstrReservedと名前を変えられ、読まれなくなった。0.3.19からは、アラートにできるのはステータスバーに文字を出すことだけになった。セーフモードはサトシの書いたとおり長い無効なチェーンの場合にだけ残り、鍵でそれを入れることはできなくなった。
その4か月後、サトシは鍵を送った。
サトシ・ナカモト(ギャビン・アンドレセン宛のメール、2011年4月26日)CAlertキーとブロードキャストコードを、必要になったときのために送っておく。少なくとも、ほかに一人か二人には渡しておいたほうがいいだろう。いつも顔を出している長期ユーザーが何人かいる。
アンドレセンは同じ日の返事で、まさにその助言に反応している。「参ったな……安全に預けられる信頼できる相手を1〜2人見つけないと……」。
取り戻せない写し
2013年3月11日、2013年3月のチェーン分岐のさなかに、アンドレセンはネットワークにアラートを流した。そのあとの事後検証のBIP 50は、アラートの鍵を誰が持つかを見直した。
引き継ぎの5年後、鍵はもう一人のものではなかった。アラートシステムの廃止を最後まで進める提案が出た。挙げた理由の最後はこうである。
グレゴリー・マクスウェル(bitcoin-devメーリングリストへの投稿、2016年9月10日)最後に、鍵が漏れたと考える十分な理由がある。鍵はある開発者からMt.Goxに渡され、Mt.Goxのシステムは侵害され、のちにそのCEOの機器は日本の警察に押収された。
Mt.Goxの最高経営責任者だったマルク・カルプレスは、2015年8月1日に日本の当局に逮捕されている。どの開発者が取引所に鍵を渡したのかは、マクスウェルのメールにも廃止の告知にも書かれていない。マクスウェルは同じメールで、もう一つの問題も挙げた。「鍵を持つ人のうち誰がメッセージを作ったのか、誰にも分からない」。2016年11月1日にbitcoin.orgに載った廃止の告知は、この二点の背後にある仕組みを書いている。開発者が加わるたびに鍵は渡されてきたが、去った人から「取り上げることはできない」。
鍵にできたこと
2010年のサトシの返事は、鍵が何をするために作られたかを説明していた。鍵を公開しようとした開発者たちは、それ以外に何ができるかをコードから読み取った。2018年7月3日にbitcoin.orgのブログに載った公開の文書は、鍵を持つ誰にでもできたメモリー枯渇の攻撃を挙げている。ノードは受け付けたアラートをすべて上限のないマップに保存するので、鍵を持つ人はアラートを送り続けて、ノードのメモリーを使い果たさせ、落とすことができた(CVE-2016-10724)。仕組みを封じるための「最後のアラート」でさえ、取り消すことができた(CVE-2016-10725)。文書は、これらの問題の多くはアラートシステムを外すまで知られていなかったと書いている。上限のないマップは最初からあった。2010年8月25日のr142のコードは、受け付けたアラートを上限なしにmapAlertsへ加えている。
| ビットコインの版 | アラートにできたこと(設計上) |
|---|---|
| 0.3.11〜0.3.18(2010年8月〜12月) | ステータスバーに警告を出す。セーフモードを入れて、6つのJSON-RPC命令を止める |
| 0.3.19〜0.12.0(2010年12月〜2016年) | ステータスバーに警告を出すだけ |
| Bitcoin Core 0.12.1以降 | 何もできない。アラートシステムは外されるか、止められている |
文書によれば、メモリーの攻撃が効かなくなったのは、Bitcoin Core 0.13.0とともに出たネットワークのプロトコルの版700013からである。公開の時点で、攻撃にさらされるノードは4%未満だった。
jimbobwayは、サトシが拷問に耐えられるかと尋ねた。サトシは、鍵の値打ちを下げることで答え、手放す前にもう一度下げた。残った危うさは、椅子に縛られた一人を通ってはいなかった。写しを通っていた。アンドレセンへの一つ、開発者が加わるたびに渡されたもの、そしてマクスウェルの説明ではMt.Goxに届いた一つ。どれも回収できなかった。仕組みを閉じた開発者たちは、サトシの処方をいちばん徹底した形で使った。2018年7月3日、秘密鍵はブログの記事に載り、誰でも写せるようになった。その記事が、jimbobwayの四行への最後の答えだった。全員が持っている鍵のために、誰かを拷問する者はいない。














