Satoshiが注意深く設定した世界の境界線

ブロックチェーンシステムのセキュリティの前提知識

Shin'ichiro Matsuo
21 min readFeb 4, 2018

2度のインシデントが示す安全なシステムへの理解不足

勤勉な国民性を持ち、システムの運用を行わせれば確実に仕事をこなすことで世界的にも知られている日本において、Mt. Gox事件に続く、2回目の取引所における大きなインシデントが発生した。筆者は、以前より、日経IT Proの連載「ブロックチェーンは本当に世界を変えるのか」(大幅加筆をして書籍『ブロックチェーン技術の未解決問題』として出版)において、ブロックチェーンを用いたシステムにおけるセキュリティ確保の難しさを解説し、スタンフォード大学で行われたブロックチェーンのセキュリティに関するトップの会議であるBlockchain Protocol Analysis and Security Engineering 2017 (BPASE 2017)IEEE Security & Pricvacy on the Blockhcain(IEEE S&B) 2017Workshop on Privacy, Security, Trust & Blockchain, 1st Scaling Bitcoin 2015 Montreal、形式検証で著名な学会であるMEMOCODE/FMCAD2017などでブロックチェーンを用いたシステムのセキュリティ確保のための発表や招待チュートリアルを行ってきた。

今回のコインチェック事件の発生メカニズムについてはまだ解明されていないが、鍵管理を含む暗号システムの運用では基本的なところに瑕疵があったとされている。しかし、本質的には、ブロックチェーン事業者の中にさえ、ブロックチェーンの技術が何を実現しようとしていて、何が実現できていないのか、というシステムのセキュリティを考える上での前提条件に関する理解が欠如している会社があるのではないかと考えられる。また、利用者側にそういう情報が与えられることもない。それにもかかわらず、安全性を謳う広告が存在するとすると、それ自身がそもそもビジネスを行うのに不適格であるといえる。そこで、本稿では、ブロックチェーンのセキュリティに対する理解を深めるために、ブロックチェーンが達成しようとしていることは何で、スコープ外なのはどこなのか、という点を述べる。

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では、様々な技術的実現方法とその自己評価が書かれているが、基本的には上記の表現を超えたことについては、何も主張していない。つまり、Bitcoinは、Trusted Third Partyの存在を仮定しない二重支払いを防止するPayment(支払い)システムだ。これ以上でも、これ以下でもない。この表現は、極めて注意深く選ばれている。提案技術を説明する単語として、なぜPaymentという単語が選ばれているかについては、後述する。

Satoshi Paperには、そもそも交換所、あるいは販売所のようなステークホルダーの存在は記述されていない。つまり、あくまでBitcoinのやりとりだけで全てが完結する、という世界においてのみ、この仕組みが二重支払いのないPaymentとして機能する、という主張しかしていない。それ以外のことは書かれていない。言い方を変えれば、交換所や販売所を通じてフィアット通貨に交換できる世界は、想定外であり、そのような適用をした際の技術の確かさについては、何も言及していない。つまり、そのような設定にBitcoinのプロトコルを適用する場合、リスクがどのくらいあるのかを示していないのである。

また、これもSatoshi Paperに明示的には書かれていないが、鍵管理は当然正しく個人によって行われるという前提を置いている。私たちのような暗号プロトコルの設計と安全性評価の研究を行う人たちにとっては、鍵管理が正しく行われることは前提であり、そのことを論文には敢えて書かない。ただし、よくありがちなことであるが、そのような暗黙の背景を知らない人にとっては、書かれていないからその仕組みを実装しない、ということは発生し得る。SSL/TLSで起きている多くの実装からくる脆弱性も、IETFのRFCの記述の曖昧さから来ることがある。ブロックチェーンにおいては、暗号技術を用い、暗号鍵(秘密鍵)を用いているので、当然十分な鍵管理をする必要がある。ブロックチェーンにおいてどのような鍵管理が必要かという標準は現時点では存在しないが、NIST SP800–57に書かれている一般的な鍵管理の考え方、鍵のライフサイクルマネジメント、運用、技術などは、現時点でも穴があくほど読んでおく必要はある。ハードウエアのウォレットを使うにしても、暗号処理ができるハードウエアの認証制度がある。日本ではJCMVPと呼ばれるものだ。単にホットウォレットとコールドウォレットの使い分けや、ハードウォレットや、マルチシグという個別の技術だけやっていればいいという議論をするのではなく、すでに存在する体系を元に鍵管理全体の考え方の整理が必要だ。そうでないと、個別の技術だけやっていれはいいという矮小化した話になりかねない。その意味で、少なくとも、そういった既存の基準を利用していくことは必要だ。その上で、ブロックチェーンに特化して追加で必要な要件については、改めて標準を考える必要があるだろう。

注意すべきは、鍵管理が必要だということは、管理対象のマシンやデバイスがサイバー攻撃に晒されたとしても耐えられるようにしておく、ということに相当し、これは取引所や販売所であっても、手元のPCであっても同じだ。つまり、本来のSatoshiの思想を実現する際に、自己の秘密鍵を手元におくのであれば、そのデバイスについてサイバーセキュリティ対策、そして脆弱性を持ったソフトウエアがインストールされていないようにするなどの対策を含めて、厳重な対策が一般市民にも求められる、ということを意味する。このコストと負担についてはSatoshi Paperには書かれていないが、必ず認識する必要がある。

PaymentとSettlement

Satoshi Paperが提案しているものは、Payment(支払い)Systemに過ぎないと書いた。ここで、Payment(支払い)とSettlement(決済)の違いについて少し考えたい。この2つは注意深くないと混同されがちだが、微妙に違う。乱暴な表現になるが、Paymentは価値の移動に関する指示のことであり、その価値の移動を完了させる行為がSettlementである。現金をやり取りする場合には、PaymentとSettlmentは同時に発生するし、銀行を通じて送金を行う場合には、送金の指示を振込依頼という形で行い、その実行を銀行間のネットワークで行う。

Bitcoinのプロトコルを注意深くみると、ブロックに書かれる情報は単に支払い指示の情報が、時間の順序に沿って蓄積されているにすぎない。これが、Satoshiが、Payment Systemという単語を選んだ理由であると考えられる。もし世界の全てのやりとりがBitcoinの交換だけでやりとりできるのであれば、支払い指示の時系列的蓄積だけであっても、それが後から覆る可能性がほとんどなくなればSettleしたのと同じ効果があるという認識を持つことは可能である。ただし、現在のところ、現実の価値のやりとりをBitcoinだけで全て完結させることはできず、どうしても現実世界で使っている円やドルのフィアット通貨との接点を持たないといけない。むしろ、多くの人や国家は、フィアット通貨に戻す形でのSettlementを事実上必要としている。しかし、Bitcoinプロトコルには、フィアット通貨でのSettlementの機能は存在しないから、必然的にBitcoinの世界の外側にSettlementの機能を追加で持つ必要がある。これが、交換所や販売所の正体である。

Bitcoinのプロトコル仕様上、ブロックの合意が覆る確率が0%に収束することはなく、ごくわずかな確率でも後で覆る可能性がある。また、暗号技術そのものや、鍵管理の問題でも、Paymentの部分で問題が生じる可能性がある。前述の通り、全ての参加者に運用コストがかかる。それでも、Paymentの部分で、Trusted Third Partyをなくして、公開検証できるようにできることがBitcoinのブロックチェーンが主張していることだ。その意味で、SatoshiがPaymentという点に注意深く集中したことは、深く認識すべきことである。

なお、Paperの中に提案技術を説明する単語としてCurrencyは使われていない。つまり、BitcoinをCryptocurrency、あるいは日本で一部で使われているVirtual Currencyとして紹介するのは、元のSatoshi Paperの趣旨には合致しない。一方で、PaperのタイトルにCashという単語が使われている。これが、多くの人がSatoshi Paperで主張していること以上を期待するという誤解を抱かせている原因にはなっていると考えられる。しかし、Satoshi Paperのトラストモデルを考えた時、全てのやりとりがBitcoinのみで行われる、つまりその系の中で全ての物事が全て完結するのであれば、Cashとして考えてもいいという思想が少しにじみ出ていると言える。ただし、この点についても、円やドルなどのフィアット通貨との交換については、やはり少しも主張されていないことには注意が必要である。

Without Trusted Third Partyが保たれる境界線

Satoshi Paperが示したものをもう少し深く考えたい。これは、ブロックチェーンの大きなメリットとして喧伝されている「非中央集権」、Satoshiの表現を借りるとWithout Trusted Third Partyの部分である。もちろんブロックチェーンに魅力を感じている人にとっては、重要な性質だ。しかし、物事をどこまで非中央集権的にできるか、という主張として、Satoshiが示した世界の境界線を考えることは重要だ。

つまり、SatoshiのPaperは、二重支払いの防止とPaymentの範囲であれば、Without Trusted Third Partyでもうまく回る、という世界の境界線を主張している。しかし、そこから一歩足を踏み出したらどうなるか、については何も主張していない。ここは大きなポイントだ。先に述べたように、交換所や販売所は、明らかにSatoshiの世界のさらに外側だ。また、SatoshiのPaperが主張していることは、「Paymentの記録の帳簿を更新すること」というビジネスロジックに限定すれば、Without Trusted Third Partyでもうまくいくということにすぎない。つまり、それ以外のビジネスロジックは、やはりSatoshiの世界の外側である。Satoshiが示したのは「Paymentのデータの蓄積を正しく更新する」という演算に対するTrustであり、それ以外のプロセスだったり、ビジネスが正しく遂行されるという意味でのTrustとCredit(Trustとの微妙なニュアンスの違いがある)は何も保証はない。

多くのブロックチェーンのプロジェクトは、Satoshiの世界の中では何が達成され、またその世界の中を安全に保つのにはどのような努力が必要であり、さらにSatoshiの世界の外側は全く持って何の検証もない危険極まりない世界である、という区別がついていないように見える。ブロックチェーンを利用していろいろなイノベーションが起こることを期待して、日々研究を行っているが、一方で、確認されている境界線はどこで、自分はその壁の内側にいるのか、外側にいるのか、外側にいるとすると、Satoshiが言っていなかった部分について、しっかり安全性が担保できているのかについて、常に、極めて注意深くなる必要がある。

トラストモデルの創造への挑戦

「今回の問題は取引所の問題で、ブロックチェーンの安全性とは関係ない」という主張も頻繁に目にする。技術的にみれば、このステートメントはある意味正しいし、そのようにステークホルダーを疎結合にすることには多大なメリットがあるので、私たちは様々な研究と標準化に挑んでいる。しかし、ビジネスを絡めると、この主張には疑義が生じる。これは、BitcoinのパブリックブロックチェーンプロトコルはPaymentの情報が正しく処理されることについてはある程度の確からしさを提供しているものの、現実の世界のSettlementをするには、取引所などのSettlementの機能をもつ外部機関を必要としているからである。また、多くのブロックチェーンプロジェクトは、事実上取引所が存在することで、マネタイズしビジネスとして成立している。逆に取引所が存在しない世界だと、現在のような多くのプロジェクトはそもそもスタートしないかもしれない。もし、現実の世界とのインタフェースを持ちながらビジネスエコシステムを作りたいのであれば、ブロックチェーンエコシステムの安全性の議論として一体として考えないといけない。マネタイズの観点で、「現在の」ブロックチェーンは単独では生きられないのだ。現時点で、セキュリティの観点でブロックチェーンを切り離したいのであれば、取引所無しに全ての活動(税金から、警察や自衛隊の経費、全ての公的活動など、エコシステムを維持する全ての費用)を、ブロックチェーンで管理し、その暗号通貨で賄う必要がある。将来的には、そういう日は来る可能性はあるが、現在の技術とトラストモデルの設計ではそうなっていない。

つまりは、ブロックチェーンでマネタイズやビジネスをするには、境界線の内側と外側の両方で、システムに関わっている人たちのうち、Aさんは正直に行動することを仮定して、Bさんは悪いことをする可能性があるという想定を作ること、つまりトラストモデルの議論が最初に起こらないといけない。そうでないと、システムに参加する登場人物とプロトコルが規定できず、どのようなセキュリティが必要か、その設計をすることもできない。先に、Bitcoinが示したWithout Trusted Third Partyの世界の話を書いたが、Satoshiは、BitcoinのPaperにおいて、その世界の外側で起こることについては何も主張していない。つまり、その境界線を踏み外した瞬間に、その試みの正当性を主張する目的でSatoshiのPaperを立脚点にすることはできなくなる。参考にすることはできるかもしれないが、まったく新しいトラストモデルの議論を始める必要がある。

最終的には、SatoshiのPaperが示す理想を進め、PKIにおける認証局のように誰かが正しい運用をしていることに立脚しないとシステム全体がトラストできないというアプリケーション領域が減り、単一障害点がないようなWithout Trusted Third Partyであるトラストモデルで表現できる対象がPaymentからより広範になり、その結果として様々なアプリケーションで取引所のような組織に信頼の仮定を置かなくても良い世界に移行することが、ブロックチェーンのエコシステムの目指すところだ。そのために境界線を、注意深く、徐々に広げる必要がある。現実には、アプリケーションによって、どこまでWithout Trusted Third Partyの世界で処理を行うことができて、どの主体にはある種のtrustが仮定されるかという色合いがまちまちだ。そのため、パブリックブロックチェーンによってもたらされるイノベーションの民主化を考えるとき、様々なトラストモデルに対応できるようにパブリックブロックチェーンのレイヤーを設計しながら、2008年にSatoshiが示したトラストモデルの境界線を、数学的に注意深く広げていくという試みをしていく必要がある。2016年に起きたThe DAO事件は、Ethereum上のプラットフォームであるThe DAOが、境界線を広げる際に注意が足りていないことから起こり、50億円以上が流出する寸前まで行った。取引所や販売所がある現在のBitcoinや多くの暗号通貨は、そもそもSatoshiの世界の境界線を逸脱している。その上で、いろんな新たなイノベーションの想像をしても、注意深く境界線を広げたことにはなっていない。これから必要なのは、トラストモデルとして、注意深くかつ、少しずつ境界線を広げていくという作業である。Ethereumのチームもその努力をしているし、BPASE2018ではBitcoinのブロックチェーンにおいても安全に境界線を広げるための処理環境に関する発表が行われている。

ブロックチェーン エコシステムを考えるときに肝に命じないといけないこと

このことはあまり知られていないが、SatoshiのPaperは、いわゆるピアレビュー(査読)のプロセスを経ていない。つまり、その正当性について検証を経た上で公開されているわけではない。世界中の研究者が後追いで、そのPaperが意味しているところを検証しているところだ。現実には、SatoshiのPaperの技術内容が本当に安全であるかどうかの検証は済んでいない。これは、Satoshiの世界の内側の話だ。

その上で、現実のブロックチェーンのビジネスやエコシステムのほとんどは、確認されている境界線の外側に足を踏み出している。しかし、もし一般市民のお金を、寄付による実験ではなく、ビジネスとして1円でも扱うようなシステムを作りたいのであれば、境界線をはみ出た部分についての注意深い検証が不可欠だ。これは、技術だけでなく、熟練したエンジニアとセキュリティのプロのチームによる運用も必要である。そして、その熟練した技能を持っている人は限られていて、高待遇でも見つかるかどうかわからないことにも注意が必要だ。

技術面だけを考えても、ビジネスアイディア、思想、そして情熱では安全性は担保できない。ブロックチェーン上のビジネスはプログラムコードとして実行される以上、最終的には情報数学の議論に立脚しないといけない。そしてその議論は非常に高度であり、従来のWeb系の開発とは全く異なることへの深い理解が必要だ。暗号とセキュリティとお金を扱うシステムへの覚悟が必要である。

私が住んでいるシリコンバレーを中心に、Fail Fastという早く失敗をして、より良いサービスを見つけていくという文化がある。これはイノベーションには非常に有効な手段であり、特にユーザー体験(UX)を向上させるのに非常に適した方法だ。しかし、お金が絡んだブロックチェーンに関しては、その「ノリ」だけでは失敗する可能性は高い。セキュリティのエキスパートを加え、技術が保証している部分と、保証していない部分に深い注意を払うべきだ。それができないのであれば、寄付による実験にとどめるべきである。

「暗号通貨(仮想通貨)は終わるが、ブロックチェーンは、今後技術開発が進み有望だ」という主張も見られる。この主張が正しいかはわからないし、筆者は暗号通貨をはじめとしたブロックチェーンの将来のために仕事をしているが、「今後技術開発が進み」の部分は、これまで述べたように極めて地道で時間がかかる研究開発であり、ブロックチェーンスタートアップに信じられない額の投資が集まる一方で、このような地道な作業を行う人に資金がほとんど行っていないのが現状だ。そのような地道な研究をする人は、場合によっては(非中央集権の思想とはずれるかもしれない)公的な資金で雇われる大学の教員や研究者であるが、その人たちに今後のブロックチェーンの将来が託されている割に、進展した技術はどこからか無料で湧いてくるように考えている人がほとんどだとすると、おそらくブロックチェーンが本当に社会基盤となることはないだろう。冒頭に紹介したBPASEの2018年の会議で筆者はプログラム委員を務めたが、奇しくもコインチェック事件が起きた同じタイミングでスタンフォード大学で行われた。300人の会場に600人の申し込みがあるほどの真剣さで世界中からトップの技術者と研究者が集まり、セキュリティの問題が活発に議論されたが、日本人で参加したのは私を含めて3人で、日本でブロックチェーン事業を行うセキュリティ上責任がある企業からの参加は全くないという、寂しくもあり、タイミングを考えると皮肉な状況だった。地道だが、今後いかに本質的なインフラ整備と維持に関わる全ての人に有益なエコシステムを作れるかを、コインチェックのインシデントが発生した今こそ考えるべき時なのではないだろうか。

謝辞

本記事の執筆にあたりコメントいただいた、上原哲太郎様、崎村夏彦様、鈴木茂哉様に感謝いたします。

著者

松尾真一郎(Shin’ichiro Matsuo)

Georgetown University, Department of Computer Science, Research Professor. Blockchain Technology and Ecosystem Design (B-TED) Research Center, Director.

シリコンバレーを拠点として活動する暗号と情報セキュリティの研究者。 アカデミアの立場からブロックチェーン技術を成熟させる活動を行い、ブロックチェーンに関するセキュリティを中心とした研究成果を発表している。ジョージタウン大学Department of Computer Scienceの研究教授として、Blockchain Technology and Ecosytem Design(B-TED)研究センターのDirectorを務めている。日本では、東京大学、慶應義塾大学を中心としたブロックチェーンに関する中立な産学連携のためのBASEアライアンスを立ち上げ、東京大学生産技術研究所・リサーチフェロー、慶應義塾大学大学院政策・メディア研究科特任教授としても活動中。ブロックチェーン専門学術誌LEDGER誌エディタ、IEEE, ACM, W3C, BPASE等のブロックチェーン学術会議やScaling Bitcoinのプログラム委員を務める。2018年10月6日、7日に東京で行われるScaling Bitcoin 2018 Tokyoの共同プログラム委員長。ブロックチェーンの中立な学術研究国際ネットワークBSafe.networkプロジェクト共同設立者。ISO TC307におけるセキュリティに関するTechnical Reportプロジェクトのリーダー・エディタ、またおよびセキュリティ分野の国際リエゾンを務める。過去にはISO/IEC JTC1における暗号技術の標準化の日本National Bodyの代表、電子政府推奨暗号を定める暗号技術検討会構成員を歴任。

--

--