本書はJavaプログラムの観点から、セキュリティについて詳細に解説しています。セキュリティを提供するJavaの基本的なプラットフォーム機能のほか、セキュリティモデルの強化のためJavaに加えられた拡張(デジタル署名、セキュリティプロバイダ、アクセスコントローラ)を取り上げています。Javaセキュリティモデルのアーキテクチャと、そのモデルをプログラム的に、またシステム管理的にどのように使用できるか、すべきかを理解するための一冊です。
Javaセキュリティ
Scott Oaks 著、島田 秋雄 監訳、今野 睦, 依田 光江 訳
- TOPICS
- Security , Java
- 発行年月日
- 2001年11月
- PRINT LENGTH
- 512
- ISBN
- 4-87311-064-5
- 原書
- Java Security
- FORMAT
目次
監訳者まえがき まえがき 対象読者 本書で使用するバージョン 本書の表記法 本書の構成 謝辞 本書へのご意見 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クラス