セキュリティの強化および変更
|
ドキュメントの目次 |
trustProxy プロパティのデフォルト値
以前のリリースの Java プラットフォームでは、trustProxy のデフォルト値は false でしたが、バージョン 1.3 の Java Plug-in から、trustProxy プロパティのデフォルト値が true になりました。変更の理由:
DNS の不正行為を防ぐため、アプレットからの接続を確立する前に、Java Plug-in のセキュリティチェックでサーバ側のホスト名を IP アドレスに解決することが求められます。 このセキュリティチェックの一部として、クライアント側のイントラネット DNS サーバが、インターネットからの外部ホスト名を解決する必要があります。 ただし、ファイアウォールまたは企業サイトでの他のセキュリティ上の制限のために、多くの企業ネットワーク内の DNS サーバは、この解決機能を実行できません。 trustProxy プロパティがデフォルトで true に設定されたため、このような場合には、Java Plug-in は DNS 名の解決をクライアントサイトのプロキシサーバにゆだねます。変更に関するセキュリティ上の考慮点
trustProxy プロパティが true の場合には、DNS ルックアップをプロキシサーバに委譲できるため、プロキシサーバでローカルサイトが DNS の不正行為によりセキュリティが侵害されることがないように注意が必要です。 プロキシサーバは、指定されたホスト名を同じ IP アドレスにマップし続ける必要があります。インターネットサーバのホスト名が、ローカルのクライアント側イントラネット上のマシンの IP アドレスにマップされることは許されません。 常に一意のホスト名/IP アドレスのマッピングを提供するものとしてプロキシサーバを信頼できない場合、または、プロキシサーバが内部と外部の IP アドレスを区別できない場合、ネットワーク管理者が trustProxy プロパティを false に設定することがあります。 Java Plug-in コントロールパネルの「Java 実行環境オプション」フィールドに -DtrustProxy=false を入力すると、trustProxy プロパティが false に設定されます。 trustProxy が false の場合、DNS ルックアップは、クライアント側のイントラネット DNS サーバに任され、プロキシサーバに委譲されることはありません。 ただし、これは、イントラネットの DNS サーバがアプレットサーバのホスト名を解決できない場合には、インターネットを介してアプレットをダウンロードできないことを意味します。新しいクラスとインタフェース
- java.security.spec.RSAKeyGenParameterSpec
新しいクラス java.security.spec.RSAKeyGenParameterSpec により、RSA 鍵ペアを生成するときに、(生成される) 公開モジュラスのサイズと公開指数の値の両方を指定できます。
- java.security.DomainCombiner
新しいインタフェース java.security.DomainCombiner により、現在の AccessControlContext に関連付けられている ProtectionDomain を動的に更新できます。
- java.security.interfaces.RSAKey
新しいインタフェース java.security.interfaces.RSAKey により、鍵の詳細を調べる前に一般的な検査を行うことが可能になりました。java.security.interfaces.RSAPublicKey.getModulus() と java.security.interfaces.RSAPrivateKey.getModulus() がこのインタフェースに移されました。既存の RSAPublicKey および RSAPrivateKey インタフェースは、この新しいインタフェースから継承されるようになりました。
変更されたクラスとインタフェース
- java.security.BasicPermission および java.lang.System
クラス java.security.BasicPermission のコンストラクタが次のように変更されました。
- アクセス権の名前が null の場合は NullPointerException が発生する
- アクセス権の名前が空の場合は IllegalArgumentException が発生する
これまで、これらの条件は無視されていました。
この変更から、実装が java.security.BasicPermission のサブクラスである java.util.PropertyPermission のインスタンスを構築する java.lang.System.getProperty(String key) および java.lang.System.getProperty(String key, String def) の動作も影響を受けます。変更により、java.lang.System.getProperty() または java.lang.System.setProperty() を空白のプロパティ名を使って呼び出すと、IllegalArgumentException がスローされます。
- java.security.interfaces.RSAPrivateKey および java.security.interfaces.RSAPublicKey
java.security.interfaces.RSAPublicKey および java.security.interfaces.RSAPrivateKey のメソッド getModulus() は、java.security.interfaces.RSAKey に移動しました。上記の説明を参照してください。
- java.security.KeyPairGenerator
メソッド java.security.KeyPairGenerator.generateKeyPair() が、JDK 1.1.x との下位互換性を保証するために復元されました。
- java.security.Security
java.security.Security に次の 2 つのメソッドが新しく追加されました。 これにより、提供される機能に基づいたサービスプロバイダの選択が可能になりました。
- public static Provider[] getProviders(java.util.Map filter)
- public static Provider[] getProviders(String filter)
- java.security.Signature
java.security.Signature に新しい署名検証メソッドが追加されました。 この新しいメソッドは、FIPS 140-1 に準拠しています。FIPS 140-1 では、証明書として公開鍵を渡す必要がありますが、以下の追加によりそれが可能になりました。
その他の情報
- RSA 署名および関連するサービスへのサポートは、暗号化サービスプロバイダから Java 暗号化アーキテクチャ (JCA) に提供されています。 Java 暗号化アーキテクチャ (JCA) は、JAR ファイルとしてパッケージされ、JRE のブートストラップクラスパスに提供されています。
- keytool および jarsigner に新しいコマンド行オプション「-provider」が追加され、ユーザは Java Runtime Environment (JRE) のセキュリティプロパティファイルに含まれていない特定のサービスプロバイダを指定できるようになりました。
- PKIX RFC 2459 により要求または推奨される X.520 属性がすべてサポートされるように拡張されました。
- jarsigner は、Netscape によって署名された jar ファイルを検証できるようになりました。
- X509 証明書の処理が更新され、Relative Distinguished Name (RDN) 内の複数の Attribute/Value Assertions (AVA) がサポートされています。
- これにより、Java 2 SDK v 1.3 と VeriSign のコード署名用証明書との完全な相互運用が可能になりました。今後、keytool は、VeriSign の証明書をインポートできます。
- 1.2.2 FCS プラグインリリースでは、JAR 署名者のルート CA 証明書 (フィンガープリント) と、実行プラットフォーム上の Microsoft Internet Explorer (IE) CA ストアとが有効期限も含めて「正確に」一致することが要求されました。
しかし、有効であっても、異なるルート CA 証明書 (2004、2018、2028 年などに期限が切れる) が IE の CA ストアのさまざまな典型であるため、このアルゴリズムの制限が厳しすぎることが明らかになりました。日付の照合に基づくこのアルゴリズムは、削除されました。IE の CA ストアは、実行環境での検証 (ブラウザとして Netscape と IE のどちらを使用している場合でも) に使用されます。詳細は、以下を参照してください。
http://java.sun.com/products/plugin/1.2/docs/nsobjsigning.html
- アプレットのサポートクラスを含む jar ファイルは、プラグインの lib/applet/ ディレクトリに配置されます。この配置により、アプレットクラスローダが、ネットワーク上でダウンロードした場合と同様の保護機能を提供しつつ、アプレットクラスをローカルファイルシステムからプリロードするため、大規模なアプレットの起動時間が短縮されます。
Copyright © 1999 Sun Microsystems, Inc. All Rights Reserved. コメントの送付先: java-security@sun.com これはメーリングリストではありません。 |
Java ソフトウェア |