内容紹介
標準セキュリティプロトコルSSL/TLSの仕様から実装までを詳解
SSLと、それを基にIETFが標準化したTLSは、TCP/IPにおけるセキュリティをプロトコルレベルで確保するための認証プロトコル。本書は、そのSSL/TLSの仕様について、網羅的に詳細な情報を解説したEric Rescorla著『SSL and TLS : Designing and Building Secure Systems』の翻訳書。仕様だけでなく、TCP/IPにおけるセキュリティの概要からHTTP・SMTPといった具体的なアプリケーションにおける実装まで、SSL/TLSのすべてを掘り下げて説明する。
このような方におすすめ
・ネットワークプログラムの開発者
・ネットワーク管理者
・学生、研究者
目次
主要目次
第1章 セキュリティの概要
第2章 SSLの概要
第3章 SSLの基礎的な技術
第4章 SSLの高度な技術
第5章 SSLのセキュリティ
第6章 SSLのパフォーマンス
第7章 SSLを用いた設計
第8章 SSLのコーディング
第9章 HTTPoverSSL
第10章 SMTPoverTLS
第11章 さまざまな手法との比較
付録A サンプルコード
付録B SSLv2
詳細目次
第1章 セキュリティの概要
1.1 はじめに
1.2 インターネット脅威モデル
1.3 登場人物について
1.4 セキュリティ技術が目指すこと
1.5 セキュリティ確保のための道具
1.6 組み合わせて使用
1.7 シンプルなセキュアメッセージングシステム
1.8 安全でシンプルな通信路
1.9 輸出状況
1.10 暗号技術に関するアルゴリズムの実際
1.11 共通鍵暗号化方式(ストリーム暗号)
1.12 共通鍵暗号化方式(ブロック暗号)
1.13 ダイジェストアルゴリズム
1.14 鍵の確立
1.15 電子署名
1.16 MAC
1.17 鍵長
1.18 まとめ
第2章 SSLの概要
2.1 はじめに
2.2 標準と標準化団体
2.3 SSLの概要
2.4 SSL/TLSの設計目標
2.5 SSLとTCP/IPプロトコルスイート
2.6 SSLの歴史
2.7 WebのためのSSL
2.8 SSL上でのプロトコル
2.9 SSLの入手
2.10 まとめ
第3章 SSLの基礎的な技術
3.1 はじめに
3.2 SSLの概要
3.3 Handshake
3.4 SSLRecordプロトコル
3.5 部品の組み立て
3.6 接続の実際
3.7 接続の詳細
3.8 SSLの仕様記述言語
3.9 Handshakeメッセージの構造
3.10 Handshakeメッセージ
3.11 鍵の生成
3.12 Recordプロトコル
3.13 Alertと終了
3.14 まとめ
第4章 SSLの高度な技術
4.1 はじめに
4.2 セッション再開
4.3 クライアント認証
4.4 一時的RSA
4.5 再Handshake
4.6 ServerGatedCryptography
4.7 DSSとDH
4.8 楕円曲線暗号スイート
4.9 Kerberos
4.10 FORTEZZA
4.11 ここまでのまとめ
4.12 セッション再開の詳細
4.13 クライアント認証の詳細
4.14 一時的RSAの詳細
4.15 SGCの詳細
4.16 DH/DSSの詳細
4.17 FORTEZZAの詳細
4.18 エラーAlert
4.19 SSLv2との下位互換性
4.20 まとめ
第5章 SSLのセキュリティ
5.1 はじめに
5.2 SSLの機能
5.3 master_secretの保護
5.4 サーバの秘密鍵の保護
5.5 良質の乱数の利用
5.6 証明書チェーンの確認
5.7 アルゴリズムの選択
5.8 ここまでのまとめ
5.9 master_secretの危殆化
5.10 メモリ内の秘密情報の保護
5.11 サーバの秘密鍵のセキュリティ
5.12 乱数生成
5.13 証明書チェーンの検証
5.14 部分的な危殆化
5.15 既知の攻撃手法
5.16 タイミング暗号解析
5.17 ミリオンメッセージ攻撃
5.18 小さな部分群攻撃
5.19 輸出方式へのダウングレード
5.20 まとめ
第6章 SSLのパフォーマンス
6.1 はじめに
6.2 SSLは遅い
6.3 パフォーマンスに関する原則
6.4 暗号技術に関する処理は高コスト
6.5 セッション再開
6.6 Handshakeのアルゴリズムと鍵選択
6.7 バルクデータの転送
6.8 SSLのパフォーマンスに関する基本方針
6.9 ここまでのまとめ
6.10 Handshakeの時間配分
6.11 通常のRSAモード
6.12 クライアント認証を伴うRSAモード
6.13 一時的RSA
6.14 DHE/DSS
6.15 クライアント認証を伴うDHE/DSS
6.16 DHによるパフォーマンスの向上
6.17 レコードの処理
6.18 Java
6.19 負荷のかかった状況におけるSSLサーバ
6.20 ハードウェアアクセラレーション
6.21 インラインハードウェアアクセラレータ
6.22 ネットワーク遅延
6.23 Nagleアルゴリズム
6.24 Handshakeのバッファリング
6.25 SSLの高度な機能を利用する際のパフォーマンスの原則
6.26 まとめ
第7章 SSLを用いた設計
7.1 はじめに
7.2 何を守るのかを考える
7.3 クライアント認証の方式
7.4 参照情報における整合性
7.5 SSLに向かない処理
7.6 プロトコルの選択
7.7 Handshakeオーバヘッドの軽減
7.8 設計戦略
7.9 ここまでのまとめ
7.10 ポートの分離
7.11 上方向ネゴシエーション
7.12 ダウングレード攻撃
7.13 参照情報における整合性
7.14 ユーザ名とパスワードを用いた認証方式
7.15 SSLクライアント認証
7.16 ユーザ名とパスワードを用いた相互認証
7.17 再Handshake
7.18 2番目の通信路
7.19 接続の終了
7.20 まとめ
第8章 SSLのコーディング
8.1 はじめに
8.2 SSLの実装
8.3 サンプルプログラム
8.4 コンテキストの初期化
8.5 クライアントの接続
8.6 サーバでの接続の受け入れ
8.7 単純なI/O処理
8.8 スレッドを使った多重化I/O
8.9 select()を使った多重化I/O
8.10 終了
8.11 セッション再開
8.12 補足
8.13 まとめ
第9章 HTTP over SSL
9.1 はじめに
9.2 Webを安全にする
9.3 HTTP
9.4 HTML
9.5 URL
9.6 HTTP接続の振る舞い
9.7 プロキシ
9.8 仮想ホスト
9.9 プロトコルの選択
9.10 クライアント認証
9.11 参照情報における整合性
9.12 HTTPS
9.13 HTTPSの概要
9.14 URLと参照情報における整合性
9.15 接続の終了
9.16 プロキシ
9.17 仮想ホスト
9.18 クライアント認証
9.19 Referrerヘッダ
9.20 置換攻撃
9.21 アップグレード
9.22 プログラミングの問題
9.23 プロキシのCONNECT
9.24 複数のクライアントの処理
9.25 まとめ
第10章 SMTP over TLS
10.1 はじめに
10.2 インターネットメールのセキュリティ
10.3 インターネットメールの概要
10.4 SMTP
10.5 RFC 822とMIME
10.6 電子メールアドレス
10.7 メールの中継
10.8 仮想ホスト
10.9 MXレコード
10.10 クライアントからのメールアクセス
10.11 プロトコルの選択
10.12 クライアント認証
10.13 参照情報における整合性
10.14 接続のセマンティクス
10.15 STARTTLS
10.16 STARTTLSの概要
10.17 接続の終了
10.18 TLSを要求する場合
10.19 仮想ホスト
10.20 セキュリティインジケータ
10.21 認証された中継
10.22 送信元の認証
10.23 参照情報における整合性の詳細
10.24 CONNECTを使えない理由
10.25 STARTTLSの利点
10.26 プログラミングの問題
10.27 STARTTLSの実装
10.28 サーバの起動
10.29 まとめ
第11章 さまざまな手法との比較
11.1 はじめに
11.2 エンドツーエンド通信の特性
11.3 エンドツーエンドの議論とSMTP
11.4 その他のプロトコル
11.5 IPsec
11.6 Security Association
11.7 ISAKMPとIKE
11.8 AHとESP
11.9 IPsecの全体像
11.10 IPsec vs. SSL
11.11 SecureHTTP
11.12 CMS
11.13 メッセージ形式
11.14 暗号技術に関するオプション
11.15 S-HTTPの全体像
11.16 S-HTTP vs. HTTPS
11.17 S/MIME
11.18 基本的なS/MIME形式
11.19 署名のみ
11.20 アルゴリズムの選択
11.21 S/MIMEの全体像
11.22 普及の障害
11.23 S/MIME vs. SMTP over TLS
11.24 適切な解決策の選択
11.25 まとめ
付録A サンプルコード
A.1 第8章のサンプルコード
A.1.1 Cによるサンプルプログラム
A.1.2 Javaによるサンプルプログラム
A.2 第9章のサンプルコード
A.2.1 HTTPSの例
A.2.2 mod_sslセッションのキャッシュ
付録B SSLv2
B.1 はじめに
B.2 SSLv2の概要
B.3 欠けている機能
B.4 セキュリティ上の問題
B.5 PCT
B.6 SSLv1について
続きを見る