SunJSSE の FIPS 140 準拠モード

Sun の Java SE 実装バージョン 6 以降では、SSL/TLS 実装を含む SunJSSE プロバイダを、そのデフォルトモードの代わりに FIPS 140 準拠モードで動作するように構成できます。このドキュメントでは、FIPS 140 準拠モード (以下「FIPS モード」と呼ぶ) について説明します。

SunJSSE の FIPS モードの構成

SunJSSE を FIPS モードに構成するには、SunJSSE で必要なすべての暗号化アルゴリズムの実装を提供する適切な FIPS 140 準拠の暗号化プロバイダに SunJSSE を関連付けます。これは次のいずれかの方法で行うことができます。

  1. ファイル ${java.home}/lib/security/java.security を編集し、com.sun.net.ssl.internal.ssl.Provider を指定する行を変更して、FIPS 140 準拠の暗号化プロバイダのプロバイダ名を指定します。たとえば、暗号化プロバイダの名前が SunPKCS11-NSS の場合、

      security.provider.4=com.sun.net.ssl.internal.ssl.Provider
    

    to

      security.provider.4=com.sun.net.ssl.internal.ssl.Provider SunPKCS11-NSS
    

    指定された名前のプロバイダのクラスも、セキュリティープロバイダとして java.security ファイル内に指定する必要があります。

  2. 実行時に、java.security.Provider オブジェクトをパラメータとして受け取る SunJSSE プロバイダのコンストラクタを呼び出します。たとえば、変数 cryptoProvider が暗号化プロバイダの参照である場合、new com.sun.net.ssl.internal.ssl.Provider(cryptoProvider) を呼び出します。

  3. 実行時に、String オブジェクトをパラメータとして受け取る SunJSSE プロバイダのコンストラクタを呼び出します。たとえば、暗号化プロバイダの名前が SunPKCS11-NSS である場合、new com.sun.net.ssl.internal.ssl.Provider("SunPKCS11-NSS") を呼び出します。指定された名前のプロバイダは、構成済みのいずれかのセキュリティープロバイダである必要があります。

ある Java プロセスにおいて、SunJSSE は FIPS モードまたはデフォルトモードのいずれかで使用できますが、両方のモードを同時に使用することはできません。SunJSSE がいったん初期化されると、モードを変更できません。つまり、いずれかの実行時構成オプション (オプション 2 または 3) を使用する場合、SSL/TLS 操作を実行する前に構成を実行する必要があることを意味します。

指定された構成済みプロバイダのみが、SunJSSE によるすべての暗号化操作に使用されることに注意してください。Java SE 実装に組み込まれているものを含む、その他すべての暗号化プロバイダは、無視されて使用されません。

FIPS モードとデフォルトモードの違い

FIPS モードでは、SunJSSE はデフォルトモードと同じように動作しますが、次の点が異なっています。

FIPS モードの特徴

FIPS モードで使用できる暗号化方式群

次に示すのは、SunJSSE によって FIPS モードで使用できる暗号化方式群の現行リストで、構成された FIPS 暗号化モジュールが必要なアルゴリズムをサポートすると仮定した場合に TLS プロトコルに割り当てられる名前と ID が示されています。SunJSSE はこれらの一部の暗号化方式群の名前に接頭辞 SSL_ を使用していますが、これらは以前のバージョンの仕様との互換性を保つためのものに過ぎません。FIPS モードでは、SunJSSE は常に TLS 1.0 以降を使用し、これらの仕様の要求に応じた暗号化方式群を実装します。

SSL_RSA_WITH_3DES_EDE_CBC_SHA

0x000a

SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA

0x0016

TLS_RSA_WITH_AES_128_CBC_SHA

0x002f

TLS_DHE_DSS_WITH_AES_128_CBC_SHA

0x0032

TLS_DHE_RSA_WITH_AES_128_CBC_SHA

0x0033

TLS_RSA_WITH_AES_256_CBC_SHA

0x0035

TLS_DHE_DSS_WITH_AES_256_CBC_SHA

0x0038

TLS_DHE_RSA_WITH_AES_256_CBC_SHA

0x0039

TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA

0xC003

TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA

0xC004

TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA

0xC005

TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA

0xC008

TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA

0xC009

TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA

0xC00A

TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA

0xC00D

TLS_ECDH_RSA_WITH_AES_128_CBC_SHA

0xC00E

TLS_ECDH_RSA_WITH_AES_256_CBC_SHA

0xC00F

TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA

0xC012

TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

0xC013

TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA

0xC014

TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA

0xC017

TLS_ECDH_anon_WITH_AES_128_CBC_SHA

0xC018

TLS_ECDH_anon_WITH_AES_256_CBC_SHA

0xC019

結論

FIPS モードの Network Security Services (NSS) などの適切な FIPS 140 準拠の暗号化プロバイダを一緒に使用して SunJSSE を FIPS 140 準拠モードに構成すると、SunJSSE は FIPS 140 に準拠するようになります。


Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.