Javaセキュリティ

[cover photo]
  • 2001年11月 発行
  • 512ページ
  • ISBN4-87311-064-5
  • 原書: Java Security
  • フォーマット

この商品は品切れ再入荷未定です

本書はJavaプログラムの観点から、セキュリティについて詳細に解説しています。セキュリティを提供するJavaの基本的なプラットフォーム機能のほか、セキュリティモデルの強化のためJavaに加えられた拡張(デジタル署名、セキュリティプロバイダ、アクセスコントローラ)を取り上げています。Javaセキュリティモデルのアーキテクチャと、そのモデルをプログラム的に、またシステム管理的にどのように使用できるか、すべきかを理解するための一冊です。

監訳者まえがき
まえがき
対象読者
本書で使用するバージョン
本書の表記法
本書の構成
謝辞
本書へのご意見

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クラス

Feedback

皆さんのご意見をお聞かせください。ご購入いただいた書籍やオライリー・ジャパンへのご感想やご意見、ご提案などをお聞かせください。より良い書籍づくりやサービス改良のための参考にさせていただきます。
[feedbackページへ]