勤勉な国民性を持ち、システムの運用を行わせれば確実に仕事をこなす日本において、マウントゴックス(Mt. Gox)事件に続く、2度目の取引所における大きなインシデントが発生した。筆者は、以前より、日経IT Proの連載「ブロックチェーンは本当に世界を変えるのか」(大幅加筆をして書籍『ブロックチェーン技術の未解決問題』として出版)において、ブロックチェーンを用いたシステムにおけるセキュリティ確保の難しさを解説し、スタンフォード大学で行われたブロックチェーンのセキュリティに関するトップの会議であるBlockchain Protocol Analysis and Security Engineering 2017 (BPASE 2017)などでブロックチェーンを用いたシステムのセキュリティ確保のための発表や招待チュートリアルを行ってきた。
今回のコインチェック事件の発生メカニズムについてはまだ解明されていないが、鍵管理を含む暗号システムの運用では基本的なところに瑕疵があったとされている。しかし、本質的には、ブロックチェーン事業者の中にさえ、ブロックチェーンの技術が何を実現しようとしていて、何が実現できていないのか、というシステムのセキュリティを考える上での前提条件に関する理解が欠如している会社があると考えられる。また、利用者側にそういう情報が与えられることもない。そこで、本稿では、ブロックチェーンのセキュリティに対する理解を深めるために、ブロックチェーンが達成しようとしていることは何で、そのスコープ外なのはどこなのか、という点を述べる。
世の中の多くのパブリック・ブロックチェーン(以下、本稿での「ブロックチェーン」という記述はパブリック・ブロックチェーンのみを対象とする)をベースとしたプロジェクトは、2008年にSatoshi Nakamotoが公開したビットコイン(Bitcoin)のpaperで示されたロジックとアルゴリズムが起点になっている。このpaperにおいて提案されている技術について、本文中では以下のように記述されている。
An electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party.
(日本語訳)同意している二者が信頼できる第三者を必要とせず、直接取引が可能な、トラストの代わりに暗号的証明に依拠する電子支払いシステム
In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions.
(日本語訳)分散されたピア・ツー・ピアのタイムスタンプサーバーを使って、トランザクションの時間的順序の計算機的証明を生成することによる、二重支払い問題を解決するシステム
(英語はSatoshi Nakamoto, “Bitcoin: A Peer-to-Peer Electronic Cash System”より引用、日本語訳は松尾ほか『ブロックチェーン技術の未解決問題』より、崎村夏彦氏の翻訳を引用)
Satoshi Paperでは、さまざまな技術的実現方法とその自己評価が書かれているが、基本的には上記の表現を超えたことについては、何も主張していない。つまり、ビットコインは、「信頼できる第三者(Trusted Third Party)の存在を仮定しない二重支払いを防止するPayment(支払い)システム」だ。これ以上でも、これ以下でもない。この表現は、極めて注意深く選ばれている。提案技術を説明する単語として、なぜPaymentという単語が選ばれているかについては、後述する。
Satoshi Paperには、そもそも交換所、あるいは販売所のようなステークホルダーの存在は記述されていない。つまり、あくまでビットコインのやりとりだけで全てが完結する、という世界においてのみ、この仕組みが二重支払いのないPaymentとして機能する、という主張しかしておらず、それ以外のことは書かれていない。言い方を変えれば、交換所や販売所を通じてフィアット通貨に交換できる世界は、想定外であり、そのような適用をした際の技術の確かさについては、何も言及されていない。つまり、そのような設定にビットコインのプロトコルを適用する場合、リスクがどのくらいあるのかを示していないのである。
また、これもSatoshi Paperに明示的には書かれていないが、鍵管理は当然正しく個人によって行われるという前提を置いている。私たちのような暗号プロトコルの設計と安全性評価の研究を行う人たちにとっては、鍵管理が正しく行われることは前提であり、そのことを論文には敢えて書かない。ただし、そのような暗黙の背景を知らない人にとっては、書かれていないからその仕組みを実装しない、ということは発生し得る。SSL/TLSで起きている多くの実装からくる脆弱性も、IETF(Internet Engineering Task Force)のRFC(Request for Comments)の記述の曖昧さから来ることがある。ブロックチェーンにおいては、暗号技術を用い、暗号鍵(秘密鍵)を用いているので、当然十分な鍵管理をする必要がある。ブロックチェーンにおいてどのような鍵管理が必要かという標準は現時点では存在しないが、NIST SP800–57に書かれている一般的な鍵管理の考え方、鍵のライフサイクルマネジメント、運用、技術などは、現時点でも穴があくほど読んでおく必要はある。ハードウエアのウォレットを使うにしても、暗号処理ができるハードウエアの認証制度がある。日本ではJCMVP(暗号モジュール試験及び認証制度)と呼ばれるものだ。単にホットウォレットとコールドウォレットの使い分けや、ハードウォレットや、マルチシグという個別の技術の議論をするのではなく、鍵管理全体の考え方の整理が必要だ。その際にまずは既存の基準を利用しその上で、ブロックチェーンに特化して追加で必要な要件について、改めて標準を考える必要があるだろう。
注意すべきは、鍵管理が必要だということは、管理対象のマシンやデバイスがサイバー攻撃に晒されたとしても耐えられるようにしておく、ということで、これは取引所や販売所であっても、手元のPCであっても同じだ。つまり、本来のSatoshiの思想を実現する際に、自己の秘密鍵を手元におくのであれば、そのデバイスについて厳重なサイバーセキュリティ対策、策が一般市民にも求められる、ということを意味する。このコストと負担についてはSatoshi Paperには書かれていないが、必ず認識する必要がある。
Satoshi Paperが提案しているものは、Payment(支払い)Systemに過ぎないと書いた。ここで、Payment(支払い)とSettlement(決済)の違いについて少し考えたい。この2つは注意深くないと混同されがちだが、微妙に違う。乱暴な表現になるが、Paymentは価値の移動に関する指示のことであり、その価値の移動を完了させる行為がSettlementである。現金をやり取りする場合には、PaymentとSettlementは同時に発生するし、銀行を通じて送金を行う場合には、送金の指示を振込依頼という形で行い、その実行を銀行間のネットワークで行う。
ビットコインのプロトコルを注意深くみると、ブロックに書かれる情報は単に支払い指示の情報が、時間の順序に沿って蓄積されているにすぎない。これが、Satoshiが、Payment Systemという単語を選んだ理由であると考えられる。もし世界の全てのやりとりがビットコインの交換だけでやりとりできるなら、支払い指示の時系列的蓄積だけであっても、それが後から覆る可能性がほとんどなくなればSettleしたのと同じ効果があるという認識を持つことは可能である。ただし、現在のところ、現実の価値のやりとりをビットコインだけで全て完結させることはできず、現実世界で使っている円やドルといったフィアット通貨との接点を持つ必要がある。むしろ、多くの人や国家は、フィアット通貨に戻す形でのSettlementを事実上必要としている。しかし、ビットコインプロトコルには、フィアット通貨でのSettlementの機能は存在しないので、必然的にビットコインの世界の外側にSettlementの機能を追加で持つ必要がある。これが、交換所や販売所の正体である。
ビットコインのプロトコル仕様上、ブロックの合意が覆る確率が0%に収束することはなく、ごくわずかな確率であっても後で覆る可能性はある。また、暗号技術そのものや、鍵管理の問題で、Payment部分での問題が生じる可能性がある。そして全ての参加者に運用コストがかかる。そういった問題はあるもののPaymentの部分で、Trusted Third Partyをなくして、公開検証できるようにすることがビットコインのブロックチェーンが主張していることだ。その意味で、SatoshiがPaymentという点に注意深く集中したことは、深く認識すべきことである。
なお、Paperの中に提案技術を説明する単語としてCurrencyは使われていない。つまり、ビットコインをCryptocurrency、あるいは日本の一部で使われているVirtual Currencyとして紹介するのは、元のSatoshi Paperの趣旨には合致しない。一方で、PaperのタイトルにCashという単語が使われている。これが、多くの人がSatoshi Paperで主張していること以上のことを期待するという誤解の原因になっていると考えられる。しかし、Satoshi Paperのトラストモデルを考えた時、全てのやりとりがビットコインのみで行われる、つまりその系の中で全ての物事が全て完結するのであれば、Cashとして考えてもいいという思想が少しにじみ出ていると言える。ただし、この点についても、円やドルなどのフィアット通貨との交換については、やはり少しも主張されていないことには注意が必要である。
Satoshi Paperが示したものをもう少し深く考えたい。これは、ブロックチェーンの大きなメリットとして喧伝されている「非中央集権」。Satoshiの表現を借りるとWithout Trusted Third Partyの部分である。もちろんブロックチェーンに魅力を感じている人にとっては、重要な性質だ。しかし、物事をどこまで非中央集権的にできるか、という主張として、Satoshiが示した世界の境界線を考えることは重要だ。
SatoshiのPaperは、二重支払いの防止とPaymentの範囲であれば、Without Trusted Third Partyでもうまく回るという主張をしており、ここがSatoshiのPaperの境界線だ。しかし、そこから一歩足を踏み出したらどうなるかについては何も書かれていない。ここは大きなポイントだ。先に述べたように、交換所や販売所は、明らかにこの世界の外側だ。また、SatoshiのPaperが主張していることは、「『Paymentの記録の帳簿を更新すること』というビジネスロジックに限定すれば、Without Trusted Third Partyでもうまくいく」ということにすぎない。つまり、それ以外のビジネスロジックは、やはりSatoshiの世界の外側である。Satoshiが示したのは「Paymentのデータの蓄積を正しく更新する」という演算に対するTrustであり、それ以外のプロセスや、ビジネスが正しく遂行されるという意味でのTrustとCredit(Trustとの微妙なニュアンスの違いがある)については何も保証されていない。
多くのブロックチェーンのプロジェクトは、Satoshiの世界の中では何が達成され、またその世界の中を安全に保つのにはどのような努力が必要であり、さらにSatoshiの世界の外側は全くもって何の検証もない危険極まりない世界である、という区別がついていないように見える。ブロックチェーンを利用していろいろなイノベーションが起こることを期待し、日々研究を行っているが、確認されている境界線はどこで、自分はその壁の内側にいるのか、外側にいるのか。外側だとすると、Satoshiの言及がなかった部分について、しっかり安全性が担保できているのか、極めて注意深くなる必要がある。
次のページへ続く>>トラストモデルの創造への挑戦