目次
監訳者まえがき
まえがき
対象読者
本書で使用するバージョン
本書の表記法
本書の構成
謝辞
本書へのご意見
1章 Javaアプリケーションのセキュリティ
1.1 セキュリティとは
1.2 Javaサンドボックス
1.3 アプリケーション、アプレット、プログラム
1.3.1 Javaアプリケーションの構造
1.4 Javaアプリケーションの実行
1.4.1 JavaRunnerアプリケーションの概要
1.4.2 Javaアプリケーションに組み込まれるセキュリティ
1.5 まとめ
2章 Java言語のセキュリティ
2.1 Java言語のセキュリティ構造
2.1.1 オブジェクトのシリアライゼーションとメモリの完全性
2.2 Java言語の規則の遂行
2.2.1 コンパイラによる規則の遂行
2.2.2 バイトコード検証器
2.2.3 実行時の規則の遂行
2.3 まとめ
3章 Javaクラスローダ
3.1 セキュリティとクラスローダ
3.1.1 クラスローダとセキュリティの遂行
3.1.2 クラスローダと名前空間
3.2 クラスローダの構造
3.2.1 内部クラスローダ
3.2.2 アプレットクラスローダ
3.2.3 RMIクラスローダ
3.2.4 セキュアクラスローダ
3.2.5 URLクラスローダ
3.2.6 適切なクラスローダの選択
3.3 クラスのロード
3.4 クラスローダの実装
3.4.1 ClassLoaderクラスの実装
3.4.2 SecureClassLoaderクラスの実装
3.4.3 クラスローダにおけるセキュリティポリシの実装
3.5 クラスローダの拡張
3.5.1 複数サイトからのロード
3.5.2 JARファイルクラスローダ
3.6 クラスローダに関する他のトピック
3.6.1 委譲
3.6.2 リソースのロード
3.6.3 ライブラリのロード
3.7 まとめ
4章 セキュリティマネージャクラス
4.1 セキュリティマネージャの概要
4.1.1 セキュリティマネージャとJava API
4.2 信頼できるクラスと信頼できないクラス
4.3 セキュリティマネージャの使用法
4.3.1 セキュリティマネージャの設定
4.3.2 ファイルアクセスに関するメソッド
4.3.3 ネットワークアクセスに関するメソッド
4.3.4 Java仮想マシンを保護するメソッド
4.3.5 プログラムスレッドを保護するメソッド
4.3.6 システムリソースを保護するメソッド
4.3.7 セキュリティの性質を保護するメソッド
4.4 まとめ
5章 アクセスコントローラ
5.1 CodeSourceクラス
5.2 パーミッション
5.2.1 Permissionクラス
5.2.2 Java APIのパーミッション
5.2.3 Permissionクラスの使用法
5.2.4 BasicPermissionクラス
5.2.5 PermissionCollectionクラス
5.2.6 Permissionsクラス
5.3 Policyクラス
5.3.1 デフォルトのポリシ
5.4 プロテクションドメイン
5.5 AccessControllerクラス
5.6 ガードオブジェクト
5.7 まとめ
6章 セキュリティポリシの実装
6.1 セキュリティマネージャのprotectedメソッド
6.1.1 クラスローダの深さ
6.1.2 セキュリティマネージャのprotectedインスタンス変数
6.2 セキュリティマネージャとクラスローダ
6.2.1 クラスローダとセキュリティマネージャ
6.3 実装に関する技法
6.3.1 ユーティリティクラス
6.3.2 ネットワークアクセスの実装
6.3.3 クラスローダのネットワークパーミッション
6.3.4 スレッドセキュリティの実装
6.3.5 パッケージアクセスの実装
6.3.6 Java 2におけるセキュリティポリシの確立
6.3.7 Java 1.1のセキュリティポリシの確立
6.4 安全なアプリケーションの実行
6.4.1 安全なJavaRunner
6.4.2 安全なJava Launcher
6.5 まとめ
7章 暗号の基礎
7.1 認証の必要性
7.1.1 作成者の認証
7.1.2 データの認証
7.1.3 認証におけるJavaの役割
7.2 認証の役割
7.3 暗号エンジン
7.3.1 メッセージダイジェスト
7.3.2 暗号鍵
7.3.3 電子署名
7.3.4 暗号化エンジン
7.4 まとめ
8章 セキュリティプロバイダ
8.1 セキュリティプロバイダのアーキテクチャ
8.1.1 アーキテクチャのコンポーネント
8.1.2 セキュリティプロバイダの選定
8.2 Providerクラス
8.2.1 Providerクラスの使用法
8.2.2 Providerクラスの実装方法
8.3 Securityクラス
8.3.1 Securityクラスとセキュリティマネージャ
8.4 エンジンクラスのアーキテクチャ
8.5 まとめ
9章 メッセージダイジェスト
9.1 メッセージダイジェストクラスの使用法
9.1.1 安全なメッセージダイジェスト
9.2 メッセージダイジェストストリーム
9.2.1 DigestOutputStreamクラス
9.2.2 DigestInputStreamクラス
9.3 メッセージダイジェストクラスの実装
9.4 まとめ
10章 鍵と証明証
10.1 鍵
10.1.1 Keyインタフェース
10.1.2 KeyPairクラス
10.2 KeyPairGeneratorクラス
10.2.1 KeyPairGeneratorクラスの使用法
10.2.2 DSA鍵の生成
10.2.3 キーペアジェネレータの実装
10.3 KeyFactoryクラス
10.3.1 KeyFactoryクラスの使用法
10.3.2 キーファクトリの実装
10.3.3 鍵の仕様
10.3.4 キーファクトリの例
10.4 証明書
10.4.1 Certificateクラス
10.4.2 CertificateFactoryクラス
10.4.3 X509Certificateクラス
10.4.4 X509Certificateクラスのメソッド
10.4.5 無効になった証明書
10.5 鍵、証明書、オブジェクトのシリアライゼーション
10.6 まとめ
11章 鍵管理
11.1 鍵管理の概要
11.1.1 Principal
11.2 KeyStoreクラス
11.3 鍵管理の例
11.3.1 KeyStoreクラスのインストール
11.4 まとめ
12章 電子署名
12.1 Signatureクラス
12.1.1 Signatureクラスの使用法
12.1.2 SignedObjectクラス
12.1.3 署名と認証
12.2 署名されたクラス
12.2.1 署名されたJARファイルの読み取り
12.2.2 署名されたJARファイルとセキュリティポリシ
12.3 Signatureクラスの実装
12.4 まとめ
13章 暗号化
13.1 輸出規制
13.2 JCEにおけるSunセキュリティプロバイダ
13.3 JCEにおける鍵の種類
13.3.1 秘密鍵
13.4 秘密鍵エンジン
13.4.1 KeyGeneratorクラス
13.4.2 SecretKeyFactoryクラス
13.5 データの暗号化
13.5.1 Cipherクラスの使用法
13.5.2 Cipherアルゴリズム
13.5.3 Cipherクラスの実装
13.6 Cipherストリーム
13.6.1 CipherOutputStreamクラス
13.6.2 CipherInputStreamクラス
13.6.3 SSL暗号化
13.7 対称鍵交換
13.8 シールドオブジェクト
13.9 まとめ
付録A セキュリティツール
A.1 keytool
A.1.1 keytoolのグローバルオプション
A.1.2 証明書のエントリの追加
A.1.3 キーエントリの追加
A.1.4 キーストアエントリの修正
A.1.5 キーストアエントリの削除
A.1.6 キーストアデータのテスト
A.1.7 ベースのアイデンティティデータベースのインポート
A.1.8 その他のコマンド
A.2 jarsigner
A.2.1 署名されたJARファイルの作成
A.2.2 JARファイルの検証
A.3 policytool
A.3.1 ポリシコードベースの管理
A.3.2 パーミッションの管理
A.3.3 証明書のエントリの管理
A.4 手作業によるファイル管理
A.4.1 java.securityファイル
A.4.2 java.policyファイル
付録B アイデンティティベースの鍵管理
B.1 アイデンティティ
B.1.1 Identityクラス
B.1.2 Signerクラス
B.2 アイデンティティスコープ
B.2.1 IdentityScopeクラスの使用法
B.2.2 アイデンティティスコープの書き方
B.2.3 アイデンティティスコープとセキュリティマネージャ
B.3 アイデンティティスコープの鍵管理
B.3.1 Identityクラスの実装
B.3.2 Signerクラスの実装
B.3.3 共有システムアイデンティティスコープ
B.3.4 アイデンティティの作成
B.4 まとめ
付録C セキュリティに関する情報源
C.1 セキュリティのバグ
C.1.1 Javaセキュリティバグ
C.1.2 セキュリティバグの追跡
C.2 サードパーティのセキュリティプロバイダ
C.3 セキュリティに関するリファレンス
付録D クイックリファレンス
java.securityパッケージ
java.security.certパッケージ
java.security.interfacesパッケージ
java.security.specパッケージ
javax.cryptoパッケージ
javax.crypto.interfacesパッケージ
javax.crypto.specパッケージ
補録のパッケージ
コラム
セキュリティとオペレーティングシステム
Java 2の安全なアプリケーション
他の言語のバイトコード検証器
すでにロードされているクラスの検索
セキュアクラスローダとdefineClass( )メソッド
クラスローダと他のプロトコル
すべてのセキュリティ違反を認識できるわけではない
アプレットがファイルをアクセスできない本当の理由
ネットワークアクセスが制限される本当の理由
プロパティの展開とポリシクラス
アクセスコントローラとセキュリティマネージャ
セキュリティマネージャの判定
ヌルセキュリティマネージャ
ファイルアクセスの許可
暗号化とデータの認証の対比
証明書:クラスかインタフェースか
識別名について
非公開鍵の暗号化
暗号化と軍需品
NullCipherクラス
|