暗号技術入門 秘密の国のアリス 新版


新版暗号技術入門 秘密の国のアリス


ソフトバンククリエイティブ


著者:結城浩


はじめに
本書の特徴
本書の構成
謝辞
新版の刊行にあたって

第I部 暗号
第1章 暗号の世界ひとめぐり
 この章で学ぶこと
 暗号
  アリスとボブ
  送信者・受信者・盗聴者
  暗号化と復号化
  暗号は機密性を守る
  解読
 対称暗号と公開鍵暗号
  暗号アルゴリズム
  鍵
  対称暗号と公開鍵暗号
  ハイブリッド暗号システム
 そのほかの暗号技術
  一方向ハッシュ関数
  メッセージ認証コード
  デジタル署名
  疑似乱数生成器
 暗号学者の道具箱
 ステガノグラフィと電子透かし
 暗号とセキュリティの常識
  秘密の暗号アルゴリズムを使うな
  弱い暗号は暗号化しないよりも危険である
  どんな暗号もいつかは解読される
  暗号はセキュリティのほんの一部である
 この章のまとめ
 クイズの解答

第2章 歴史上の暗号-他人が読めない文章を作る
 この章で学ぶこと
 シーザー暗号
  シーザー暗号とは何か
  シーザー暗号の暗号化
  シーザー暗号の復号化
  ブルート・フォース・アタックによる解読
 単一換字暗号
  単一換字暗号とは何か
  単一換字暗号の暗号化
  単一換字暗号の復号化
  単一換字暗号の鍵空間
  頻度分析よる解読
 エニグマ
  エニグマとは何か
  エニグマによる暗号通信
  エニグマの構造
  エニグマの暗号化
  「日替わり鍵」と「通信鍵」
  通信エラーの回避
  エニグマの復号化
  エニグマの弱点
  エニグマの解読
 考えてみよう
  なぜ暗号アルゴリズムと鍵とを分けるのか
 この章のまとめ
 クイズの解答

第3章 対称暗号(共通鍵暗号)-1つの鍵で暗号化し、同じ鍵で復号化する
 スクランブルエッグと対称暗号
 この章で学ぶこと
 文字の暗号からビット配列の暗号へ
  符号化
  XOR
 使い捨てパッド-絶対に解読できない暗号
  使い捨てパッドとは
  使い捨てパッドの暗号化
  使い捨てパッドの復号化
  使い捨てパッドは解読できない
  使い捨てパッドはなぜ使われないのか
 DES
  DESとは何か
  暗号化・復号化
  DESの構造(ファイルシステムネットワーク)
トリプルDES
  トリプルDESとは何か
  トリプルDESの暗号化
  トリプルDESの復号化
  トリプルDESの現状
 AESの選定プロセス
  AESとは何か
  AESの選定プロセス
  AES最終候補の絞り込みとAESの決定
 Rijndael
  Rijndaelとは何か
  Rijndaelの暗号化と復号化
  Rijndaelの解読
  どの対称暗号を使えばよいのか
 この章のまとめ
 クイズの解答

第4章 ブロック暗号のモード-ブロック暗号をどのように繰り返すか
 この章で学ぶこと
 ブロック暗号のモード
  ブロック暗号とストリーム暗号
  モードとは何か
  平文ブロックと暗号文ブロック
  能動的な攻撃者マロリー
 ECBモード
  ECBモードとは何か
  ECBモードの特徴
  ECBモードへの攻撃
 CBCモード
  CBCモードとは何か
  初期化ベクトル
  CBCモードの特徴
  CBCモードへの攻撃
  CBCモードの利用例
 CFBモード
  CFBモードとは何か
  初期化ベクトル
  CFBモードとストリーム暗号
  CFBモードの復号化
  CFBモードへの攻撃
 OFBモード
  OFBモードとは何か
  初期化ベクトル
  CFBモードとOFBモードの比較
 CTRモード
  カウンタの作り方
  OFBモードとCTRモードの比較
  CTRモードの特徴
  エラーと機密性
 どのモードを使うべきか
 この章のまとめ
 クイズの解答

第5章 公開鍵暗号-公開鍵で暗号化し、プライベート鍵で復号化する
 コインロッカーの使い方
 この章で学ぶこと
 鍵配送問題
  鍵配送問題とは
  鍵の事前共有による鍵配送問題の解決
  鍵配布センターによる鍵配送問題の解決
  Diffie-Hellman鍵交換による鍵配送問題の解決
  公開鍵暗号による鍵配送問題の解決
 公開鍵暗号
  公開鍵暗号とは
  公開鍵暗号の歴史
  公開鍵を使った通信の流れ
  さまざまな用語
  公開鍵暗号でも解決できない問題
 時計演算
  加算
  減算
  乗算
  除算
  累乗
  対数
  時計の針からRSAへ
 RSA
  RSAとは何か
  RSAによる暗号化
  RSAによる復号化
  鍵ペアを作る
  具体的にやってみよう
 RSAへの攻撃
  暗号文から平文を求める
  ブルート・フォース・アタックでDを見つける
  EとNからDを求める
  man-in-the-middle攻撃
 他の公開鍵暗号
  ElGamal方式
  Rabin方式
  楕円曲線暗号
 公開鍵暗号に関する Q&A
  公開鍵暗号の機密性
  公開鍵暗号と対称暗号の鍵長
  対称暗号の未来
  RSAと素数
  RSAと素因数分解
  RSAのビット長
 この章のまとめ
 クイズの解答

第6章 ハイブリッド暗号システム-対称暗号でスピードアップし、公開鍵暗号でセッション鍵を守る
 ハイブリッド車
 この章で学ぶこと
 ハイブリッド暗号システム
  対称暗号と公開鍵暗号
  ハイブリッド暗号システム
  暗号化
  復号化
  ハイブリッド暗号システムの具体例
 強いハイブリッド暗号システムとは
  疑似乱数生成器
  対称暗号
  公開鍵暗号
  鍵長のバランス
 暗号技術の組み合わせ
 この章のまとめ
 クイズの解答

第II部 認証

第7章 一方向ハッシュ関数-メッセージの「指紋」をとる
 この章で学ぶこと
 一方向ハッシュ関数とは何か
  このファイルは本物かしら
  一方向ハッシュ関数とは
  一方向ハッシュ関数の性質
  用語について
 一方向ハッシュ関数の応用例
  ソフトウェアの改竄検出
  パスワードを元にした暗号化
  メッセージ認証コード
  デジタル署名
  疑似乱数生成器
  ワンタイムパスワード
 一方向ハッシュ関数の具体例
  MD4、MD5
  SHA-1、SHA-256、SHA-384、SHA-512
  RIPEMD-160
  AHS(Advanced Hash Standard)とSHA-3
 一方向ハッシュ関数:SHA-1
  全体の流れ
  (1)SHA-1:パディング
  (2)SHA-1:W0~W79の計算
  (3)SHA-1:ブロックの処理
  (4)SHA-1:1ステップの処理
 一方向ハッシュ関数への攻撃
  ブルート・フォース・アタック(攻撃のストーリー1)
  誕生日攻撃(攻撃のストーリー2)
 一方向ハッシュ関数で解決できない問題
 この章のまとめ
 クイズの解答

第8章 メッセージ認証コード-メッセージは正しく送られてきてか
 この章で学ぶこと
 メッセージ認証コード
  これは正しい送金依頼か
  メッセージ認証コードとは何か
  メッセージ認証コードの利用手順
  メッセージ認証コードの鍵配送問題
 メッセージ認証コードの利用例
  SWIFT
  IPsec
  SSL/TLS
 メッセージ認証コードの実現方法
  一方向ハッシュ関数を使って実現
  ブロック暗号を使って実現
  その他の方法で実現
 HMACの詳細
  HMACとは何か
  HMACの手順
 メッセージ認証コードに対する攻撃
  再生攻撃
  鍵の推測による攻撃
 メッセージ認証コードで解決できない問題
  第三者に対する証明
  否認防止
 この章のまとめ
 クイズの解答

第9章 デジタル署名-このメッセージを書いたのは誰か
 あかあさん ヤギの証明
 この章で学ぶこと
 デジタル署名
  アリスの借用書
  メッセージ認証コードからデジタル署名へ
  署名の作成と署名の検証
  公開鍵暗号とデジタル署名
 デジタル署名の方法
  メッセージに直接署名する方法
  メッセージのハッシュ値に署名する方法
 デジタル署名に対する疑問
  暗号文がなぜ署名として使ええるのか
  機密性が保てないのではないか
  コピーが作れるのではないか
  書き換えができるのではないか
  署名だけ再利用できてしまうのではないか
  署名を削除しても「契約破棄」できないのではないか
  どうして否認防止になるのか
  デジタル署名は本当に署名の代わりになるのか
 デジタル署名の利用例
  セキュリティ情報のアナウンス
  ソフトウェアのダウンロード
  公開鍵の証明書
  SSL/TLS
 RSAによるデジタル署名
  RSAによる署名の作成
  RSAによる署名の検証
  具体的にやってみよう
 他のデジタル署名
  ElGamal方式
  DSA
  Rabin方式
 デジタル署名に対する攻撃
  main-in-the-middle攻撃
  一方向ハッシュ関数に対する攻撃
  デジタル署名を使って公開鍵暗号を攻撃
  その他の攻撃
 比較してみよう
  メッセージ認証コードとデジタル署名
  ハイブリッド暗号システムとハッシュ値へのデジタル署名
 デジタル署名で解決できない問題
 この章のまとめ
 クイズの解答

第10章 証明書-公開鍵へのデジタル署名
 この章で学ぶこと
 証明書
  証明書とは何か
  証明書を使うシナリオ
 証明書を作ってみよう
  ベリサインの無料お試しサービス
  証明書の作成
  証明書をWebブラウザからエクスポートする
  証明書の内容
  証明書の標準規格X.509
 公開鍵基盤(PKI)
  公開鍵基盤(PKI)とは何か
  PKIの構成要素
  認証局の仕事
  階層になった証明書
  さまざまなPKI
 証明書に対する攻撃
  公開鍵の登録前を攻撃
  似た人間を登録する攻撃
  認証局のプライベート鍵を盗み出す攻撃
  攻撃者自身が認証局になる攻撃
  CRLの隙を突く攻撃(1)
  CRLの隙を突く攻撃(2)
 証明書に対するQ&A
  証明者がなぜ必要なのか
  独自の認証方法を使ったほうが安全ではないか
  認証局はどうやって信頼するか
 この章のまとめ
 クイズの解答

第III部 鍵・乱数・応用技術
第11章 鍵-秘密のエッセンス
 この章で学ぶこと
 鍵とは何か
  鍵はとても大きな数
  鍵は平文と同じ価値を持つ
  暗号アルゴリズムと鍵
 さまざまな鍵
  対称暗号の鍵と公開鍵暗号の鍵
  メッセージ認証コードの鍵とデジタル署名の鍵
  機密性のための鍵と認証のための鍵
  セッション鍵とマスター鍵
  コンテンツを暗号化する鍵と、鍵を暗号化する鍵
 鍵を管理する
  鍵を作る
  鍵を配送する
  鍵を更新する
  鍵を保存する
  鍵を捨てる
 Diffie-Hellman鍵交換
  Diffie-Hellman鍵交換とは何か
  Diffie-Hellman鍵交換の手順
  イブは鍵を計算できないのか
  生成元の意味
  具体的にやってみよう
 パスワードを元にした暗号(PBE)
  パスワードを元にした暗号とは何か
  PBEの暗号化
  PBEの復号化
  ソルトの役割
  パスワードの役割
  PBEの改良
 安全なパスワードを作るには
  自分だけが知り得る情報を使うこと
  複数のパスワードを使い分けること
  メモを有効に使うこと
  パスワードの限界を知ること
 この章のまとめ
 クイズの解答

第12章 乱数-予測不可能性の源
 ロバの鍵前屋
 この章で学ぶこと
 乱数が使われる暗号技術
  乱数は何に使われるか
 乱数の性質
  乱数の性質を分類する
  無作為性
  予測不可能性
  再現不可能性
 疑似乱数生成器
  疑似乱数生成器の構造
 具体的な疑似乱数生成器
  でたらめな方法
  線形合同法
  一方向ハッシュ関数を使う方法
  暗号を使う方法
  ANSI X9.17
 疑似乱数生成器に対する攻撃
  種に対する攻撃
  ランダムプールに対する攻撃
 この章のまとめ
 クイズの解答

第13章 PGP-暗号技術を組み合わせる職人芸
 この章で学ぶこと
 PGPの概要
  PGPとは何か
  PGPの機能
 鍵ペアの作成
 暗号化と復号化
  暗号化
  復号化
 デジタル署名の作成と検証
  デジタル署名の作成
  デジタル署名の検証
 「デジタル署名の作成と暗号化」および「復号化とデジタル署名の検証」
  デジタル署名の作成と暗号化
  復号化とデジタル署名の検証
 信頼の綱
  公開鍵の正当性
  ケース1:自分自身のデジタル署名によって確認する
  ケース2:自分が常に信頼している人のデジタル署名によって確認する
  ケース3:自分が部分的に信頼している人たちのデジタル署名によって確認する
  公開鍵の正当性と所有者信頼は別
  所有者信頼の値は個人的なもの
 この章のまとめ
 クイズの解答

第14章 SSL/TLS-セキュアな通信のために
 この章で学ぶこと
 SSL/TLSとは何か
  アリスがボブ書店で本を買う
  クライアントとサーバ
  HTTPをSSL/TLSの上に乗せる
  SSL/TLSの仕事
  SSL/TLSは他のプロトコルも守ることができる
  暗号スイート
  SSLとTLSの違い
 SSL/TLSを使った通信
  階層化されたプロトコル
  1 TLSレコードプロトコル
  2-1 ハンドシェイクプロトコル
  2-2 暗号仕様変更プロトコル
  2-3 警告プロトコル
  2-4 アプリケーションデータプロトコル
  マスターシークレット
  TLSで使われている暗号技術のまとめ
 SSL/TLSへの攻撃
  個々の暗号技術への攻撃
  疑似乱数生成器に対する攻撃
  証明書の隙を突く攻撃
 SSL/TLSのユーザへの注意
  証明書の意味を勘違いしないように
  暗号通信前のデータは守られていない
  暗号通信後のデータは守られていない
 この章のまとめ
 クイズの解答

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

付録
 暗号技術確認クイズ

参考文献
索引

書籍目次

Posted by shi-n