Java Plug-in での RSA 署名付きアプレットの検証



このセクションでは、次のトピックについて説明します。

はじめに

このページでは、Java Plug-in で RSA 署名付きアプレットを検証する方法の概要を説明します。RSA 署名付きアプレットの使用方法の概要については、「Java Plug-in での RSA 署名付きアプレットの配備方法」を参照してください。

RSA 検証のサポート

ブラウザに依存しない方法で RSA 署名を検証できるようにするため、暗号化サービスプロバイダ (CSP) が Java Plug-in に含まれています。CSP では「MD2withRSA」、「MD5withRSA」、および「SHA1withRSA」デジタル署名アルゴリズムがサポートされています。これは、PluginClassLoader の静的な初期化子の一部として、Java 暗号化アーキテクチャーフレームワークに自動的に登録されます。

動的信頼性管理のサポート

Java SE には、「コードベース」および「保護ドメイン」に基づく詳細なアクセス制御があります。JAR ファイルからロードされる各クラスは、コードソースを保持します。コードソースには、2 つの情報がカプセル化されます。

証明書チェーンは、階層的に順序付けられた公開鍵証明書のリストです。これは、署名者の公開鍵証明書で始まり、ルート証明書発行局 (ルート CA) で終わります。チェーン内のある証明書の公開鍵は、チェーン内の前の証明書に含まれる署名の検証に使用されます。ルート CA の証明書は、自己署名証明書です。ルート CA はよく知られており広く公開されているので信頼性が高いものとされています。

PluginClassLoader は、構成済みのセキュリティーポリシーをチェックして、特定のコードソースに付与するアクセス権を決定します。次に、コードソースとそれに付与されるアクセス権が保護ドメインを形成します。この動作は、セキュリティー保護されたクラスローダ (java.security.SecureClassLoader のインスタンス) すべてに共通です。

sun.plugin.security.PluginClassLoader は、java.net.URLClassLoader のサブクラスである sun.applet.AppletClassLoader を拡張します。一方、java.net.URLClassLoaderjava.security.SecureClassLoader を拡張します。PluginClassLoader は、次の補足的な作業も実行します。アプレットが署名付きであり、それに付与されたアクセス権が特別な usePolicy アクセス権を含まない場合、PluginClassLoader がアプレットのコードソースから署名者 (および署名者のサポートする証明書チェーン) を抽出し、それらの検証を行います。

Plug-in が証明書チェーンをルート CA 証明書まで検証可能な場合、ルート CA 証明書が、信頼できるルート CA 証明書のデータベースに含まれるかどうかを確認できます。ルート CA 証明書がデータベースに含まれる場合、Plug-in は認証された署名者の証明書チェーンを表示して、そのプリンシパルにより署名されたコードに AllPermission を付与するかどうかをユーザーに問い合わせます。AllPermission アクセス権を割り当てられた Java コードはシステムコードと同様に扱われ、システムコードが保持するすべての特権を保持します。次に、ユーザーは、プリンシパルにより署名されたコードに AllPermission を付与するかどうかと、付与する場合はアクセス権の付与を以降のセッションすべてに適用するかそれとも現行のセッションだけに限定するかを選択できます。

アプレットが署名付きではない場合、または、署名付きのアプレットのアクセス権が usePolicy を含んでいる場合については、「概要—アプレットのセキュリティーの基本」を参照してください。

usePolicy アクセス権

システム管理者は、usePolicy という名前のアクセス権を使用して、PluginClassLoader の動作を無効にできます。usePolicy アクセス権を、構成済みのセキュリティーポリシーを使用してコードソースに付与する場合、ユーザーへの要求は行われません。セキュリティーポリシー内で指定されたアクセス権だけがコードソースに付与されます。