仮想通貨取引所に代表される,ブロックチェーン関連ビジネスが盛り上がりを見せている一方で,セキュリティに問題があり,被害を受けるケースも増えています。ブロックチェーンのセキュリティでは「秘密鍵(注1)をいかに守るか」が重要なため,複数の署名を分散管理する「マルチシグ」や秘密鍵をオフラインで管理する「コールドウォレット」を採用すべきと言われますが,単に採用すれば安心という論調は間違いです。ブロックチェーンのセキュリティはこれらがすべてではありません。ブロックチェーンを活用したシステムを開発する場合は,攻撃者視点に立ち,多層防御を取り入れたうえで,アーキテクチャや運用設計のリスクベースによる評価が必要です。注1)秘密鍵は,公開鍵暗号の一種である楕円曲線暗号によって生成された16進数の数値です。対になる公開鍵も生成されます。秘密鍵はたいていの場合,専用のソフトウェアによって自動生成されます。マルチシグを採用する際の注意点まずは,仮想通貨で送金する流れを説明します。仮想通貨の所有権は「秘密鍵」の所有で証明されます。自身の仮想通貨を送金する場合は,秘密鍵で送金トランザクションに署名を付与することで可能になります。ウォレットとは秘密鍵を格納する箱のようなもので,オンライン環境にあるものを「ホットウォレット⁠」⁠,オフライン環境にあるものを「コールドウォレット」と呼びます。ボブからアリスにビットコインを送金する場合のイメージは図1のとおりです。送金時のウォレットの利用イメージ1分散台帳上で,ボブに所有権があるビットコインに錠がかけられている。所有権をアリスへ移す場合は,ボブの秘密鍵で解除する2所有権を移動する際に,アリスの秘密鍵のみが解除できる錠をかけるマルチシグとは上記のように所有権の移動に複数の秘密鍵を必要とする方式で,一般的にセキュリティレベルが高いです。マルチシグでは,N個の秘密鍵のうち,M個の秘密鍵が必要な場合は「M-of-N」と表現され,1つの秘密鍵が盗まれても「M-of-N」のM個の秘密鍵が盗まれなければ安全です。同一サーバ上にM個の秘密鍵が保管されていると,サーバが乗っ取られるとすべての秘密鍵が盗まれてしまいます。分散して保管させているのが同一ネットワークセグメント上のサーバである場合,1つのサーバが乗っ取られてしまえば,そこを起点に他のサーバも攻撃され,結局はM個の秘密鍵が窃取されてしまう可能性も高くなります。サーバは攻撃される危険性があるという前提に立ち,秘密鍵はネットワークセグメントレベルで分散しておくなどの対策が望ましいです。内部犯行にも留意しなければなりません。適切に分散しても,担当者がM個の秘密鍵すべてにアクセス可能では問題です。そのため運用設計も重要になります。ブロックチェーンは一定の匿名性が保たれていることから,内部犯行であっても足のつく可能性はそれほど高くなく,内部犯行の敷居も低いと考えたほうがよいのです。コールドウォレット採用時の注意点コールドウォレットには秘密鍵を紙に印刷した「ペーパーウォレット」や,秘密鍵を専用のハードウェアに格納する「ハードウェアウォレット」と呼ばれるものがあります。コールドウォレットを利用する場合は外部犯行の難易度は高くなりますが,内部の犯行はそれほど難しくありません。コールドウォレットにアクセスできる担当者は不正送金が可能だからです。そのため,コールドウォレットを採用する場合においても,マルチシグを組み合わせて分散して保管したり,運用レベルで不正送金対策を行うなどの対策が望まれます。鍵管理で気にすべきことは他にもあります。ウォレットには「決定性ウォレット」と呼ばれる,1つのシードから複数の秘密鍵を生成できる方式があります。ハードウェアウォレットの場合は一般的に紛失時や故障時に備えて当該シードのインプットとなる「ニモニックコード」と呼ばれるバックアップを控えておくことで秘密鍵が復元可能となります。そのため,ニモニックコードに関してもコールドウォレットと同様のセキュリティが求められるのです。ハードウェアウォレットは,秘密鍵が専用のハードウェアに格納されているため安全という論調が世間ではありますが,ハードウェアウォレットを接続するPC端末がオンライン環境にある場合は注意が必要です。図2は,ハードウェアウォレットであるTrezorのPC上での送金用の操作画面ですが,コピーした送金先アドレスを画面にペーストする際に,マルウェアによってクリップボード内のアドレスを攻撃者のアドレスに書き換えられれば,秘密鍵は盗まれずとも不正送金されるリスクはあるためです。実際にそのようなマルウェアは観測されています。ハードウェアウォレットが生成して,画面に表示されるアドレスを攻撃者のアドレスに変更するようなマルウェアの場合も不正送金に繋がります。仮想通貨取引所に保管している仮想通貨を,自身のTrezor上のアドレス(図3)をコピーして,取引所のサイトにペーストして送金した場合,攻撃者に送金してしまうことになります。自身のTrezor上のアドレス重要なのは鍵管理だけではない世間では,「⁠いかにして鍵を守るか?」という点にフォーカスされることが多いです。たしかにブロックチェーンにおいて,もっとも気にすべきは鍵管理であると筆者も考えます。鍵管理の観点で堅牢だから大丈夫というのは間違いです。ホットウォレットの場合は,提供するサービスを実現するためのWebアプリケーション,サーバ,ネットワークなどを含め,全体を俯瞰したうえで堅牢性を担保しなければなりません。秘密鍵が盗まれずとも,ここまで説明したとおり不正送金などに繋がる可能性はあるためです。ブロックチェーンにはプラットフォームごとに公式クライアントソフトがあります。Core」と呼ばれる公式クライアントソフトがあります。これらは一般的に,サーバ上で可動し,コマンドを叩くことで利用しますが,JSON-RPCと呼ばれるHTTPベースのサービスが提供されているものもあり,HTTPで命令を送ることも可能です。JSON-RPCは一般的に,外部に公開する用途ではなく,ローカルホストや想定されたIPからのアクセスのみに制限すべきなのです。経由の命令で不正送金を許してしまう可能性があります。ブロックチェーンのJSON-RPCポートを探索する動きは見られていて,公開した場合は攻撃されると思ったほうがよいでしょう。ほかにも,サーバに侵入して,すべての送金先を攻撃者のアドレスに変更するように公式クライアントを改ざんすれば,秘密鍵を窃取できなくても不正送金は成立してしまいます。「マルチシグを採用している」「⁠コールドウォレットを採用している」といった単一の側面だけ見て,セキュリティを評価するのは極めて危険なのです。鍵管理周りはプラクティスも整備されてきていて,そのプラクティスに乗るべきだと考えますが,それが意図する背景や本質を理解しなければセキュリティレベルは上がりません。提供するサービスのシステムやビジネス要件に応じてアーキテクチャや運用は変わりますが,全体を俯瞰したうえで,攻撃者視点に立ち,リスクベースで評価する必要がある点を強調しておきます。鍵管理に加え,従来のアプリケーション同様にリスク分析やセキュリティ対策は必要なのです。本書は,最初に構築されたブロックチェーンネットワークである「ビットコインネットワーク」の解説書です。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。書店・販売店の皆様へデベロッパアドミニストレータWEB+デザインライフスタイルサイエンスニュース&レポートメールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。