2度のインシデントが示す安全なシステムへの理解不足
勤勉な国民性を持ち、システムの運用を行わせれば確実に仕事をこなす日本において、マウントゴックス(Mt. Gox)事件に続く、2度目の取引所における大きなインシデントが発生した。筆者は、以前より、日経IT Proの連載「ブロックチェーンは本当に世界を変えるのか」(大幅加筆をして書籍『ブロックチェーン技術の未解決問題』として出版)において、ブロックチェーンを用いたシステムにおけるセキュリティ確保の難しさを解説し、スタンフォード大学で行われたブロックチェーンのセキュリティに関するトップの会議であるBlockchain Protocol Analysis and Security Engineering 2017 (BPASE 2017)などでブロックチェーンを用いたシステムのセキュリティ確保のための発表や招待チュートリアルを行ってきた。
今回のコインチェック事件の発生メカニズムについてはまだ解明されていないが、鍵管理を含む暗号システムの運用では基本的なところに瑕疵があったとされている。しかし、本質的には、ブロックチェーン事業者の中にさえ、ブロックチェーンの技術が何を実現しようとしていて、何が実現できていないのか、というシステムのセキュリティを考える上での前提条件に関する理解が欠如している会社があると考えられる。また、利用者側にそういう情報が与えられることもない。そこで、本稿では、ブロックチェーンのセキュリティに対する理解を深めるために、ブロックチェーンが達成しようとしていることは何で、そのスコープ外なのはどこなのか、という点を述べる。
Satoshi Paperが主張していることと、書かれていないこと
世の中の多くのパブリック・ブロックチェーン(以下、本稿での「ブロックチェーン」という記述はパブリック・ブロックチェーンのみを対象とする)をベースとしたプロジェクトは、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には書かれていないが、必ず認識する必要がある。
PaymentとSettlementは異なる
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として考えてもいいという思想が少しにじみ出ていると言える。ただし、この点についても、円やドルなどのフィアット通貨との交換については、やはり少しも主張されていないことには注意が必要である。
Without Trusted Third Partyが保たれる境界線
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の言及がなかった部分について、しっかり安全性が担保できているのか、極めて注意深くなる必要がある。
次のページへ続く>>トラストモデルの創造への挑戦
トラストモデルの創造への挑戦
「今回の問題は取引所の問題で、ブロックチェーンの安全性とは関係ない」という主張も頻繁に目にする。技術的にみれば、このステートメントはある意味正しいし、そのようにステークホルダーを疎結合にすることには多大なメリットがあるので、私たちはさまざまな研究と標準化に挑んでいる。しかし、ビジネスを絡めるとこの主張には疑義が生じる。つまり、現実の世界でSettlementをするには、取引所などのSettlementの機能をもつ外部機関を必要とするからである。また、多くのブロックチェーンプロジェクトは、事実上取引所が存在することで、マネタイズしビジネスとして成立している。逆に取引所が存在しない世界だと、現在のような多くのプロジェクトはそもそもスタートしないかもしれない。マネタイズの観点で、「現在の」ブロックチェーンは単独では生きられないのだ。
現時点で、セキュリティの観点でブロックチェーンを切り離したいのであれば、取引所無しに全ての活動(税金から、警察や自衛隊の経費、全ての公的活動など、エコシステムを維持する全ての費用)を、ブロックチェーンで管理し、その仮想通貨で賄う必要がある。将来的には、そういう日は来る可能性はあるが、現在の技術とトラストモデルの設計ではそうなっていない。
ブロックチェーンでマネタイズやビジネスをするには、境界線の内側と外側の両方で、システムに関わっている人たちのうち、Aさんは正直に行動することを仮定して、Bさんは悪いことをする可能性があるという想定を作ること、つまりトラストモデルの議論が最初に起こらないといけない。そうでないと、システムに参加する登場人物とプロトコルが規定できず、どのようなセキュリティが必要か、その設計をすることもできない。先に、ビットコインが示したWithout Trusted Third Partyの世界の話を書いたが、SatoshiはPaperにおいて、その世界の外側で起こることについては何も主張していない。つまり、その境界線を踏み外した瞬間に、その試みの正当性を主張する目的でSatoshiのPaperを立脚点にすることはできなくなる。参考にすることはできるかもしれないが、まったく新しいトラストモデルの議論を始める必要がある。
最終的には、SatoshiのPaperが示す理想を進め、非中央集権的なトラストモデルで実現できるアプリケーションの種類を増やすことがブロックチェーンによるエコシステムの目指すところだ。それは、PKIにおける認証局のように誰かが正しい運用をしていることに立脚するようなシステムではなく、Payment以外の多くのアプリケーションを単一障害点がないようなWithout Trusted Third Partyが実現できるようになることだ。そのために、Without Trusted Third Partyの境界線を、注意深く、徐々に広げる必要がある。
現実には、アプリケーションによって、どこまでWithout Trusted Third Partyの世界で処理を行うことができて、どの主体にはある種のtrustが仮定されるかという色合いがまちまちだ。そのため、ブロックチェーンによってもたらされるイノベーションの民主化を考えるとき、さまざまなトラストモデルに対応できるようにブロックチェーンのレイヤーを設計しながら、2008年にSatoshiが示したトラストモデルの境界線を、数学的に注意深く広げていくという試みをしていく必要がある。2016年に起きたThe DAO事件は、イーサリアム(Ethereum)上のプラットフォームであるThe DAOが、境界線を広げる際の注意不足から起こり、50億円以上が流出する寸前まで行った。取引所や販売所がある現在のビットコインや多くの暗号通貨は、そもそもSatoshiの世界の境界線を逸脱している。これから必要なのは、トラストモデルとして、注意深くかつ、少しずつ境界線を広げていくという作業である。イーサリアムのチームもその努力をしているし、BPASE2018ではビットコインのブロックチェーンにおいても安全に境界線を広げるための処理環境に関する発表が行われている。
チェーン エコシステムを考えるときに肝に命じないといけないこと
このことはあまり知られていないが、SatoshiのPaperは、いわゆるピアレビュー(査読)のプロセスを経ていない。つまり、その正当性について検証を経た上で公開されているわけではない。世界中の研究者が後追いで、そのPaperが意味しているところを検証しているところだ。現実には、SatoshiのPaperの技術内容が本当に安全であるかどうかの検証は済んでいない。これは、Satoshiの世界の内側の話だ。
その上で、現実のブロックチェーンのビジネスやエコシステムのほとんどは、確認されている境界線の外側に足を踏み出している。しかし、もし一般市民のお金を、寄付による実験ではなく、ビジネスとして1円でも扱うようなシステムを作りたいのであれば、境界線をはみ出た部分についての注意深い検証が不可欠だ。これは、技術だけでなく、熟練したエンジニアとセキュリティのプロのチームによる運用も必要である。そして、その熟練した技能を持っている人は限られていて、高待遇でも見つかるかどうかわからないことにも注意が必要だ。
技術面だけを考えても、ビジネスアイディア、思想、そして情熱では安全性は担保できない。ブロックチェーン上のビジネスはプログラムコードとして実行される以上、最終的には情報数学の議論に立脚しないといけない。そしてその議論は非常に高度であり、従来のWeb系の開発とは全く異なることへの深い理解が必要だ。暗号とセキュリティとお金を扱うシステムへの覚悟が必要である。
私が住んでいるシリコンバレーを中心に、Fail Fastという早く失敗をして、より良いサービスを見つけていくという文化がある。これはイノベーションには非常に有効な手段であり、特にユーザー体験(UX)を向上させるのに非常に適した方法だ。しかし、お金が絡んだブロックチェーンに関しては、その「ノリ」だけでは失敗する可能性は高い。セキュリティのエキスパートを加え、技術が保証している部分と、保証していない部分に深い注意を払うべきだ。それができないのであれば、寄付による実験にとどめるべきである。
「暗号通貨(仮想通貨)は終わるが、ブロックチェーンは、今後技術開発が進み有望だ」という主張も見られる。この主張が正しいかはわからないし、筆者は暗号通貨をはじめとしたブロックチェーンの将来のために仕事をしているが、「今後技術開発が進み」の部分は、これまで述べたように極めて地道で時間がかかる研究開発であり、ブロックチェーンスタートアップに信じられない額の投資が集まる一方で、このような地道な作業を行う人に資金がほとんど行っていないのが現状だ。そのような地道な研究をする人は、場合によっては(非中央集権の思想とはずれるかもしれない)公的な資金で雇われる大学の教員や研究者である。
進展した技術はどこからか無料で湧いてくるように考えている人がほとんどだとすると、おそらくブロックチェーンが本当に社会基盤となることはないだろう。冒頭に紹介したBPASEの2018年の会議で筆者はプログラム委員を務めたが、奇しくもコインチェック事件が起きた同じタイミングでスタンフォード大学で行われた。300人の会場に600人の申し込みがあるほどの真剣さで世界中からトップの技術者と研究者が集まり、セキュリティの問題が活発に議論されたが、日本人で参加したのは私を含めて3人で、日本でブロックチェーン事業を行うセキュリティ上責任がある企業からの参加は全くないという、寂しくもあり、タイミングを考えると皮肉な状況だった。地道だが、今後いかに本質的なインフラ整備と維持に関わる全ての人に有益なエコシステムを作れるかを、コインチェックのインシデントが発生した今こそ考えるべき時なのではないだろうか。
謝辞
本記事の執筆にあたりコメントいただいた、上原哲太郎様、崎村夏彦様、鈴木茂哉様に感謝いたします。