SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Developers Summit 2023 セッションレポート(AD)

知ってる? 暗号資産取引サービスの基本技術。アーキテクチャとセキュリティをコインチェックが解説

【9-C-7】暗号資産取引所のアーキテクチャとセキュリティ

  • このエントリーをはてなブックマークに追加

 知っているようで知らない、暗号資産取引サービス。エンジニアとして働くにはブロックチェーンの知識が必須? ブロックチェーンはセキュリティ強度が高い? そんなよくある疑問に、コインチェックのサイバーセキュリティ推進部部長、喜屋武慶大氏がブロックチェーンの基礎からアーキテクチャ、セキュリティ対策までを分かりやすく解説した。

  • このエントリーをはてなブックマークに追加

暗号資産の仕組みを語るうえで外せない、ブロックチェーンのおさらい

 コインチェックは、暗号資産取引サービスのほか、コインチェックで支払ったガス代の一部が暗号資産に還元される「Coincheckガス」や「Coincheckでんき」など、さまざまなサービスを展開する暗号資産交換業者だ。同社が2023年4月時点で取り扱う通貨は19種類。アプリダウンロード数(※)は540万を超え、2023年2月末時点の本人確認済み口座数は約178万、預かり資産額は2,926億円。同社はシステムを内製開発しており、約60名のエンジニアが運営を支えている。

※調査概要

  • 対象:国内の暗号資産取引アプリ
  • 期間:2019年1月〜2022年12月
  • データ協力:App Tweak

 そんな暗号資産取引サービスについて、いろいろ耳にするものの、よく分かっていないという人は案外多い。Developer Summitの講演に登壇したコインチェック、サイバーセキュリティ推進部部長の喜屋武慶大氏はそんな人たちに向けて、取引所を支える技術やアーキテクチャなどの基本を紐解き、さらには自身が専門とするセキュリティ対策について解説した。

コインチェック株式会社 サイバーセキュリティ推進部 部長 喜屋武慶大氏
コインチェック株式会社 サイバーセキュリティ推進部 部長 喜屋武慶大氏

 暗号資産取引サービスを理解するにあたって、まずは理解したいのがブロックチェーンだ。ブロックチェーンは、一定の条件に従ってひとつまたは複数の取引をまとめたものをブロックと呼称し、連続した次のブロックに前のブロックのハッシュ値を記録することで、複数のブロックをひとつのデータベースとして管理する技術だ。一連の取引を追うことができ、どのアドレスにどんな送金があったかが確実に分かり、高い透明性と耐改ざん性が特長だ。

ブロックチェーンの概要
ブロックチェーンの概要

 ブロックチェーン技術を用いた暗号資産には、Bitcoin、Ethereum、NEMなどさまざまな種類があり、採用されている技術や実装はそれぞれ異なる。たとえば、ブロックを生成して承認するコンセンサスアルゴリズムには、Proof of WorkやProof of Stakeなどがある。Proof of Workは、マイニングによって追加されるブロックが特定の条件を満たすことで、それが正式なブロックとして承認される仕組みだ。大量の計算を行うため、電力消費も大きいという特徴があり、ビットコインで採用されている。一方のProof of Stakeは、一定量以上の暗号資産をステーク(賭ける)することで、ステークした人の中からランダムにブロック生成できる人が選ばれる仕組み。選出されなかった人たちは、そのブロックが正しいかどうかを検証、承認する役割を担う。これはEthereum 2.0で採用されている。

暗号資産取引サービスのアーキテクチャと求められる技術とは

 続いて、喜屋武氏は暗号資産取引サービスのアーキテクチャについて説明した。

 基本となるアーキテクチャは大きく、オフチェーンとオンチェーンの2パターンに分けられる。ユーザーの暗号資産取引を直接ブロックチェーン上に記録するのが、オンチェーン。データベースなど別の場所に記録するのがオフチェーンだ。ちなみに、コインチェックではオフチェーンを採用している。

 「たとえばビットコインは約10分で1ブロックを生成し、理論上は1秒間に7トランザクションが処理できる。だが、Coincheckサービス内だけでも取引は秒間60件以上発生している。すべての取引をブロックチェーン上に書き込もうとしても間に合わない量だ。そのため、Coincheckサービス内で行う取引に関するトランザクションは同社データベース上に記録し、他取引所のアドレス間における取引はブロックチェーン上に記録している」(喜屋武氏)

 ユーザー向けのインターフェイスやデータベースなどの運用管理は、一般的なWebサービスと変わらない。コインチェックでは、バックエンドにRuby on Rails、フロントエンドにNuxt.js、インフラにAWSを利用しているという。全体のイメージは、下記の画面のとおりだ。Coincheckサービスから他取引所に送金するときは、コインチェックの署名システムでトランザクションに署名してから、ブロックチェーンネットワーク上にブロードキャストする。

暗号資産取引所のアーキテクチャ
暗号資産取引サービスのアーキテクチャ

 これらに加えて、暗号資産取引サービスのエンジニアはブロックチェーン固有の技術を習得することになる。そのひとつが、ノードの運用だ。ノードはブロックチェーンのブロックを管理するソフトウェアで、各チェーンで運用されているノードと同期して最新のブロックデータを取得したり、自社の発行したトランザクションを他ノードにブロードキャストしたりする役割を持つ。

 トランザクションやブロックのデータ構造は、ブロックチェーンによって異なる。暗号資産の署名やブロックチェーン上の入出金を正しく検知、処理するには、各ブロックチェーンやトランザクションデータの構造を踏まえて、どのユーザー宛の入金なのかを正確に判定する必要がある。他アドレスに送金する場合も同様で、正確に判定してもらうためのトランザクションを構築しなければならない。

取引所のセキュリティ強度は高い? 

 続いて、喜屋武氏はセキュリティに対する取り組みについて説明した。

 「ところで、ブロックチェーンはセキュリティが高いという話をよく耳にするが、実際はどうなのか」。喜屋武氏は誰もが聞いたことのあるフレーズで話を切り出す。

 喜屋武氏は、耐改ざん性ではセキュリティ強度が高いと言えるかもしれないと指摘。「過去に遡って改ざんするには、Proof of Workを採用していた場合は、そのブロックチェーン全体の半分以上の計算能力が必要で、Proof of Stakeではステークされた量の半分以上のトークンを攻撃者がステークする必要がある。まったくもって現実的ではない」。

 ただし、ブロックチェーンがソフトウェアである以上、脆弱性やバグがつきまとう。2016年6月、事業投資ファンド「The DAO」が資金の約3分の1を流出させる事件があった。「これはブロックチェーン上に実装されたソフトウェアにバグがあり、秘密鍵がなくても暗号資産を送金できてしまったために発生した。こうしたケースでは、取引所側がどんなに対策をしても、どうにもならない」。

 では、取引所としてできるセキュリティ対策は何か。

 1つは、下記にあげるような一般的な企業ITのセキュリティ対策だ。

  • 端末へのAV/EDR製品の導入でマルウェア感染を検知
  • CASBで通信内容をモニタリング
  • MDMで端末のセキュリティポリシーを適用
  • IDaaSを用いた認証/認可のポリシーの適用
  • 社内システムの管理者権限など運用ルールの策定

 「セキュリティベンダーの調査レポートをよく読むが、取引所への侵入手口の大半はソーシャルハッキングやスピアフィッシングとのこと。マルウェア感染した従業員の端末経由で社内ネットワークに侵入したあと、秘密鍵などを窃取する攻撃もあるという。ブロックチェーン関連の対策をする前に、端末や社内システムのセキュリティ対策を実施することが重要だ」(喜屋武氏)

 取引所のサービスにおけるセキュリティ対策も、一般的なWebサービスと同様の対策を実施する。

  • IAMの権限管理
  • Web Application Firewall
  • 脆弱性診断
  • 依存パッケージの脆弱性管理
  • DDoS対策
  • 送金・出勤時の認証
  • フィッシングサイトのテイクダウン

 なお、「暗号資産取引サービスでは秘密鍵を守れていれば安全という話も聞いたことがあるが、秘密鍵がなくても暗号資産を窃取する攻撃シナリオは多数ある」と喜屋武氏は述べる。たとえば、オフチェーンの場合、ユーザーの残高を管理するDBの脆弱性を利用してDBを改ざんできれば、自分の暗号資産の残高を大量に増やしてから、他取引所などのアカウント口座に送金する攻撃が可能だ。

秘密鍵がなくても暗号資産の窃取は可能
秘密鍵がなくても暗号資産の窃取は可能

 ほかにも、アプリケーションサーバを乗っ取ることができれば、不正なトランザクションを発行して不正送金することも可能だ。署名システムにトランザクションの中身を検証する機構が実装されていなければ、不正なトランザクションに正規の署名が付与され、そのままブロードキャストされてしまう。

 マルチシグネチャ(1つのアドレスから他アドレスへ送金するとき、複数の秘密鍵を使う仕組み)についても、穴はある。たとえアドレスがマルチシグネチャに対応していたとしても、秘密鍵をすべて同じサーバ上で署名し、管理していたら、そのサーバを乗っ取るだけで不正送金ができる。秘密鍵を複数台のサーバに分散したとしても、全サーバが同じネットワークにあり、同じOSとアプリケーションで構成されていれば、乗っ取りの難易度は前述の攻撃とあまり変わらない。だからといって、違うOS、アプリで構成するといっても、構成管理やパッチ管理、メンテナンスなど運用コストが恐ろしいことになる。

 「正解は存在しない」。喜屋武氏は言い切る。「私たちにできることは、取引所のエンジニアの数や質によって、自分たちにとっての最適解を考えることだけだ」。

 特に悩ましいのは、ヒューマン要素だ。コールドウォレットは、暗号資産交換業者に関する内閣府令 第二十七条3項1号にて、常時インターネットに接続していない電子機器で秘密鍵を管理することが義務付けられている。この管理の部分について、暗号資産の安全対策基準の策定を目的としたCGTF(Cryptoassets Governance Task Force)では、誰が暗号資産の移転指示を出すのか、署名作業は誰がやるのかなどを決めるべきとしている。

 「コインチェックは2600億円強(2023年1月末現在)の資産を預かっており、管理担当者は本当に信用できる人でなければならない。それは、誰なのか。そんな人が何人いるのか。コールドウォレットにすれば安全という単純な話ではないのが、難しいところだ」(喜屋武氏)

 暗号資産取引サービスの基本を一通り話し終えた喜屋武氏。何となく知っているようで知らなかった取引所への理解が深まる講演となった。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加

提供:コインチェック株式会社

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/17555 2023/04/28 12:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング