1. HOME
  2. 刊行物
  3. 出版物
  4. 2018年
  5. ビットコイン[技術]入門

ビットコイン[技術]入門

  • 田篭 照博[著]
  • 技術評論社 発行
  • 2018年7月26日
  • 定価:本体3,280円+税
  • B5変形判・368ページ
  • ISBN [978-4-7741-9909-2]
  • ソフトカバー

ビットコインネットワークの技術仕様を詳説
関連する技術要素をコマンド操作で体験学習
セキュアな設計・運用のあるべき姿

主要目次

PART I ブロックチェーンと関連技術

Chapter1 ブロックチェーンの全体像
1.1 ブロックチェーン
1.2 ビットコインネットワーク
1.3 Ethereum
1.4 ブロックチェーンネットワークの構成要素
1.5 ビットコインネットワークの全体図
1.6 BIP(Bitcoin Improvement Proposals)

Chapter2 ビットコインネットワークを利用するための環境準備
2.1 Ubuntuのインストール
2.2 Bitcoin Explorerのインストール
2.3 Bitcoin Coreのインストール
2.4 初期セットアップとtestnetへの接続

Chapter3 ビットコインネットワークを理解するための暗号技術
3.1 ハッシュ関数
3.2 公開鍵暗号
3.3 楕円曲線
3.4 デジタル署名
3.5 ECDSAの署名と検証の詳細

Part2 ビットコインネットワーク

Chapter4 鍵,アドレス,ウォレット
4.1 所有権を特定する「鍵」と「錠」
4.2 鍵を管理する「ウォレット」
4.3 ウォレットの種類
4.4 送金先となるアドレス
4.5 秘密鍵/公開鍵のフォーマット
4.6 非決定性ウォレットと決定性ウォレット
4.7 階層的決定性ウォレット(HDウォレット)
4.8 拡張鍵
4.9 強化導出鍵
4.10 ニモニックコード
4.11 BIP 0044のHDウォレット

Chapter5 トランザクション
5.1 トランザクションのライフサイクル
5.2 トランザクションの概要
5.3 トランザクションの構造
5.4 UTXOと残高
5.5 Locking ScriptとUnlocking Script
5.6 トランザクションの署名ロジック
5.7 トランザクションの識別子(TXID)
5.8 トランザクションの置換(Replace by Fee)

Chapter6 ブロックとブロックチェーン
6.1 ブロックの構造と識別子
6.2 ブロックからトランザクションを検索する(マークルツリー)

Chapter7 マイニングとコンセンサスアルゴリズム
7.1 ビザンチン将軍問題と分散型コンセンサス
7.2 PoW(Proof-Of-Work)
7.3 トランザクションの集積
7.4 マイナーの報酬トランザクション(coinbaseトランザクション)
7.5 チェーンの分岐(フォーク)
7.6 51%攻撃

Chapter8 Segregated Witness
8.1 SegWitが導入された背景
8.2 トランザクションのデータ構造の変化
8.3 ブロックサイズの計算方法の変更
8.4 witness version と witness program
8.5 P2WPKH(Pay to Witness Pubkey Hash)
8.6 P2WSH(Pay to Witness Script Hash)
8.7 P2SH-P2WPKH
8.8 P2SH-P2WSH
8.9 SegWitトランザクションの署名方法
8.10 SegWitのアドレス
8.11 SegWitのcoinbaseトランザクション

Chapter9 P2P
9.1 ノードの発見とP2Pへの参加
9.2 メッセージのタイプとデータ
9.3 ハンドシェイク
9.4 トランザクションの伝搬

Part3 ビットコインネットワークを体験しよう

Chapter10 ウォレット
10.1 ウォレットを操作するための準備
10.2 ウォレットファイルのダンプとバックアップ
10.3 アドレスの生成
10.4 HDウォレットの確認
10.5 マルチウォレットの利用

Chapter11 P2PKH,P2SH
11.1 P2PKH
11.2 P2SH

Chapter12 P2WPKH,P2WSH
12.1 P2WPKH
12.2 P2WSH

Chapter13 P2SH-P2WPKH,P2SH-P2WSH
13.1 P2SH-P2WPKH
13.2 P2SH-P2WSH

Chapter14 Locktime,Replace by Fee
14.1 Locktime
14.2 Replace by Feeを試してみよう

Chapter15 ブロック
15.1 ブロックを確認しよう
15.2 coinbaseトランザクションを確認しよう
15.3 ブロックハッシュを計算しよう
15.4 マークルルートを計算しよう

Chapter16 オリジナルウォレットで送金しよう
16.1 オリジナルウォレットでTXを生成・署名してみよう
16.2 P2Pのプロトコルを実装してトランザクションを送信する

Part4 セキュリティ

Chapter17 ホットウォレットのセキュリティ
17.1 秘密鍵をホットウォレットとするか検討する
17.2 拡張公開鍵の利用時の注意点
17.3 一定額を超えたらコールドウォレットで保管する
17.4 秘密鍵を公開サーバに保管しない
17.5 侵入経路を断つ
17.6 セグメントを分ける
17.7 許可する通信/起動するサービスを最小限にする
17.8 OSのユーザを適切に分ける
17.9 ファイルのアクセス権限を最小限にする
17.10 内部端末からの攻撃への対策
17.11 内部犯行対策も行う
17.12 マルチシグで秘密鍵を分散する
17.13 バックアップサイトやDRサイトのアクセスコントロール
17.14 JSON-RPCにIDとパスワードを設定する
17.15 通信の暗号化と注意点
17.16 ウォレットの暗号化
17.17 不正の検知・遮断
17.18 監査ログの取得
17.19 リリース前に本番で使うウォレットを生成しない

Chapter18 コールドウォレットのセキュリティ
18.1 外部の人間によるウォレットへのアクセス
18.2 ハードウェアウォレット接続端末への攻撃
18.3 担当者のアクセスコントロール
18.4 ニモニックコードの取り扱い
18.5 ホットウォレット/コールドウォレットセキュリティの総括

Chapter19 その他のセキュリティ事項
19.1 ユーザのプライバシーを守る
19.2 リスクとスピードのバランスに鑑みて承認回数を決定する
19.3 クライアントアプリの脆弱性と鍵管理
19.4 ECDSAパラメータの使い回しによる秘密鍵の漏洩


「ここが読みどころ」~筆者からのメッセージ

本書は昨今注目を集めているブロックチェーンを活用して、新たなシステムを開発しようとしているエンジニアを対象としています。執筆時点で数多くのブロックチェーンネットワークが乱立している状況ですが、本書では、最初に構築されたブロックチェーンネットワークであるビットコインネットワークについて解説します。

本書の目的は大別すると2つです。1つ目はビットコインネットワークを技術詳細レベルで理解することです。ビットコインネットワークは主に、ビットコインという仮想通貨を送金するためのものであり、ビットコインを送金するだけであれば専用のクライアントソフト等を利用すれば誰でも簡単にできてしまいます。ビットコインを利用するだけならそれで十分ですが、ビットコインネットワークを活用したシステムを構築するエンジニアは技術詳細レベルで理解すべきと考えます。例えば、データベースのOracleを運用するDBA(データベース管理者)は、SQLが理解できるといった低次元のスキルではなく、トラブルシューティングやパフォーマンスチューニングを担うに際し、Oracleそのものを技術詳細レベルで理解できている必要がありますが、ビットコインネットワークにおいても同じようなことが言えると考えるからです。

本書では、ビットコインネットワークで利用される暗号、アドレス、トランザクション、ブロックといった技術要素を、これでもかというくらい手を動かしてもらうことで習得できるように配慮しています。従来の書籍でも、アドレスの生成、トランザクションの生成・署名・送信といったことを専用のクライアントソフトやライブラリを利用して行い、「わかった気」になることは可能です。本書ではこのようなクライアントソフトやライブラリを利用せずとも、その気になれば自分でこのようなものを開発できるレベルに達することを目指します。

本書は、読者の得意なプログラミング言語に依存しないように、ほとんどの場合、Linuxのコマンド、シェルスクリプトとOpenSSLのコマンドだけを利用するようにしているのも特徴です。Linuxのコマンドであればほぼすべてのエンジニアが習得しており、依存度が低いと考えるからです。一部、Pythonで実装するものがありますが、大したステップ数もなく何らかのプログラミング経験があれば理解できる程度のものなので安心してください。本書を読み終える頃には、専用のクライアントソフトやライブラリを利用せずとも、「Linuxと少しのプログラミングでビットコインが運用できるレベル」にまで達することが可能です。

やや話はそれますが、冒頭でエンジニアを対象としていると記載したものの、現役で手を動かしているエンジニアだけではなく、自ら手を動かすことから長い間離れてしまっているプロジェクトマネージャ、上流工程のみを担当するシステムエンジニア、IT部門の管理職なども、ぜひ本書を手にとっていただきたいと思います。デジタルネイティブ世代の若手エンジニアと、これらの世代の間には大きなギャップができつつあります。若い世代へ「新しいことにチャレンジして革新を起こせ!」といったメッセージを、組織改編やR&Dの機会などを通じて送り続けていると思いますが、ぜひマネジメント層のみなさん自身が手を動かし、その背中を見せつけることで組織の活性化を図る契機としてほしいと切実に思います。エンジニアの老壮青が一丸となって、ブロックチェーンの可能性に思いを馳せ、一緒に革新を起こしていきましょう!

2つ目の目的は堅牢なシステムを設計・開発できるようになることです。昨今、仮想通貨取引所等へのハッキングによる被害事例が後を絶たず、ときに社会的なインパクトを与えてしまうこともあります。これらの被害はブロックチェーンそのものが脆弱であるというよりも、システム運営者のセキュリティ対策が不十分なことに起因して起きる場合がほとんどです。

このような被害が起きると、「マルチシグを採用していたか?」「コールドウォレットを採用していたか?」といった点についてフォーカスされることがあります。確かにこれらのブロックチェーンならではのセキュリティ対策は有効ですが、これらは単に採用すれば安全というわけではなく、存在する背景や本質を理解しなければ採用したところでセキュリティレベルは上がりません。

本書では、マルチシグやコールドウォレットをいかに有効活用するかについて説明します。また、ブロックチェーン関連のセキュリティはこれらだけではなく、これらを採用しているから安全だという論調も間違っています。ブロックチェーンのような最先端の技術であっても、従来のセキュリティ対策は当然必要になります。本書ではあるべきセキュリティ対策をシステムアーキテクチャ、運用設計の観点から説明します。

筆者自身、ブロックチェーンを初めて技術レベルで理解した際には、その技術の高さと、ブロックチェーンがもたらすパラダイムシフトの可能性について、技術者として奮い立つほどの衝撃を受けました。しかし、ブロックチェーンがシステム運営者のセキュリティ対策の低さから、「危険なもの」として扱われ、せっかくの素晴らしい技術が敬遠されてしまうことは看過できません。そこで、このような被害を防ぎ、ブロックチェーンの普及に少しでも貢献したいと考え、本書を執筆するに至りました。


なお、本書は、拙著『堅牢なスマートコントラクト開発のためのブロックチェーン[技術]入門』(ISBN:978-4-7741-9353-3)の姉妹書の位置付けです。前書でも、ビットコインネットワークの概要レベルについて一部解説していますが、本書では対象とする範囲を広げ、さらにすべての技術要素において、より詳細なレベルで解説しています。また、前書はスマートコントラクトのセキュリティにフォーカスしていましたが、本書は堅牢な鍵管理、不正送金対策という観点になっていますので、前書を読んでいても本書は別のものだと思っていただいて問題ありません。

本書がブロックチェーンの理解と、ブロックチェーンを活用したセキュアなアプリケーション開発の一助になればと願います。

Writer’s Profile

田篭照博Teruhiro Tagomori

NRIセキュアテクノロジーズ
セキュリティエンジニア
専門:ブロックチェーンセキュリティ

注目ワード : ブロックチェーン

このページを見た人はこんなページも見ています