暗号技術入門-秘密の国のアリス
著者/訳者:Array
出版社:ソフトバンククリエイティブ( 2003-09-30 )
定価:¥ 3,150
単行本(ソフトカバー) ( 392 ページ )
ISBN-10 : 4797322977
ISBN-13 : 9784797322972
暗号技術の教科書的な本で初学者に最適。
有名な結城浩さんの本というだけで安心して買える。決して応用的な本ではなく、大学生の授業の教科書にするとよいのではないかというくらい。もちろん高校生でも読めると思う。もし学校の授業で無味乾燥な暗号の教科書を指定されたら、それで勉強するよりこれを買ってしまうとよい。
本書は私も暗号に関する本をたくさん知っているわけではないが、知りうる限りでは最良の入門書である。本書と実践として「妖精現実 フェアリアル」というWebサイトの「JavaScript: 触って分かる公開鍵暗号RSA」を読んで実践しておけば、暗号学を専攻しない限りは情報系の大学院生として堂々と私は暗号学を学んできましたと言っても恥ずかしくないはず。
最後に目次をつけるが、本書は暗号、認証、鍵など広い分野についてとても丁寧に書いてある。また、教科書として上記のように書いたが、簡単なクイズがついていて章末でその答え合わせを行う構成になっている。おのおのの技術について「○○への攻撃」と「○○では解決できない問題」がほとんどの場合について触れられていて上辺だけの理解ではなく、限界についても理解が深まるようになってくる。うっかりしていると、Web閲覧でもSSLが使われているから安心だと思ってしまうが、どういう攻撃がなされたら危険かなどについて知っておくほうがよい。
レビューからそれるが、SSLの運用については、SSLについて理解していないような金融機関があるという指摘がある。SSLは大ざっぱに言って「データを暗号化して盗聴を困難にする」ことと「通信している相手が本当に意図している相手かを保証する」ことにあるのだが、その指摘の中にある金融機関や学校では後者についての理解が欠けているという。それらの組織の担当者はコンピュータの専門家のはずだけれど、本書を読んでいれば十分理解している程度のことを理解していない。入門書と言っても、本書を読んでおけばそこいらの(自称)専門家よりずっと確かな知識が得られるのは間違いない。
目次
第一章 暗号の世界ひとめぐり
- この章で学ぶこと
- 暗号
- アリスとボブ
- 送信者・受信者・盗聴者
- 暗号化と復号化
- 暗号は機密性を守る
- 解読
- 対称暗号と公開鍵暗号
- 暗号アルゴリズム
- 鍵
- 対称暗号と公開鍵暗号
- ハイブリッド暗号システム
- そのほかの暗号技術
- 一方向ハッシュ関数
- メッセージ認証コード
- デジタル署名
- 擬似乱数生成器
- 暗号学者の道具箱
- ステガノグラフィと電子透かし
- 暗号とセキュリティの常識
- 秘密の暗号アルゴリズムを使うな
- 弱い暗号は暗号化しないよりも危険である
- どんな暗号もいつかは解読される
- 暗号はセキュリティのほんの一部である
- この章のまとめ
- クイズの解答
第2章 歴史上の暗号
── 他人が読めない文章を作る
- この章で学ぶこと
- シーザー暗号
- シーザー暗号とは何か
- シーザー暗号の暗号化
- シーザー暗号の復号化
- ブルート・フォース・アタックによる解読
- 単一換字暗号
- 単一換字暗号とは何か
- 単一換字暗号の暗号化
- 単一換字暗号の復号化
単一換字暗号の鍵空間 - 頻度分析による解読
- エニグマ
- エニグマとは何か
- エニグマによる暗号通信
- エニグマの構造
- エニグマの暗号
- 「日替わり鍵」と「通信鍵」
- 通信エラーの回避
- エニグマの復号化
- エニグマの弱点
- エニグマの解読
- 考えてみよう
- なぜ暗号アルゴリズムと鍵とを分けるのか
- この章のまとめ
- クイズの解答
第3章対称暗号(共通鍵暗号)
──1 つの鍵で暗号化し、同じ鍵で復号化する
- スクランブルエッグと対称暗号
- この章で学ぶこと
- 文字の暗号からビット列の暗号へ
- 符号化
- XOR
- 使い捨てパッド――絶対に解読できない暗号
- 使い捨てパッドとは
- 使い捨てパッドの暗号化
- 使い捨てパッドの復号化
- 使い捨てパッドは解読できない
- 使い捨てパッドはなぜ使われないのか
- DES
- DESとは何か
- 暗号化・復号化
- DESの構造(ファイステルネットワーク)
- トリプルDES
- トリプルDESとは何か
- トリプルDESの暗号化
- トリプルDESの復号化
- トリプルDESの現状
- AESの選定プロセス
- AESとは何か
- AESの選定プロセス
- AES最終候補の絞り込みとA E S の決定
- 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
- 一方向ハッシュ関数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方式
- デジタル署名に対する攻撃
- man-in-the-middle攻撃
- 一方向ハッシュ関数に対する攻撃
- デジタル署名を使って公開鍵暗号を攻撃
- その他の攻撃
- 比較してみよう
- メッセージ認証コードとデジタル署名
- ハイブリッド暗号システムとハッシュ値へのデジタル署名
- デジタル署名で解決できない問題
- この章のまとめ
- クイズの解答
第10章 証明書
──公開鍵へのデジタル署名
- この章で学ぶこと
- 証明書
- 証明書とは何か
- 証明書を使うシナリオ
- 証明書を作ってみよう
- ベリサインの無料お試しサービス
- 証明書の作成
- 証明書をWebブラウザからエクスポートする
- 証明書の内容
- 証明書の標準規格X
- 公開鍵基盤(PKI)
- 公開鍵基盤(PKI)とは何か
- PKIの構成要素
- 認証局の仕事
- 階層になった証明書
- さまざまなPKI
- 証明書に対する攻撃
- 公開鍵の登録前を攻撃
- 似た人間を登録する攻撃
- 認証局のプライベート鍵を盗み出す攻撃
- 攻撃者自身が認証局になる攻撃
- CRLの隙を突く攻撃(1)
CRLの隙を突く攻撃(2)
- 証明書に対するQ&A
- 証明書がなぜ必要なのか
- 独自の認証方法を使ったほうが安全ではないか
- 認証局はどうやって信頼するか
- この章のまとめ
- クイズの解答
第III部鍵・乱数・応用技術
第11章鍵
──秘密のエッセンス
- この章で学ぶこと
- 鍵とは何か
- 鍵はとても大きな数
- 鍵は平文と同じ価値を持つ
- 暗号アルゴリズムと鍵
- さまざまな鍵
- 対称暗号の鍵と公開鍵暗号の鍵
- メッセージ認証コードの鍵とデジタル署名の鍵
- 機密性のための鍵と認証のための鍵
- セッション鍵とマスター鍵
- コンテンツを暗号化する鍵と、鍵を暗号化する鍵
- 鍵を管理する
- 鍵を作る
- 鍵を配送する
- 鍵を更新する
- 鍵を保存する
- 鍵を捨てる
- Diffie-Hellman鍵交換
- Diffie-Hellman鍵交換とは何か
- Diffie-Hellman鍵交換の手順
- イブは鍵を計算できないのか
- 生成元の意味
- 具体的にやってみよう
- パスワードを元にした暗号(PBE)
- パスワードを元にした暗号とは何か
- PBEの暗号化
- PBEの復号化
- ソルトの役割
- パスワードの役割
- PBEの改良
- 安全なパスワードを作るには
- 自分だけが知り得る情報を使うこと
- 複数のパスワードを使い分けること
- メモを有効に使うこと
- パスワードの限界を知ること
- この章のまとめ
- クイズの解答
第12章 乱数
──予測不可能性の源
- ロバの錠前屋
- この章で学ぶこと
- 乱数が使われる暗号技術
- 乱数は何に使われるか
- 乱数の性質
- 乱数の性質を分類する
- 無作為性
- 予測不可能性
- 再現不可能性
- 擬似乱数生成器
- 擬似乱数生成器の構造
- 具体的な擬似乱数生成器
- でたらめな方法
- 線形合同法
- 一方向ハッシュ関数を使う方法
- 暗号を使う方法
- ANSIX9
- 擬似乱数生成器に対する攻撃
- 種に対する攻撃
- ランダムプールに対する攻撃
- この章のまとめ
- クイズの解答
第13章 PGP
──暗号技術を組み合わせる職人芸
- この章で学ぶこと
- PGPの概要
- PGPとは何か
- PGPの機能
- 鍵ペアの作成
- 暗号化と復号化
- 暗号化
- 復号化
- デジタル署名の作成と検証
- デジタル署名の作成
- デジタル署名の検証
- 「デジタル署名の作成と暗号化」および「復号化とデジタル署名の検証」
- デジタル署名の作成と暗号化
- 復号化とデジタル署名の検証
- 信頼の網
- 公開鍵の正当性
- ケース1:自分自身のデジタル署名によって確認する
- ケース2:自分が常に信頼している人のデジタル署名によって確認する
- ケース3:自分が部分的に信頼している人たちのデジタル署名によって確認する
- 公開鍵の正当性と所有者信頼は別
- 所有者信頼の値は個人的なもの
- この章のまとめ
- クイズの解答
第14章 SSL/TLS
──セキュアな通信のために
- この章で学ぶこと
- SSL/TLSとは何か
- アリスがボブ書店で本を買う
- クライアントとサーバ
- HTTPをSSL/TLSの上に乗せる
- SSL/TLSの仕事
- SSL/TLSは他のプロトコルも守ることができる
- 暗号スイート
- SSLとTLSの違い
- SSL/TLSを使った通信
- 階層化されたプロトコル
- 1TLSレコードプロトコル
- 2-1ハンドシェイクプロトコル
- 2-2暗号仕様変更プロトコル
- 2-3警告プロトコル
- 2-4アプリケーションデータプロトコル
- マスターシークレット
- TLSで使われている暗号技術のまとめ
- SSL/TLSへの攻撃
- 個々の暗号技術への攻撃
- 擬似乱数生成器に対する攻撃
- 証明書の隙を突く攻撃
- SSL/TLSのユーザへの注意
- 証明書の意味を勘違いしないように
- 暗号通信前のデータは守られていない
- 暗号通信後のデータは守られていない
- この章のまとめ
- クイズの解答
第15章 暗号技術と現実社会
──不完全なセキュリティの中で生きる私たち
- この章で学ぶこと
- 暗号技術のまとめ
- 暗号学者の道具箱
- 暗号と認証
- 暗号技術のフレームワーク化
- 暗号技術は圧縮技術
- 完全な暗号技術を夢見て
- 量子暗号
- 量子コンピュータ
- どちらが先に誕生するか
- 暗号技術が完全になっても、人間は不完全
- 理論が完全でも、現実は不完全
- 防御は完全でなければならないが、攻撃は一点を破ればよい
- 攻撃例1:PGPで暗号化されたメールに対して
- 攻撃例2:SSL/TLSで暗号化されたクレジットカード番号に対して
- この章のまとめ
