機械翻訳について

7 Jipher診断

JavaアプリケーションがJipherを使用していることの確認

システム・プロパティjava.security.debugproviderに設定すると、JVMは、アプリケーションの実行中にトレース・メッセージ(通常はstderr)を出力し、各サービスおよびアルゴリズムの提供に使用されているプロバイダを示します。 出力は、次のようなものです。

Provider: MessageDigest.SHA-256 algorithm from: JipherJCE
Provider: Signature.SHA256withRSA verification algorithm from: JipherJCE
Provider: KeyGenerator.SunTls12Prf algorithm from: JipherJCE

システム・プロパティjava.security.debugjipherに設定すると、Jipherは、最初の使用時のライブラリ・ロード・ステップのロギングなど、追加のデバッグ情報を出力します。 出力は、次のようなものです。

jipher: Libraries found in classpath JAR, loading from jar.
jipher: Attempting to locate libraries in classpath JAR file
jipher: Found jar:file:/usr/local/lib/jipher-jce-10.35-se.jar!/libs/linux_x64/libjipher.so
jipher: Found jar:file:/usr/local/lib/jipher-jce-10.35-se.jar!/libs/linux_x64/patched-fips.so
jipher: Found jar:file:/usr/local/lib/jipher-jce-10.35-se.jar!/libs/linux_x64/patched-openssl.cnf
jipher: Creating temporary directory to store libraries: /tmp/jiphertmp-10.35-1510124983029925122
jipher: Copying jar:file:/usr/local/lib/jipher-jce-10.35-se.jar!/libs/linux_x64/libjipher.so contents to file /tmp/jiphertmp-10.35-1510124983029925122/libjipher.so
jipher: Copying jar:file:/usr/local/lib/jipher-jce-10.35-se.jar!/libs/linux_x64/patched-fips.so contents to file /tmp/jiphertmp-10.35-1510124983029925122/fips.so
jipher: Copying jar:file:/usr/local/lib/jipher-jce-10.35-se.jar!/libs/linux_x64/patched-openssl.cnf contents to file /tmp/jiphertmp-10.35-1510124983029925122/openssl.cnf
jipher: Loading /tmp/jiphertmp-10.35-1510124983029925122/libjipher.so...
jipher: ...Done
jipher: Configuring openssl to load FIPS module from dir: /tmp/jiphertmp-10.35-1510124983029925122
jipher: Configuring openssl using configuration in file: /tmp/jiphertmp-10.35-1510124983029925122/openssl.cnf
jipher: FIPS ctx: fips available = 1, default available = 1;  NULL ctx: fips available = 0, default available = 0
jipher: Setting FIPS enforcement policy = FIPS

詳細は、「Java Platform, Standard Editionセキュリティ開発者ガイド」「java.security.debugシステム・プロパティ」を参照してください。

jdk.SecurityProviderService Java Flight Recorder (JFR)イベントを使用したセキュリティ・プロバイダの使用状況の追跡

JDK 20以降では、Java Flight Recorder (JFR)イベントjdk.SecurityProviderServicejava.security.Provider.getService(String type, String algorithm)コールの詳細が記録されます。 このイベントには次のフィールドが含まれます:

表7-1 JFRイベントjdk.SecurityProviderServiceフィールド

フィールド名 説明
type サービスのタイプ
algorithm アルゴリズム名
provider セキュリティ・プロバイダ

JFRイベントjdk.SecurityProviderServiceを使用して、JavaアプリケーションがJipherを使用していることを確認できます。 このJFRイベントはデフォルトで無効になっています。 JFR構成ファイルまたは標準のJFRオプションを使用して有効にできます。

FIPS 140の制限の実施を報告

FIPS 140の制限を適用する場合、Jipherは、次のものを生成するように指示されるとInvalidParameterExceptionをスローします:

同様に、Jipherは、次を使用するように指示された場合、ProviderExceptionをスローします:

  • セキュリティ強度が80ビット未満のKeyPairで、シグネチャの検証や暗号テキストの復号化など、保護されたデータを処理
  • たとえば、デジタル・シグネチャの生成やプレーンテキストの暗号化など、データを保護するためのセキュリティ強度が112ビット未満のSecretKeyまたはKeyPair
  • SHA-1シグネチャを生成
  • FIPS 140で許可されているドメイン・パラメータを使用しないDSA KeyPair (以前にリストしたもの)

特定のアルゴリズムとキー長の推定セキュリティ強度については、NIST SP 800-57 Part 1 Rev. 5: Recommendation for Key Management: Part 1 - Generalの"Table 2: Comparable security strengths of symmetric block cipher and asymmetric-key algorithms"を参照してください。

構成ミスを報告しています

Jipherが、埋込みネイティブ・ライブラリをファイル・システムの一時ディレクトリに抽出できず、そこからJVMプロセスにロードできない場合は、ProviderExceptionがスローされます。 これは、JVMプロセスを実行しているユーザーに一時ディレクトリを作成する権限がないか、または包含するファイル・システムに格納されているバイナリを実行する権限がない場合に発生します。

Jipherが静的に登録され、ネイティブ・ライブラリのロード時にProviderExceptionがスローされた場合、プロバイダは登録されません。 統計的に登録された他のプロバイダも登録されます。

OpenSSLネイティブ・コードでの異常操作のレポート

OpenSSLネイティブ・コードで発生するエラー条件は、次の方法でアプリケーションにレポートされます: