contents memorandum はてな

目次とメモを置いとく場

『暗号技術入門――秘密の国のアリス[新版]』(結城浩 ソフトバンククリエイティブ 2008//2003)

著者:結城 浩[ゆうき・ひろし](1963-) 
カバーデザイン:米谷テツヤ
本文デザイン:花本 浩一(麒麟三隻館
組版:スタヂオ・ポップ
NDC:007.1 情報科学


(2008年刊行)『新版暗号技術入門——秘密の国のアリス』
暗号技術入門 第3版 | SBクリエイティブ


【目次】
はじめに [iii]
本書の特徴 [iv]
  暗号技術をわかりやすく解説
  暗号技術の相互関係を解説
  「暗号の常識」を解説
  対象読者
  数学が苦手な人にもわかりやすく
  クイズで理解を確認する
本書の構成 [v-vi]
  第I部 暗号
  第II部 認証
  第III部 鍵・乱数・応用技術
謝辞(2003年8月 横浜にて 結城浩) [vi-vii]
新版の刊行にあたって(2008年11月 横浜にて 結城浩) [vii]
CONTENTS [ix-xxii]


  第I部 暗号


第1章 暗号の世界ひとめぐり 
この章で学ぶこと 004

暗号 004
  アリスとボブ
  送信者・受信者・盗聴者
  暗号化と復号化
  暗号は機密性を守る
  解読

対称暗号と公開鍵暗号 008
  暗号アルゴリズム
  鍵
  対称暗号と公開鍵暗号
  ハイブリッド暗号システム

そのほかの暗号技術 011
  一方向ハッシュ関数
  メッセージ認証コード
  デジタル署名
  擬似乱数生成器

暗号学者の道具箱 013

ステガノグラフィと電子透かし 014

暗号とセキュリティの常識 015
  秘密の暗号アルゴリズムを使うな
    暗号アルゴリズムの秘密は必ず暴かれる
    強い暗号アルゴリズムを生み出すことは非常に困難
  弱い暗号は暗号化しないよりも危険である
  どんな暗号もいつかは解読される 
  暗号はセキュリティのほんの一部である

この章のまとめ 018
クイズの解答 019


第2章 歴史上の暗号――他人が読めない文章を作る 
この章で学ぶこと 022

シーザー暗号 022
  シーザー暗号とは何か
  シーザー暗号の暗号化
  シーザー暗号の復号化
  ブルートフォースアタックによる解読

单一換字暗号 026
  単一換字暗号とは何か
  単一換字暗号の暗号化
  単一換字暗号の復号化
  単一換字暗号の鍵空間
  頻度分析による解読

エニグマ 034
  エニグマとは何か
  エニグマによる暗号通信
  エニグマの構造
  エニグマの暗号化
    (1) エニグマの設定
    (2) 通信鍵の暗号化
    (3) エニグマの再設定
    (4) メッセージの暗号化
    (5) 結合
  「日替わり鍵」と「通信鍵」
  通信エラーの回避 
  エニグマの復号化
    (1) 分解
    (2) エニグマの設定
    (3) 通信鍵の復号化
    (4) エニグマの再設定
    (5) メッセージの復号化
  エニグマの弱点
  エニグマの解読

考えてみよう 042
  なぜ暗号アルゴリズムと鍵とを分けるのか
    シーザー暗号
    単一換字暗号
    エニグマ(通信鍵の暗号化)
    エニグマ(通信文の暗号化)

この章のまとめ 044
クイズの解答 045


第3章 対称暗号を(共通鍵暗号)―― 1つの鍵で暗号化し、同じ鍵で復号化する
スクランブルエッグと対称暗号 048
この章で学ぶこと 048

文字の暗号からビット列の暗号へ 049
  符号化
  XOR
    1ビットのXOR
    ビット列のXOR

使い捨てパッド――絶対に解読できない暗号 052
  使い捨てパッドとは
  使い捨てパッドの暗号化
  使い捨てパッドの復号化
  使い捨てパッドは解読できない
  使い捨てパッドはなぜ使われないのか
    鍵の配送
    鍵の保存
    鍵の再利用
    鍵の同期
    鍵の生成

DES[Date Encryption Standard] 056
  DESとは何か
  暗号化・復号化
  DESの構造(ファイステルネットワーク)

トリプルDES 064
  トリプルDESとは何か
  トリプルDESの暗号化
  トリプルDESの復号化
  トリプルDESの現状

AES[Advanced Encryption Standard]の選定プロセス 068
  AESとは何か
  AESの選定プロセス
  AES最終候補の絞り込みとAESの決定

Rijndael〔ラインダール〕 070
  Rijndaelとは何か
  Rijndaelの暗号化と復号化
  Rijndaelの解読
  どの対称暗号を使えばよいのか

この章のまとめ 074
クイズの解答 075


第4章 ブロック暗号のモード――ブロック暗号をどのように繰り返すか
 
この章で学ぶこと 078

ブロック暗号のモード 079
  ブロック暗号とストリーム暗号
  モードとは何か
  平文ブロックと暗号文ブロック
  能動的な攻撃者マロリー

ECBモード 081
  ECBモードとは何か
  ECBモードの特徴
  ECBモードへの攻撃

CBCモード 085
  CBCモードとは何か
  初期化ベクトル
  CBCモードの特徴
  CBCモードへの攻撃
  CBCモードの利用例

CFBモード 091
  CFBモードとは何か
  初期化ベクトル
  CFBモードとストリーム暗号
  CFBモードの復号化
  CFBモードへの攻撃

OFBモード 095
  OFBモードとは何か
  初期化ベクトル
  CFBモードとOFDモードの比較

CTRモード 097
  カウンタの作り方 
  OFBモードとCTRモードの比較
  CTRモードの特徴
  エラーと機密性
どのモードを使うべきか 100

この章のまとめ 102
クイズの解答 103


第5章 公開鍵暗号――公開鍵で暗号化し、プライベート鍵で復号化する 

コインロッカーの使い方 106
この章で学ぶこと 106

鍵配送問題 106
  鍵配送問題とは
  鍵の事前共有による鍵配送問題の解決
  鍵配布センターによる鍵配送問題の解決
  Diffie-Hellma鍵交換による鍵配送問題の解決
  公開鍵暗号による鍵配送問題の解決

公開鍵暗号 111
  公開鍵暗号とは
  公開鍵暗号の歴史
  公開鍵を使った通信の流れ
  さまざまな用語
  公開鍵暗号でも解決できない問題

時計演算 116
  加算
    modの計算
  减算
  乘算
  除算
  累乗
  対数
  時計の針からRSA

RSA 125
  RSAとは何か
  RSAによる暗号化
  RSAによる復号化
  鍵ペアを作る
    (1) Nを求める
    (2) Lを求める
    (3) Eを求める
    (4) Dを求める
  具体的にやってみよう
    鍵ペアの生成
    暗号化
    復号化

RSAへの攻撃 134
  暗号文から平文を求める
  ブルートフォースアタックでDを見つける
  EとNからDを求める
    Nを素因数分解する攻撃
    pとqを推測する攻撃
    その他の攻撃
  man-in-the-middle攻撃

他の公開鍵暗号 139
  EIGamal方式
  Rabin方式
  楕円曲線暗号

公開鍵暗号に関するQ&A 140
  公開鍵暗号の機密性
    疑問
    答え
  公開鍵暗号と対称暗号の鍵長
    疑問
    答え
  対称暗号の未来
    疑問
    答え
  RSA素数
    疑問
    答え
  RSA素因数分解
    疑問
    答え
  RSAのビット長
    疑問
    答え

この章のまとめ 143
クイズの解答 144


第6章 ハイブリッド暗号システム――対称暗号でスピードアップし、公開鍵暗号でセッション鍵を守る

ハイブリッド車 148
この章で学ぶこと 148

ハイブリッド暗号システム 148
  対称暗号と公開鍵暗号
  ハイブリッド暗号システム
  暗号化
    平文・鍵・暗号文
    メッセージの暗号化
    セッション鍵の暗号化
    結合
  復号化
    分割
    セッション鍵の復号化
    メッセージの復号化
  ハイブリッド暗号システムの具体例 

強いハイブリッド暗号システムとは 154
  擬似乱数生成器
  対称暗号
  公開鍵暗号
  鍵長のバランス

暗号技術の組み合わせ 155

この章のまとめ 156
クイズの解答 157


  第II部 認証


第7章 一方向ハッシュ関数――メッセージの「指紋」をとる 

この章で学ぶこと 162

一方向ハッシュ関数[one-way hash function]とは何か 162
  このファイルは本物かしら
  一方向ハッシュ関数とは
  一方向ハッシュ関数の性質
    任意長のメッセージから固定長のハッシュ値を計算する
    ハッシュ値を高速に計算できる
    メッセージが異なればハッシュ値も異なる
    一方向性を持つ
  用語について

一方向ハッシュ関数の応用例 172
  ソフトウェアの改検出
  パスワードを元にした暗号化
  メッセージ認証コード
  デジタル署名
  擬似乱数生成器
  ワンタイムパスワード

一方向ハッシュ関数の具体例 175
  MD4,MD5
  SHA-1,SHA-256,SHA-384,SHA-512
  RIPEMD-160
  AHS(Advanced Hash Standard)とSHA-3

一方向ハッシュ関数 SHA-1 176
  全体の流れ
  (1) SHA-1:パディング
  (2) SHA-1:W_0〜W_79の計算
  (3) SHA-1:ブロックの処理
  (4) SHA-1:1ステップの処理 

一方向ハッシュ関数への攻撃 184
  ブルート・フォース・アタック(攻撃のストーリー1)
  誕生日攻撃(攻撃のストーリー2) 

一方向ハッシュ関数で解決できない問題 189

この章のまとめ 189
クイズの解答 190


第8章 メッセージ認証コード――メッセージは正しく送られてきたか 

この章で学ぶこと 194

メッセージ認証コード 194
  これは正しい送金依頼か
  メッセージ認証コードとは何か
  メッセージ認証コードの利用手順
  メッセージ認証コードの鍵配送問題

メッセージ認証コードの利用例 198
  SWIFT
  IPsec
  SSL/TLS

メッセージ認証コードの実現方法 198
  一方向ハッシュ関数を使って実現
  ブロック暗号を使って実現
  その他の方法で実現

HMACの詳細 199
  HMACとは何か
  HMACの手順

メッセージ認証コードに対する攻撃 202
  再生攻撃
    シーケンス番号
    タイムスタンプ
    ノンス[nonce]
  鍵の推測による攻撃 

メッセージ認証コードで解決できない問題 204
  第三者に対する証明
  否認防止

この章のまとめ 206
クイズの解答  207


第9章 デジタル署名――このメッセージを書いたのは誰か 
 
おかあさんヤギの認証 210
この章で学ぶこと 210

デジタル署名 210
  アリスの借用書
  メッセージ認証コードからデジタル署名へ
    メッセージ認証コードの限界
    デジタル署名による解決
  署名の作成と署名の検証
  公開鍵暗号とデジタル署名

デジタル署名の方法 216
  メッセージに直接署名する方法
  メッセージのハッシュ値に署名する方法

デジタル署名に対する疑問 221
  暗号文がなぜ署名として使えるのか
    疑問
    答え
  機密性が保てないのではないか
    疑問
    答え
  コピーが作れるのではないか
    疑問
    答え
  書き換えができるのではないか
    疑問
    答え
  署名だけ再利用できてしまうのではないか
    疑問
    答え
  署名を削除しても「契約破棄」できないのではないか
    疑問
    答え
  どうして否認防止になるのか
    疑問
    答え
  デジタル署名は本当に署名の代わりになるのか
    疑問
    答え

デジタル署名の利用例 226
  セキュリティ情報のアナウンス
  ソフトウェアのダウンロード
  公開鍵の証明書
  SSL/TLS

RSA によるデジタル署名 228
  RSA による署名の作成
  RSAによる署名の検証
  具体的にやってみよう

他のデジタル署名 230
  EIGamal方式
  DSA
  Rabin TIC

デジタル署名に対する攻撃 231
  man-in-the-middle 攻撃
  一方向ハッシュ関数に対する攻撃
  デジタル署名を使って公開鍵暗号を攻撃
  その他の攻撃

比較してみよう 234
  メッセージ認証コードとデジタル署名
  ハイブリッド暗号システムとハッシュ値へのデジタル署名

デジタル署名で解決できない問題 235

この章のまとめ 236
クイズの解答 236


第10章 証明書――公開鍵へのデジタル署名 

この章で学ぶこと 238

証明書 238
  証明書とは何か
  証明書を使うシナリオ

証明書を作ってみよう 241
  ベリサインの無料お試しサービス
  証明書の作成
  証明書をWebブラウザからエクスポートする
  証明書の内容
  証明書の標準規格X.509 

公開鍵基盤(PKI) 247
  公開鍵基盤(PKI)とは何か
  PKIの構成要素
    利用者
    認証局(CA)
    リポジトリ
  認証局の仕事
    鍵ペアの作成
    証明書の登録
    証明書の破棄とCRL
  階層になった証明書
  さまざまなPKI 

証明書に対する攻撃 255
  公開鍵の登録前を攻撃
  似た人間を登録する攻撃
  認証局のプライベート鍵を盗み出す攻撃
  攻撃者自身が認証局になる攻撃
  CRLの隙を突く攻撃(1)
  CRLの隙を突く攻撃(2)

証明書に対するQ&A 259
  証明書がなぜ必要なのか
    疑問
    答え
  独自の認証方法を使ったほうが安全ではないか
    疑問
    答え
  認証局はどうやって信頼するか
    疑問
    答え

この章のまとめ 263
クイズの解答 264


  第III部 鍵・乱数・応用技術 


第11章 鍵――秘密のエッセンス 

この章で学ぶこと 268
鍵とは何か 268
  鍵はとても大きな数 
  鍵は平文と同じ価値を持つ
  暗号アルゴリズムと鍵

さまざまな鍵 270
  対称暗号の鍵と公開鍵暗号の鍵
  メッセージ認証コードの鍵とデジタル署名の鍵
  機密性のための鍵と認証のための鍵
  セッションとマスター鍵
  コンテンツを暗号化する鍵と、鍵を暗号化する鍵

鍵を管理する 275
  鍵を作る
    乱数から鍵を作る
    パスワードから鍵を作る
  鍵を配送する
  鍵を更新する
  鍵を保存する
    鍵は記憶できない
    鍵を暗号化することの意味
  鍵を捨てる
    なぜ鍵を捨てなければならないか
    どうやって捨てるのか
    鍵をなくしたらどうなるか

Diffie-Hellman 鍵交換 280
  Diffie-Hellman 鍵交換とは何か
  Diffie-Hellman 鍵交換の手順 
  イブは鍵を計算できないのか
  生成元の意味
  具体的にやってみよう

パスワードを元にした暗号(PBE) 285
  パスワードを元にした暗号とは何か
  PBEの暗号化
    (1) KEYの生成
    (2) セッション鍵の生成と暗号化
    (3) メッセージの暗号化
  PBEの復号化
    (1) KEYの復元
    (2) セッション鍵の復号化
    (3) メッセージの復号化
  ソルトの役割
  パスワードの役割
  PBEの改良

安全なパスワードを作るには 292
  自分だけが知り得る情報を使うこと
  複数のパスワードを使い分けること
  メモを有効に使うこと
  パスワードの限界を知ること

この章のまとめ 295
クイズの解答 296


第12章 乱数――予測不可能性の源 

ロバの錠前屋 298
この章で学ぶこと 298

乱数が使われる暗号技術 298
  乱数は何に使われるか

乱数の性質 299
  乱数の性質を分類する 
  無作為性
  予測不可能性
  再現不可能性

擬似乱数生成器 302
  擬似数生成器の構造
    擬似数生成器の内部状態
    擬似数生成器の「種」

具体的な擬似乱数生成器 303
  でたらめな方法
  線形合同法
  一方向ハッシュ関数を使う方法
  暗号を使う方法
  ANSI X9.17

擬似乱数生成器に対する攻撃 314
  種に対する攻撃
  ランダムブールに対する攻撃

この章のまとめ 315
クイズの解答 316


第13章 PGP ――暗号技術を組み合わせる職人芸 317
この章で学ぶこと 318

PGP[Pretty Good Privacy]の概要 318
  PGPとは何か
  PGPの機能
    対称暗号
    公開鍵暗号
    デジタル署名
    一方向ハッシュ関数
    証明書
    圧縮
    テキストデータ
    大きなファイルの分割と結合
    鍵リングの管理

鍵ペアの作成 321

暗号化と復号化 321
  暗号化
    セッション鍵の生成と暗号化
    メッセージの圧縮と暗号化
  復号化
    プライベート鍵の復号化
    セッション鍵の復号化
    メッセージの復号化と伸張

デジタル署名の作成と検証 328
  デジタル署名の作成
    プライベート鍵の復号化
    デジタル署名の作成
  デジタル署名の検証
    送られてきたハッシュ値の復元
    ハッシュ値の比較

「デジタル署名の作成と暗号化」および「復号化とデジタル署名の検証」 333
  デジタル署名の作成と暗号化
    デジタル署名の作成
    暗号化
  復号化とデジタル署名の検証
    復号化
    デジタル署名の検証

信頼の網 337
  公開鍵の正当性
  ケース1:自分自身のデジタル署名によって確認する
  ケース2:自分が常に信頼している人のデジタル署名によって確認する
  ケース3:自分が部分的に信頼している人たちのデジタル署名によって確認する
  公開鍵の正当性と所有者信頼は別
  所有者信頼の値は個人的なもの

この章のまとめ 343
クイズの解答 343


第14章 SSL/TLS ――セキュアな通信のために 345
この章で学ぶこと 346

SSL/TLSとは何か 346
  アリスがボブ書店で本を買う
  クライアントとサーバ
  HTTPをSSL/TLS の上に乗せる
  SSL/TLSの仕事
  SSL/TLS は他のプロトコルも守ることができる
  暗号スイート
  SSLTLSの違い

SSL/TLSを使った通信 351
  階層化されたプロトコル
    1 TLS レコードプロトコル
    2-1 ハンドシェイクプロトコル
    2-2 暗号仕様変更プロトコル
    2-3 警告プロトコル
    2-4 アプリケーションデータプロトコル
  1 TLS レコードプロトコル
  2-1 ハンドシェイクプロトコル
    (1) ClientHello
    (2) ServerHello
    (3) Certificate
    (4) ServerKeyExchange
    (5) CertificateRequest
    (6) ServerHelloDone
    (7) Certificate
    (8) ClientKeyExchange
    (9) CertificateVerify
    (10) ChangeCipherSpec
    (11) Finished
    (12) ChangeCipherSpec
    (13) Finished
    (14) アプリケーションデータプロトコル
  2-2 暗号仕様変更プロトコル
  2-3 警告プロトコル
  2-4 アプリケーションデータプロトコル
  マスターシークレット
    マスターシークレットの計算
    マスターシークレットの目的
  TLSで使われている暗号技術のまとめ

SSL/TLSへの攻撃 364
  個々の暗号技術への攻撃
  擬似乱数生成器に対する攻撃
  証明書の隙を突く攻撃

SSL/TLSのユーザへの注意 365
  証明書の意味を勘違いしないように
  暗号通信前のデータは守られていない
  暗号通信後のデータは守られていない

この章のまとめ 367
クイズの解答 368


第15章 暗号技術と現実社会――不完全なセキュリティの中で生きる私たち 369
この章で学ぶこと 370
暗号技術のまとめ 370
  暗号学者の道具箱
  暗号と認証
  暗号技術のフレームワーク
  暗号技術は圧縮技術
完全な暗号技術を夢見て 375
  量子暗号
  量子コンピュータ
  どちらが先に実用化されるか
暗号技術が完全になっても、人間は不完全 377
  理論が完全でも、現実は不完全
  防御は完全でなければならないが、攻撃は一点を破ればよい
  攻撃例1:PGPで暗号化されたメールに対して
  攻撃例2:SSL/TLSで暗号化されたクレジットカード番号に対して 
この章のまとめ 381


付録 暗号技術確認クイズ 383


参考文献 [395-396]
索引 [397-403]
著作 [404]