プライマリ・コンテンツに移動
Java Platform, Standard Editionセキュリティ開発者ガイド
リリース10
E94999-01
目次へ移動
目次

前
次
次へ

4 JDKプロバイダ・ドキュメント

このドキュメントには、JDKに含まれるプロバイダの技術的詳細が含まれています。読者がJava暗号化アーキテクチャとプロバイダ・アーキテクチャを詳しく理解していることが前提となります。

注意:

Javaセキュリティ標準アルゴリズム名仕様には、このドキュメントで使用されている標準名に関する詳細な情報が含まれています。

JDKプロバイダの概要

Javaプラットフォームでは、暗号化、公開鍵インフラストラクチャ、認証、安全な通信、アクセス制御など、主要なセキュリティ分野に渡る一連のAPIが定義されています。これらのAPIによって、開発者はアプリケーション・コードにセキュリティ・メカニズムを簡単に統合できます。

Java暗号化アーキテクチャ(JCA)およびそのプロバイダ・アーキテクチャは、Java Development Kit (JDK)のコア概念です。このアーキテクチャについて十分理解していることが前提となります。

注意: JDKでの暗号化実装は、歴史的な理由および提供するサービスの種類により、様々なプロバイダによって配布されています(Sun、SunJSSE、SunJCE、SunRsaSign)。汎用アプリケーションは、特定のプロバイダから暗号化サービスを要求しないようにする必要があります。つまり、

getInstance("...", "SunJCE");  // not recommended

getInstance("...");            // recommended

後者のようにしないと、アプリケーションは特定のプロバイダに結び付けられることになり、そのプロバイダはほかのJava実装で使用できない可能性があります。特定の要求されたプロバイダよりも優先順位が高い、使用可能な最適化されたプロバイダ(たとえば、PKCS11によるハードウェア・アクセラレータまたはMicrosoftのMSCAPIなどのネイティブOS実装)を利用できない場合もあります。

次の表では、モジュール、およびサポートされているJava暗号化サービス・プロバイダをリストします。

表4-1 モジュールおよびJava暗号化サービス・プロバイダ

モジュール プロバイダ

java.base

SUN、SunRsaSign、SunJSSE、SunJCE脚注1、Apple

java.naming

JdkLDAP

java.security.jgss

SunJGSS

java.security.sasl

SunSASL

java.smartcardio

SunPCSC

java.xml.crypto

XMLDSig

jdk.crypto.cryptoki

SunPKCS11脚注1

jdk.crypto.ec

SunEC脚注1

jdk.crypto.mscapi

SunMSCAPI脚注1

jdk.crypto.ucrypto

OracleUcrypto脚注1

jdk.security.jgss

JdkSASL

脚注1 署名付きJARファイルとして前に説明した、JCE暗号プロバイダを示します(JCEプロバイダにはCipher/KeyAgreement/KeyGenerator/Mac/SecretKeyFactory実装が含まれます)。

暗号化アルゴリズムの輸入制限

デフォルトでは、アプリケーションは、どの強度の暗号化アルゴリズムでも使用できます。ただし、一部の場所での輸入規制のため、それらのアルゴリズムの強度を制限する必要がある場合があります。JDKでは、ディレクトリ<java-home>/conf/security/policyに、暗号化アルゴリズムの強度を決定する管轄ポリシー・ファイルのセットが2つ用意されています。管轄ポリシー・ファイル、およびそれらのアクティブ化の方法については、暗号化強度の構成を参照してください。

自分の場所のための正確な要件を決定する際は、輸出入管理コンサルタントまたは弁護士に相談してください。

制限付きの構成のために、次の表では、制限付きの一連の管轄ポリシー・ファイルで許可されている最大鍵サイズをリストします。

表4-2 暗号化アルゴリズムの最大鍵サイズ

アルゴリズム 最大鍵サイズ
DES 64
DESede *
RC2 128
RC4 128
RC5 128
RSA *
その他すべて 128

暗号の変換

javax.crypto.Cipher.getInstance(String transformation)ファクトリ・メソッドは、algorithm/mode/padding形式の変換を使用してCipherオブジェクトを生成します。モード/パディングを省略すると、SunJCEプロバイダとSunPKCS11プロバイダは、多くの対称暗号でECBをデフォルト・モードとして、PKCS5Paddingをデフォルト・パディングとして使用します。

デフォルトを使用するのではなく、アルゴリズム、モードおよびパディングを完全に指定した変換を使用することをお薦めします。デフォルトは、プロバイダ固有であり、プロバイダによって異なる可能性があります。

注意:

ECBは、単一のデータ・ブロックに対しては正常に機能し、パラレル化可能ですが、複数のデータ・ブロックには絶対に使用しないでください。

SecureRandom実装

次の表に、利用可能なSecureRandom実装のデフォルトの優先順位を示します。

表4-3 デフォルトのSecureRandom実装

OS アルゴリズム名 プロバイダ名
Solaris 1. PKCS11脚注2脚注3 SunPKCS11
2. NativePRNG脚注4 SUN
3. DRBG SUN
4. SHA1PRNG脚注4 SUN
5. NativePRNGBlocking SUN
6. NativePRNGNonBlocking SUN
Linux 1. NativePRNG脚注4 SUN
2. DRGB SUN
3. SHA1PRNG脚注4 SUN
4. NativePRNGBlocking SUN
5. NativePRNGNonBlocking SUN
macOS 1. NativePRNG脚注4 SUN
2. DRGB SUN
3. SHA1PRNG脚注4 SUN
4. NativePRNGBlocking SUN
5. NativePRNGNonBlocking SUN
Windows 1. DRGB SUN
2. SHA1PRNG SUN
3. Windows-PRNG脚注5 SunMSCAPI

脚注2 SunPKCS11プロバイダはすべてのプラットフォームで利用可能ですが、これがデフォルトで有効になっているのは、ネイティブのPKCS11実装が自動的にインストールおよび構成される唯一のOSであるSolarisのみです。他のプラットフォームでは、アプリケーションまたはデプロイヤが特にネイティブPKCS11ライブラリをインストールして構成し、それを使用できるようにSunPKCS11を構成して有効にする必要があります。

脚注3 SolarisのPKCS11 SecureRandom実装は、小さいサイズの要求のパフォーマンス・オーバーヘッドが原因で、無効になっています(JDK-8098581: SecureRandom.nextBytes() hurts performance with small size requestsを参照)。再度有効にするには、sunpkcs11-solaris.cfgを編集します。

脚注4 Solaris、LinuxおよびOS Xでは、java.securityエントロピー収集デバイスfile:/dev/urandomまたはfile:/dev/randomに設定すると、SHA1PRNGよりNativePRNGが優先されます。それ以外の場合は、SHA1PRNGが優先されます。

脚注5 Windowsには現在NativePRNGはありません。同等の機能を利用するには、SunMSCAPIプロバイダを使用します。

SunPKCS11プロバイダ

暗号化トークン・インタフェース標準(PKCS#11)は、ハードウェア暗号化アクセラレータやスマート・カードなどの暗号化メカニズムに対するネイティブ・プログラミング・インタフェースを提供しています。SunPKCS11プロバイダを適切に構成すると、アプリケーションは標準のJCA/JCE APIを使用してネイティブPKCS#11ライブラリにアクセスできるようになります。SunPKCS11プロバイダ自体には暗号化機能は含まれていません。このプロバイダは、Java環境とネイティブPKCS11プロバイダ間のコンジットとして機能します。このプロバイダの詳細は、『Java PKCS#11リファレンス・ガイド』を参照してください。

SUNプロバイダ

JDK 1.1では、Providerアーキテクチャが導入されました。最初のJDKプロバイダにはSUNという名前が付けられ、2種類の暗号化サービス(MessageDigestおよびSignature)が含まれていました。以降のリリースでは、他のメカニズムが追加されました(SecureRandomKeyPairGeneratorKeyFactoryなど)。

当時有効だった米国の輸出制限事項によって、JDKの内部で使用可能な暗号化機能に重大な制限が課されました。このため、SUNプロバイダには、データを直接暗号化または復号化しない暗号化エンジンが含まれています。

SUNプロバイダでは、次のアルゴリズムを使用できます。

表4-4 SUNプロバイダでのアルゴリズム

エンジン アルゴリズム名
AlgorithmParameterGenerator DSA
AlgorithmParameters DSA
CertificateFactory X.509
CertPathBuilder PKIX
CertPathValidator PKIX
CertStore Collection
Configuration JavaLoginConfig
KeyFactory DSA
KeyPairGenerator DSA
KeyStore

PKCS12脚注6

JKS

DKS

CaseExactJKS

MessageDigest

MD2

MD5

SHA-1

SHA-224

SHA-256

SHA-384

SHA-512

SHA-512/224

SHA-512/256

SHA3-224

SHA3-256

SHA3-384

SHA3-512

Policy JavaPolicy
SecureRandom

DRBG

(次のメカニズムとアルゴリズムがサポートされています。SHA-224、SHA-512/224、SHA-256、SHA-512/256、SHA-384およびSHA-512を使用するHash_DRBGおよびHMAC_DRBG。AES-128、AES-192およびAES-256を使用するCTR_DRBG (導出関数を使用する場合と使用しない場合がある)。各組合せでサポートされている予測耐性と再シード、およびセキュリティ強度は、112から、それがサポートする最大強度まで要求できます。)

SHA1PRNG

(初期シードは、現在、システム属性とjava.securityエントロピー収集デバイスの組合せによって実行されます。)

NativePRNG

(nextBytes()では/dev/urandomが使用され、generateSeed()では/dev/randomが使用される)

NativePRNGBlocking

(nextBytes()およびgenerateSeed()では/dev/randomが使用される)

NativePRNGNonBlocking

(nextBytes()およびgenerateSeed()では/dev/urandomが使用される)

Signature

NONEwithDSA

SHA1withDSA

SHA224withDSA

SHA256withDSA

NONEwithDSAinP1363Format

SHA1withDSAinP1363Format

SHA224withDSAinP1363Format

SHA256withDSAinP1363Format

脚注6 PKCS12 KeyStore実装は、KeyBagタイプをサポートしていません。

次の表に、SHAメッセージ・ダイジェストに関連付けられたOIDを示します。

表4-5 SHAメッセージ・ダイジェストに関連付けられたOID

SHAメッセージ・ダイジェスト OID
SHA-224 2.16.840.1.101.3.4.2.4
SHA-256 2.16.840.1.101.3.4.2.1
SHA-384 2.16.840.1.101.3.4.2.2
SHA-512 2.16.840.1.101.3.4.2.3
SHA-512/224 2.16.840.1.101.3.4.2.5
SHA-512/256 2.16.840.1.101.3.4.2.6
SHA3-224 2.16.840.1.101.3.4.2.7
SHA3-256 2.16.840.1.101.3.4.2.8
SHA3-384 2.16.840.1.101.3.4.2.9
SHA3-512 2.16.840.1.101.3.4.2.10

次の表に、DSA署名に関連付けられたOIDを示します。

表4-6 DSA署名に関連付けられたOID

DSA署名 OID
SHA1withDSA

1.2.840.10040.4.3

1.3.14.3.2.13

1.3.14.3.2.27

SHA224withDSA 2.16.840.1.101.3.4.3.1
SHA256withDSA 2.16.840.1.101.3.4.3.2

鍵サイズの制限

SUNプロバイダでは、次のデフォルト・キーサイズ(ビット単位)を使用し、次の制限を強制します。

KeyPairGenerator

アルゴリズム名前 デフォルトの鍵サイズ 制限/コメント
DSA 1024 鍵サイズは、512から1024の範囲で64の倍数であるか、2048および3072である必要があります。

AlgorithmParameterGenerator

アルゴリズム名前 デフォルトの鍵サイズ 制限/コメント
DSA 1024 鍵サイズは、512から1024の範囲で64の倍数であるか、2048および3072である必要があります。

CertificateFactory/CertPathBuilder/CertPathValidator/CertStore実装

CertificateFactoryCertPathBuilderCertPathValidatorおよびCertStoreSUNプロバイダ実装の詳細は、PKIプログラマーズ・ガイドの付録B: SUNプロバイダでのCertPath実装を参照してください。

SunRsaSignプロバイダ

SunRsaSignプロバイダは、SunJSSEプロバイダのRSA署名の機能が拡張された代替機能として、JDK 1.3で導入されました。

SunRsaSignプロバイダでは、次のアルゴリズムを使用できます。

表4-7 SunRsaSignプロバイダのエンジン・クラス・アルゴリズム名

エンジン アルゴリズム名
KeyFactory RSA
KeyPairGenerator RSA
Signature

MD2withRSA

MD5withRSA

SHA1withRSA

SHA224withRSA

SHA256withRSA

SHA384withRSA

SHA512withRSA

鍵サイズの制限

SunRsaSignプロバイダでは、次のデフォルト・キーサイズ(ビット単位)を使用し、次の制限を強制します。

KeyPairGenerator

表4-8 SunRsaSignプロバイダの鍵サイズの制限

アルゴリズム名前 デフォルトの鍵サイズ 制限/コメント
RSA 2048 鍵サイズは、512から16384ビットの範囲内である必要があります。鍵のサイズが3072を超えると、公開指数の長さは64ビットを超えることはできません。

SunJSSEプロバイダ

アルゴリズム

Java Secure Socket Extension (JSSE)は、個別のオプション・パッケージ(標準拡張機能とも呼ばれる)としてリリースされ、JDK 1.2.nおよび1.3.nで使用できました。SunJSSEプロバイダはこのリリースの一部として導入されました。

以前のJDKリリースでは、JDKでRSA署名プロバイダは使用できませんでした。このため、SunJSSEでは、共通で使用できるRSAベースの証明書を使用するために独自のRSA実装を提供する必要がありました。JDK 5では、SunRsaSignプロバイダが導入されました。このプロバイダは、SunJSSEプロバイダのすべての機能(およびそれ以上の機能)を提供します。JDK 5.0以降をターゲットにしているアプリケーションは、かわりにSunRsaSignプロバイダのインスタンスを要求する必要があります。RSAアルゴリズムは、下位互換性のためにこのプロバイダでも使用可能ですが、実際にはSunRsaSignプロバイダに実装されています。

SunJSSEプロバイダでは、次のアルゴリズムを使用できます。

エンジン アルゴリズム名
KeyFactory

RSA

注意: SunJSSEプロバイダは、以前のリリースとの下位互換性のためにあるため、KeyFactoryには使用しなでください。

KeyManagerFactory

PKIX: X509ExtendedKeyManagerインスタンスのファクトリであり、IETF PKIXワーキング・グループによってRFC 5280で定義された規則に従って、ローカル側の認証に使用するX.509証明書ベースの鍵ペアを管理します。現在、このKeyManagerFactoryは、KeyStoreオブジェクトまたはjavax.net.ssl.KeyStoreBuilderParametersを使用した初期化をサポートしています。

SunX509: X509ExtendedKeyManagerインスタンスのファクトリであり、ローカル側の認証に使用するX.509証明書ベースの鍵ペアを管理しますが、証明書の使用方法/有効性およびチェーン検証のチェックはあまり厳しくありません。このKeyManagerFactoryは、Keystoreオブジェクトを使用した初期化をサポートしますが、現在のところjavax.net.ssl.ManagerFactoryParametersクラスを使用した初期化はサポートしていません。

注意: SunX509ファクトリは、以前のリリースとの下位互換性のためにあるため、使用しなでください。

KeyPairGenerator

RSA

注意: SunJSSEプロバイダは、以前のリリースとの下位互換性のためにあるため、KeyPairGeneratorには使用しなでください。

KeyStore

PKCS12

注意: SunJSSEプロバイダは、以前のリリースとの下位互換性のためにあるため、KeyStoreには使用しなでください。

Signature

MD2withRSA

MD5withRSA

SHA1withRSA

注意: SunJSSEプロバイダは、以前のリリースとの下位互換性のためにあるため、Signatureには使用しなでください。

SSLContext

SSLv3

TLSv1

TLSv1.1

TLSv1.2

DTLSv1.0

DTLSv1.2

TrustManagerFactory

PKIX: X509ExtendedTrustManagerインスタンスのファクトリであり、IETF PKIXワーキング・グループによってRFC 5280で定義された規則に従って、証明書チェーンを検証します。現在、このTrustManagerFactoryは、KeyStoreオブジェクトまたはjavax.net.ssl.CertPathTrustManagerParametersを使用した初期化をサポートしています。

SunX509: X509ExtendedTrustManagerインスタンスのファクトリであり、証明書チェーンを検証しますが、証明書の使用方法/有効性およびチェーン検証のチェックはあまり厳しくありません。このTrustManagerFactoryは、Keystoreオブジェクトを使用した初期化をサポートしますが、現在のところjavax.net.ssl.ManagerFactoryParametersクラスを使用した初期化はサポートしていません。

注意: SunX509ファクトリは、以前のリリースとの下位互換性のためにあるため、使用しなでください。

SunJSSEプロバイダのプロトコルのパラメータ

SunJSSEプロバイダは、次のprotocolパラメータをサポートしています。

表4-9 SunJSSEプロバイダのプロトコルのパラメータ

プロトコル クライアントではデフォルトで有効 サーバーではデフォルトで有効

SSLv3
いいえ(使用不可脚注7) いいえ(使用不可脚注7)
TLSv1 はい はい
TLSv1.1 はい はい
TLSv1.2 はい はい
SSLv2Hello脚注8 いいえ はい
DTLSv1.0 はい はい
DTLSv1.2脚注9 はい はい

脚注7 SSLv3を使用可能です。

  • JDK 8u31リリース以降、SSLv3プロトコル(Secure Socket Layer)は無効になっており、デフォルトで使用できません。<java_home>/conf/security/java.securityファイルのjava.security.Securityプロパティjdk.tls.disabledAlgorithmsを参照してください。

  • SSLv3が絶対に必要な場合は、java.securityファイルのjdk.tls.disabledAlgorithmsプロパティからSSLv3を削除するか、JSSEが初期化される前にこのセキュリティ・プロパティを動的に設定すれば、プロトコルを再度アクティブにできます。

  • SSLv3プロトコルをデプロイ・レベルで有効化するには、前述のステップに従った後で、deployment.propertiesファイルを編集してdeployment.security.SSLv3=trueを追加します

脚注8 SSLv3、TLSv1、TLSv1.1およびTLSv1.2プロトコルを使用すると、SSLv2Hello擬似プロトコルを使用して、SSLv3、TLSv1、TLSv1.1およびTLSv1.2のClientHellosをSSLv2形式のhelloにカプセル化して送信できます。

脚注9 DTLSv1.0とDTLSv1.2の両方を使用可能です。

次の表は、SSLv2Hellosの使用時に可能な接続の組合せを示しています。

表4-10 SSLv2Hellosを使用して利用可能な接続

クライアント サーバー 接続を使用できるかどうか
使用可能 使用可能 はい
使用不可 使用可能 はい(最も相互運用可能度が高い: SunJSSEデフォルト)
使用可能 使用不可 いいえ
使用不可 使用不可 はい

暗号化方式群

SunJSSEは、数多くの暗号化方式群をサポートしています。表4-11は、SunJSSEによってサポートされている暗号化方式群、それらがデフォルトで有効になるか無効になるか、およびそれらが導入されたリリースを示しています。「なし」という値は、暗号化方式群がそのリリースでは実装されていないことを意味します。

注意:

DTLSバージョン1.0DTLSバージョン1.2によると、RC4暗号化方式群はDTLS接続とは使用できません。

楕円曲線暗号(ECDSA、ECDH、ECDHE、ECDH_anon)を使用する暗号化方式群では、次の要件を満たすJCE暗号化プロバイダが必要です。

  • プロバイダは、パッケージjava.security.specおよびjava.security.interfaces内のクラスとインタフェースで定義されているようにECCを実装する必要があります。Elliptic Curve鍵オブジェクトのgetAlgorithm()メソッドは、文字列「EC」を返す必要があります。

  • プロバイダは、SignatureアルゴリズムのSHA1withECDSAとNONEwithECDSA、KeyAgreementアルゴリズムのECDH、およびアルゴリズムECのKeyPairGeneratorKeyFactoryをサポートする必要があります。これらのアルゴリズムのいずれかが欠落している場合、SunJSSEではEC暗号化方式群の使用が許可されません。

  • プロバイダは、RFC 4492仕様のセクション5.1.1 (付録A「同等の曲線(情報)」も参照)で説明されているすべてのSECG曲線をサポートする必要があります。証明書では、圧縮されていない形式を使用してポイントをエンコードし、namedCurve選択を使用して(つまりオブジェクト識別子を使用して)曲線をエンコードします。

これらの要件が満たされていない場合、EC暗号化方式群が正しくネゴシエーションされないことがあります。

表4-11 SunJSSEでサポートされる暗号化方式群

暗号化方式群 JDK 6 JDK 7 JDK 8 JDK 9

SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA

使用不可

使用不可脚注10

使用不可

使用不可

SSL_DH_anon_EXPORT_WITH_RC4_40_MD5

使用不可

使用不可脚注10

使用不可

使用不可

SSL_DH_anon_WITH_3DES_EDE_CBC_SHA

使用不可

使用不可

使用不可

使用不可

SSL_DH_anon_WITH_DES_CBC_SHA

使用不可

使用不可脚注11

使用不可

使用不可

SSL_DH_anon_WITH_RC4_128_MD5

使用不可

使用不可

使用不可

使用不可

SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA

使用不可

使用不可脚注10

使用不可

使用不可

SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA

使用可能

使用可能

使用可能

使用可能

SSL_DHE_DSS_WITH_DES_CBC_SHA

使用不可

使用不可脚注11

使用不可

使用不可

SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA

使用不可

使用不可脚注10

使用不可

使用不可

SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA

使用可能

使用可能

使用可能

使用可能

SSL_DHE_RSA_WITH_DES_CBC_SHA

使用不可

使用不可脚注11

使用不可

使用不可

SSL_RSA_EXPORT_WITH_DES40_CBC_SHA

使用不可

使用不可脚注10

使用不可

使用不可

SSL_RSA_EXPORT_WITH_RC4_40_MD5

使用不可

使用不可脚注10

使用不可

使用不可

SSL_RSA_WITH_3DES_EDE_CBC_SHA

使用可能

使用可能

使用可能

使用可能

SSL_RSA_WITH_DES_CBC_SHA

使用不可

使用不可脚注11

使用不可

使用不可

SSL_RSA_WITH_NULL_MD5

使用不可

使用不可

使用不可

使用不可

SSL_RSA_WITH_NULL_SHA

使用不可

使用不可

使用不可

使用不可

SSL_RSA_WITH_RC4_128_MD5

使用可能

使用可能

使用可能

使用不可

SSL_RSA_WITH_RC4_128_SHA

使用可能

使用可能

使用可能

なし

TLS_DH_anon_WITH_AES_128_CBC_SHA

使用不可

使用不可

使用不可

使用不可

TLS_DH_anon_WITH_AES_128_CBC_SHA256

なし

使用不可

使用不可

使用不可

TLS_DH_anon_WITH_AES_128_GCM_SHA256

なし

なし

使用不可

使用不可

TLS_DH_anon_WITH_AES_256_CBC_SHA

使用不可

使用不可

使用不可

使用不可

TLS_DH_anon_WITH_AES_256_CBC_SHA256

なし

使用不可

使用不可

使用不可

TLS_DH_anon_WITH_AES_256_GCM_SHA384

なし

なし

使用不可

使用不可

TLS_DHE_DSS_WITH_AES_128_CBC_SHA

使用可能

使用可能

使用可能

使用可能

TLS_DHE_DSS_WITH_AES_128_CBC_SHA256

なし

使用可能脚注12

使用可能

使用可能

TLS_DHE_DSS_WITH_AES_128_GCM_SHA256

なし

なし

使用可能

使用可能

TLS_DHE_DSS_WITH_AES_256_CBC_SHA

使用可能

使用可能

使用可能

使用可能

TLS_DHE_DSS_WITH_AES_256_CBC_SHA256

なし

なし

なし

使用可能

TLS_DHE_DSS_WITH_AES_256_CBC_SHA256

なし

なし

なし

使用可能

TLS_DHE_DSS_WITH_AES_256_CBC_SHA256

なし

なし

なし

使用可能

TLS_DHE_DSS_WITH_AES_256_CBC_SHA256

なし

なし

なし

使用可能

TLS_DHE_DSS_WITH_AES_256_GCM_SHA384

なし

なし

使用可能

使用可能

TLS_DHE_RSA_WITH_AES_128_CBC_SHA

使用可能

使用可能

使用可能

使用可能

TLS_DHE_RSA_WITH_AES_128_CBC_SHA256

なし

使用可能脚注12

使用可能

使用可能

TLS_DHE_RSA_WITH_AES_128_GCM_SHA256

なし

なし

使用可能

使用可能

TLS_DHE_RSA_WITH_AES_256_CBC_SHA

使用可能

使用可能

使用可能

使用可能

TLS_DHE_RSA_WITH_AES_256_CBC_SHA256

なし

使用可能脚注12

使用可能

使用可能

TLS_DHE_RSA_WITH_AES_256_GCM_SHA384

なし

なし

使用可能

使用可能

TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA

使用不可

使用不可

使用不可

使用不可

TLS_ECDH_anon_WITH_AES_128_CBC_SHA

使用不可

使用不可

使用不可

使用不可

TLS_ECDH_anon_WITH_AES_256_CBC_SHA

使用不可

使用不可

使用不可

使用不可

TLS_ECDH_anon_WITH_NULL_SHA

使用不可

使用不可

使用不可

使用不可

TLS_ECDH_anon_WITH_RC4_128_SHA

使用不可

使用不可

使用不可

使用不可

TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA

使用可能

使用可能

使用可能

使用可能

TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA

使用可能

使用可能

使用可能

使用可能

TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256

なし

使用可能脚注12

使用可能

使用可能

TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256

なし

なし

使用可能

使用可能

TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA

使用可能

使用可能

使用可能

使用可能

TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384

なし

使用可能脚注12

使用可能

使用可能

TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384

なし

なし

使用可能

使用可能

TLS_ECDH_ECDSA_WITH_NULL_SHA

使用不可

使用不可

使用不可

使用不可

TLS_ECDH_ECDSA_WITH_RC4_128_SHA

使用可能

使用可能

使用可能

使用可能

TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA

使用可能

使用可能

使用可能

使用可能

TLS_ECDH_RSA_WITH_AES_128_CBC_SHA

使用可能

使用可能

使用可能

使用可能

TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256

なし

使用可能脚注12

使用可能

使用可能

TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256

なし

なし

使用可能

使用可能

TLS_ECDH_RSA_WITH_AES_256_CBC_SHA

使用可能

使用可能

使用可能

使用可能

TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384

なし

使用可能脚注12

使用可能

使用可能

TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384

なし

なし

使用可能

使用可能

TLS_ECDH_RSA_WITH_NULL_SHA

使用不可

使用不可

使用不可

使用不可

TLS_ECDH_RSA_WITH_RC4_128_SHA

使用可能

使用可能

使用可能

 

TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA

使用可能

使用可能

使用可能

使用可能

TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA

使用可能

使用可能

使用可能

使用可能

TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256

なし

使用可能脚注12

使用可能

使用可能

TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256

なし

なし

使用可能

使用可能

TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA

使用可能

使用可能

使用可能

使用可能

TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384

なし

使用可能脚注12

使用可能

使用可能

TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384

なし

なし

なし

使用可能

TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384

なし

なし

なし

使用可能

TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384

なし

なし

使用可能

使用可能

TLS_ECDHE_ECDSA_WITH_NULL_SHA

使用不可

使用不可

使用不可

使用不可

TLS_ECDHE_ECDSA_WITH_RC4_128_SHA

使用可能

使用可能

使用可能

使用不可

TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA

使用可能

使用可能

使用可能

使用可能

TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

使用可能

使用可能

使用可能

使用可能

TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256

なし

使用可能脚注12

使用可能

使用可能

TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

なし

なし

使用可能

使用可能

TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA

使用可能

使用可能

使用可能

使用可能

TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384

なし

使用可能脚注12

使用可能

使用可能

TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

なし

なし

使用可能

なし

TLS_ECDHE_RSA_WITH_NULL_SHA

使用不可

使用不可

使用不可

使用不可

TLS_ECDHE_RSA_WITH_RC4_128_SHA

使用可能

使用可能

使用可能

使用可能

TLS_ECDHE_RSA_WITH_RC4_128_SHA

なし

なし

なし

使用不可

TLS_EMPTY_RENEGOTIATION_INFO_SCSV脚注13

u22+

使用可能

使用可能

なし

TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5

使用不可

使用不可脚注10

使用不可

使用不可

TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA

使用不可

使用不可脚注10

使用不可

使用不可

TLS_KRB5_EXPORT_WITH_RC4_40_MD5

使用不可

使用不可脚注10

使用不可

使用不可

TLS_KRB5_EXPORT_WITH_RC4_40_SHA

使用不可

使用不可脚注10

使用不可

使用不可

TLS_KRB5_WITH_3DES_EDE_CBC_MD5

使用不可

使用不可

使用不可

使用不可

TLS_KRB5_WITH_3DES_EDE_CBC_SHA

使用不可

使用不可

使用不可

使用不可

TLS_KRB5_WITH_DES_CBC_MD5

使用不可

使用不可脚注11

使用不可

使用不可

TLS_KRB5_WITH_DES_CBC_SHA

使用不可

使用不可脚注11

使用不可

使用不可

TLS_KRB5_WITH_RC4_128_MD5

使用不可

使用不可

使用不可

使用不可

TLS_KRB5_WITH_RC4_128_SHA

使用不可

使用不可

使用不可

使用不可

TLS_RSA_WITH_AES_128_CBC_SHA

使用可能

使用可能

使用可能

使用可能

TLS_RSA_WITH_AES_128_CBC_SHA256

なし

使用可能脚注12

使用可能

使用可能

TLS_RSA_WITH_AES_128_GCM_SHA256

なし

なし

使用可能

使用可能

TLS_RSA_WITH_AES_256_CBC_SHA

使用可能

使用可能

使用可能

使用可能

TLS_RSA_WITH_AES_256_CBC_SHA256

なし

使用可能脚注12

使用可能

使用可能

TLS_RSA_WITH_AES_256_GCM_SHA384

なし

なし

使用可能

使用可能

TLS_RSA_WITH_NULL_SHA256

なし

使用不可

使用不可

使用不可

脚注10 RFC 4346 TLS 1.1では、これらの群の使用は禁止されています。これらは、SSLv3/TLS1.0プロトコルでは使用できますが、TLS 1.1以降では使用できません。

脚注11 RFC 5246 TLS 1.2では、これらの群の使用は禁止されています。これらは、SSLv3/TLS1.0/TLS1.1プロトコルでは使用できますが、TLS 1.2以降では使用できません。

脚注12 SHA384およびSHA256を使用する暗号化方式群は、TLS 1.2以降でのみ使用可能です。

脚注13 TLS_EMPTY_RENEGOTIATION_INFO_SCSVは、RFC 5746をサポートする擬似暗号化方式群です。Java Secure Socket Extension (JSSE)リファレンス・ガイドTransport Layer Security (TLS)再ネゴシエーションの問題を参照してください。

EncryptedPreMasterSecretバージョン番号チェックの強化

JDK 7リリースより前のSSL/TLS実装では、PreMasterSecret内のバージョン番号がチェックされず、SSL/TLSクライアントからデフォルトで正しいバージョン番号が送信されませんでした。システム・プロパティcom.sun.net.ssl.rsaPreMasterSecretFixtrueに設定されないかぎり、TLSクライアントはアクティブなネゴシエートされたバージョンを送信しますが、クライアントでサポートされる予想最大バージョンは送信しません。

SSLバージョン3.0およびTLSバージョン1.0では、互換性のため、この動作は保持されます。しかし、TLSバージョン1.1以降の実装では、RFC 5246の要求に従って、PreMasterSecretバージョン番号のチェックが強化されています。クライアントは常に正しいバージョン番号を送信し、サーバーはバージョン番号を厳密にチェックします。TLS 1.1以降では、システム・プロパティcom.sun.net.ssl.rsaPreMasterSecretFixは使用されません。

SunJCEプロバイダ

「SUNプロバイダ」で簡単に説明されているように、当時の米国の輸出制限事項によって、JDK内で使用できる暗号化機能が制限されていました。このため、アプリケーションでデータの暗号化または復号化を可能にするために、個別のAPIおよびリファレンス実装が開発されました。Java Cryptographic Extension (JCE)は、別個のオプション・パッケージとしてリリースされ(簡潔に標準拡張機能とも呼ばれる)、JDK 1.2xおよび1.3xで利用可能でした。JDK 1.4の開発中に、規制は、JCE (およびSunJSSE)をJDKの一部としてバンドルできるくらいには緩和されました。

SunJCEプロバイダでは、次のアルゴリズムを使用できます。

表4-12 SunJCEプロバイダのエンジン・クラス・アルゴリズム名

エンジン アルゴリズム名
AlgorithmParameterGenerator DiffieHellman
AlgorithmParameters

AESBlowfish

DES

DESede

DiffieHellman

GCM

OAEP

PBE

PBES2

PBEWithHmacSHA1AndAES_128

PBEWithHmacSHA224AndAES_128

PBEWithHmacSHA256AndAES_128

PBEWithHmacSHA384AndAES_128

PBEWithHmacSHA512AndAES_128

PBEWithHmacSHA1AndAES_256

PBEWithHmacSHA224AndAES_256

PBEWithHmacSHA256AndAES_256

PBEWithHmacSHA384AndAES_256

PBEWithHmacSHA512AndAES_256

PBEWithMD5AndDES

PBEWithMD5AndTripleDES

PBEWithSHA1AndDESede

PBEWithSHA1AndRC2_40

PBEWithSHA1AndRC2_128

PBEWithSHA1AndRC4_40

PBEWithSHA1AndPC4_128

RC2

Cipher 表4-13を参照してください
KeyAgreement DiffieHellman
KeyFactory DiffieHellman
KeyGenerator

AES

ARCFOUR

Blowfish

DES

DESede

HmacMD5

HmacSHA1

HmacSHA224

HmacSHA256

HmacSHA384

HmacSHA512

RC2

KeyPairGenerator DiffieHellman
KeyStore JCEKS
Mac

HmacMD5

HmacSHA1

HmacSHA224

HmacSHA384

HmacSHA512

HmacSHA256

HmacSHA512/224

HmacSHA512/256

HmacPBESHA1

PBEWithHmacSHA1

PBEWithHmacSHA224

PBEWithHmacSHA256

PBEWithHmacSHA384

PBEWithHmacSHA512

SecretKeyFactory

DES

DESede

PBEWithMD5AndDES

PBEWithMD5AndTripleDES

PBEWithSHA1AndDESede

PBEWithSHA1AndRC2_40

PBEWithSHA1AndRC2_128

PBEWithSHA1AndRC4_40

PBEWithSHA1AndRC4_128

PBKDF2WithHmacSHA1

PBKDF2WithHmacSHA224

PBKDF2WithHmacSHA256

PBKDF2WithHmacSHA384

PBKDF2WithHmacSHA512

PBEWithHmacSHA1AndAES_128

PBEWithHmacSHA224AndAES_128

PBEWithHmacSHA256AndAES_128

PBEWithHmacSHA384AndAES_128

PBEWithHmacSHA512AndAES_128

PBEWithHmacSHA1AndAES_256

PBEWithHmacSHA224AndAES_256

PBEWithHmacSHA256AndAES_256

PBEWithHmacSHA384AndAES_256

PBEWithHmacSHA512AndAES_256

次の表では、SunJCEプロバイダで使用できる暗号変換を示します。

表4-13 SunJCEプロバイダの暗号変換

アルゴリズム名 モード パディング
AES ECB、CBC、PCBC、CTR、CTS、CFB脚注14、CFB8、CFB128、OFB脚注14、OFB8、OFB128 NoPadding、PKCS5Padding、ISO10126Padding
AES GCM NoPadding
AESWrap ECB NoPadding
AESWrap_128 ECB NoPadding
AESWrap_192 ECB NoPadding
AESWrap_256 ECB NoPadding
ARCFOUR ECB NoPadding
Blowfish、DES、DESede、RC2 ECB、CBC、PCBC、CTR、CTS、CFB脚注14、CFB8、CFB64、OFB脚注14、OFB8、OFB64 NoPadding、PKCS5Padding、ISO10126Padding
DESedeWrap CBC NoPadding

PBEWithMD5AndDES、PBEWithMD5AndTripleDES脚注15、BEWithSHA1AndDESede、BEWithSHA1AndRC2_40、BEWithSHA1AndRC2_128、BEWithSHA1AndRC4_40、BEWithSHA1AndRC4_128、BEWithHmacSHA1AndAES_128、BEWithHmacSHA224AndAES_128、BEWithHmacSHA256AndAES_128、BEWithHmacSHA384AndAES_128、BEWithHmacSHA512AndAES_128、BEWithHmacSHA1AndAES_256、BEWithHmacSHA224AndAES_256、BEWithHmacSHA256AndAES_256、BEWithHmacSHA384AndAES_256、BEWithHmacSHA512AndAES_256

CBC PKCS5Padding
RSA ECB

NoPadding、PKCS1Padding、AEPPadding、AEPWithMD5AndMGF1Padding、AEPWithSHA1AndMGF1Padding、AEPWithSHA-1AndMGF1Padding、AEPWithSHA-224AndMGF1Padding、AEPWithSHA-256AndMGF1Padding、AEPWithSHA-384AndMGF1Padding、AEPWithSHA-512AndMGF1Padding

脚注14 値指定なしのCFB/OFBは、デフォルトでアルゴリズムのブロック・サイズになります(つまり、AESは128で、Blowfish、DES、DESedeおよびRC2は64です。)

脚注15 PBEWithMD5AndTripleDESは、標準化されていない独自のアルゴリズムです。

鍵サイズの制限

SunJCEプロバイダでは、次のデフォルト鍵サイズ(ビット単位)が使用され、次の制限が強制されます。

KeyGenerator

表4-14 SunJCEプロバイダの鍵サイズの制限

アルゴリズム名 デフォルトの鍵サイズ 制限/コメント
AES 128 鍵サイズは、128、192または256と等しいサイズである必要があります。
ARCFOUR (RC4) 128 鍵サイズは、40から1024の範囲内である必要があります。
Blowfish 128 鍵サイズは、32から448の範囲内で、8の倍数である必要があります。
DES 56 鍵サイズは、56と等しいサイズである必要があります。
DESede (トリプルDES) 168

鍵サイズは、112または168と等しいサイズである必要があります。

鍵サイズが112の場合には2つの中間鍵を保持するトリプルDES鍵が、168の場合には3つの中間鍵を保持するトリプルDES鍵が、それぞれ生成されます。

Meet-In-The-Middle問題のため、112ビットまたは168ビットの鍵データが使用されますが、有効な鍵サイズはそれぞれ80ビットまたは112ビットです。

HmacMD5 512 鍵サイズの制限はありません。
HmacSHA1 512 鍵サイズの制限はありません。
HmacSHA224 224 鍵サイズの制限はありません。
HmacSHA256 256 鍵サイズの制限はありません。
HmacSHA384 384 鍵サイズの制限はありません。
HmacSHA512 512 鍵サイズの制限はありません。
RC2 128 鍵サイズは、40から1024の範囲内である必要があります。

注意:

各種のパスワードベース暗号化(PBE)アルゴリズムは、様々なアルゴリズムを使用して鍵データを生成し、最終的にターゲットのCipherアルゴリズムに依存します。次に例を示します。

PBEWithMD5AndDESは常に56ビットの鍵を生成します。

表4-15 KeyPairGenerator

アルゴリズム名 デフォルトの鍵サイズ 制限/コメント
Diffie-Hellman (DH) 2048 鍵サイズは、512から1024の範囲で64の倍数であるか、1536、2048、3072、4096、6144、8192である必要があります。

表4-16 AlgorithmParameterGenerator

アルゴリズム名 デフォルトの鍵サイズ 制限/コメント
Diffie-Hellman (DH) 2048 鍵サイズは、512から1024の範囲で64の倍数であるか、2048および3072である必要があります。

SunJGSSプロバイダ

SunJGSSプロバイダでは、次のアルゴリズムを使用できます。

表4-17 SunJGSSプロバイダ

OID 名前
1.2.840.113554.1.2.2 Kerberos v5
1.3.6.1.5.5.2 SPNEGO

SunSASLプロバイダ

SunSASLプロバイダでは、次のアルゴリズムを使用できます。

表4-18 SunSASLプロバイダのエンジン・クラス・アルゴリズム名

エンジン アルゴリズム名
SaslClient

CRAM-MD5

DIGEST-MD5

EXTERNAL

NTLM

PLAIN

SaslServer

CRAM-MD5

DIGEST-MD5

NTLM

XMLDSigプロバイダ

XMLDSigプロバイダでは、次のアルゴリズムを使用できます。

表4-19 XMLDSigプロバイダのエンジン・クラス・アルゴリズム名

エンジン アルゴリズム名
KeyInfoFactory DOM
TransformService

http://www.w3.org/TR/2001/REC-xml-c14n-20010315 - (CanonicalizationMethod.INCLUSIVE)

http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments - (CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS)

http://www.w3.org/2001/10/xml-exc-c14n# - (CanonicalizationMethod.EXCLUSIVE)

http://www.w3.org/2001/10/xml-exc-c14n#WithComments - (CanonicalizationMethod.EXCLUSIVE_WITH_COMMENTS)

http://www.w3.org/2000/09/xmldsig#base64 - (Transform.BASE64)

http://www.w3.org/2000/09/xmldsig#enveloped-signature - (Transform.ENVELOPED)

http://www.w3.org/TR/1999/REC-xpath-19991116 - (Transform.XPATH)

http://www.w3.org/2002/06/xmldsig-filter2 - (Transform.XPATH2)

http://www.w3.org/TR/1999/REC-xslt-19991116 - (Transform.XSLT)

XMLSignatureFactory DOM

SunPCSCプロバイダ

SunPCSCプロバイダを使用すると、アプリケーションはJavaスマート・カードI/O APIを使用して、ベースとなるオペレーティング・システムのPC/SCスマート・カード・スタックと相互に作用することができます。詳細は、オペレーティング・システムのドキュメントを参照してください。

SolarisおよびLinuxプラットフォームでは、SunPCSCはlibpcsclite.soライブラリを使用してPC/SCスタックにアクセスします。これは、ディレクトリ/usr/$LIBISAおよび/usr/local/$LIBISA内でこのライブラリを検索します。$LIBISAは、64ビットのSolarisプラットフォームではlib/64、64ビットのLinuxプラットフォームではlib64にそれぞれ展開されます。システム・プロパティsun.security.smartcardio.libraryが、代替のlibpcsclite.so実装の完全なファイル名に設定される場合もあります。Windowsプラットフォームでは、SunPCSCは常にwinscard.dllを呼び出すため、Javaレベルの構成は不要であり、行うことができません。

ホスト・プラットフォームでPC/SCが使用可能な場合、SunPCSC実装はTerminalFactory.getDefault()およびTerminalFactory.getInstance("PC/SC")を介して取得できます。PC/SCが使用可能でないか、または正しく構成されていない場合、getInstance()の呼出しはNoSuchAlgorithmExceptionで失敗し、getDefault()は端末をサポートしないJRE組込み実装を返します。

SunPCSCプロバイダでは、次のアルゴリズムを使用できます。

表4-20 SunPCSCプロバイダのエンジン・クラス・アルゴリズム名

エンジン アルゴリズム名
TerminalFactory PC/SC

SunMSCAPIプロバイダ

SunMSCAPIプロバイダを使用すると、アプリケーションは標準のJCA/JCE APIを使用して、Microsoft Windowsプラットフォームのネイティブ暗号化ライブラリ、証明書ストアおよび鍵コンテナにアクセスできます。SunMSCAPIプロバイダ自体には暗号化機能は含まれていません。このプロバイダは、Java環境とWindowsのネイティブ暗号化サービス間のコンジットとして機能します。

SunMSCAPIプロバイダでは、次のアルゴリズムを使用できます。

表4-21 SunMSCAPIのエンジン・クラス・アルゴリズム名

エンジン アルゴリズム名
Cipher RSA RSA/ECB/PKCS1Paddingのみ
KeyPairGenerator RSA
KeyStore

Windows-MY: ネイティブMicrosoft Windows MYキーストアを識別するキーストア・タイプ。ユーザーの個人証明書および関連する非公開鍵が含まれています。

Windows-ROOT: ネイティブMicrosoft Windows ROOTキーストアを識別するキーストア・タイプ。ルート認証局の証明書およびほかの信頼できる自己署名証明書が含まれています。

SecureRandom

Windows-PRNG: ネイティブ擬似乱数生成(PRNG)アルゴリズムの名前。

Signature

MD5withRSA

MD2withRSA

NONEwithRSA

SHA1withRSA

SHA256withRSA

SHA384withRSA

SHA512withRSA

鍵サイズの制限

SunMSCAPIプロバイダでは、次のデフォルト・キーサイズ(ビット単位)を使用し、次の制限を強制します。

KeyGenerator

表4-22 SunMSCAPIプロバイダの鍵サイズの制限

アルゴリズム名前 デフォルトの鍵サイズ 制限/コメント
RSA 2048 キー・サイズの範囲は512ビットから16,384ビットです。ベースとなるMicrosoft Windows暗号化サービス・プロバイダによって異なります。

SunECプロバイダ

SunECプロバイダは、楕円曲線暗号(ECC)を実装します。RSAのような従来の暗号システムと比べて、ECCではより小さい鍵サイズで同等のセキュリティが提供されるため、計算の高速化、消費電力の削減、メモリーと帯域幅の節約を実現できます。

アプリケーションは、JDK 6リリースのように(SunPKCS11を介して)外部のECCライブラリに依存せずに、標準のJCA/JCE APIを使用してECCの機能にアクセスできるようになりました。

SunECプロバイダでは、次のアルゴリズムを使用できます。

表4-23 エンジン・クラスのSunECプロバイダ名

エンジン アルゴリズム名
AlgorithmParameters EC
KeyAgreement ECDH
KeyFactory EC
KeyPairGenerator EC
Signature

NONEwithECDSA

SHA1withECDSA

SHA224withECDSA

SHA256withECDSA

SHA384withECDSA

SHA512withECDSA

NONEwithECDSAinP1363Format

SHA1withECDSAinP1363Format

SHA224withECDSAinP1363Format

SHA256withECDSAinP1363Format

SHA384withECDSAinP1363Format

SHA512withECDSAinP1363Format

鍵サイズの制限

SunECプロバイダでは、次のデフォルト・キーサイズ(ビット単位)を使用し、次の制限を強制します。

KeyPairGenerator

表4-24 SunECプロバイダの鍵サイズの制限

アルゴリズム名前 デフォルトの鍵サイズ 制限/コメント
EC 256 キー・サイズは、112から571の範囲内である必要があります。

OracleUcryptoプロバイダ

Solaris専用のセキュリティ・プロバイダであるOracleUcryptoは、Solaris Ucryptoライブラリを利用して、Oracle SPARC T4ベースのオンコア暗号化命令でサポートされる暗号化操作のオフロードと委譲を行います。OracleUcryptoプロバイダ自体には暗号化機能は含まれていません。このプロバイダは、Java環境とSolaris Ucryptoライブラリ間のコンジットとして機能します。

基盤となるSolaris Ucryptoライブラリが特定のアルゴリズムをサポートしない場合は、OracleUcryptoプロバイダもそれをサポートしません。その結果、実行時にサポートされるアルゴリズムは、Solaris UcryptoライブラリがサポートするアルゴリズムとOracleUcryptoプロバイダが認識するアルゴリズムの共通部分になります。

OracleUcryptoプロバイダでは、次のアルゴリズムを使用できます。

表4-25 OracleUcryptoプロバイダのエンジン・クラス・アルゴリズム名

エンジン アルゴリズム名
Cipher

AES

RSA

AES/ECB/NoPadding

AES/ECB/PKCS5Padding

AES/CBC/NoPadding

AES/CBC/PKCS5Padding

AES/CTR/NoPadding

AES/GCM/NoPadding

AES/CFB128/NoPadding

AES/CFB128/PKCS5Padding

AES_128/ECB/NoPadding

AES_192/ECB/NoPadding

AES_256/ECB/NoPadding

AES_128/CBC/NoPadding

AES_192/CBC/NoPadding

AES_256/CBC/NoPadding

AES_128/GCM/NoPadding

AES_192/GCM/NoPadding

AES_256/GCM/NoPadding

RSA/ECB/PKCS1Padding

RSA/ECB/NoPadding

Signature

MD5withRSA

SHA1withRSA

SHA256withRSA

SHA384withRSA

SHA512withRSA

MessageDigest

MD5

SHA

SHA-224

SHA-256

SHA-384

SHA-512

SHA3-224

SHA3–256

SHA3-384

SHA3-512

鍵サイズの制限

OracleUcryptoプロバイダは、デフォルトのキー・サイズまたはキー・サイズ制限を指定しません。これらは、基盤となるSolaris Ucryptoライブラリで指定されます。

OracleUcryptoプロバイダの構成ファイル

OracleUcryptoプロバイダには、$JAVA_HOME/conf/securityディレクトリに配置されたucrypto-solaris.cfgという名前の構成ファイルがあります。デフォルトで無効にするアルゴリズムを指定するには、この構成ファイルを変更します。たとえば、次の構成ファイルは、CFB128モードでのAESをデフォルトで無効にします。
#
# Configuration file for the OracleUcrypto provider
#
disabledServices = {
  Cipher.AES/CFB128/PKCS5Padding
  Cipher.AES/CFB128/NoPadding
}

Appleプロバイダ

Appleプロバイダは、macOSキー・チェーンへのアクセスを提供するjava.security.KeyStoreを実装します。

Appleプロバイダでは、次のアルゴリズムを使用できます。

表4-26 Appleプロバイダのエンジン・クラス・アルゴリズム名

エンジン アルゴリズム名
KeyStore KeychainStore

JdkLDAPプロバイダ

JdkLDAPプロバイダは、SUNプロバイダでのLDAP CertStore実装の代替として、JDK 9で導入されました。

JdkLDAPプロバイダでは、次のアルゴリズムを使用できます。

表4-27 JdkLDAPプロバイダのエンジン・クラス・アルゴリズム名

エンジン アルゴリズム名
CertStore

LDAP

JdkSASLプロバイダ

JdkSASLプロバイダでは、次のアルゴリズムを使用できます。

表4-28 JdkSASLプロバイダのエンジン・クラス・アルゴリズム名

エンジン アルゴリズム名
SaslClient

GSSAPI

SaslServer

GSSAPI