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. DRBG | SUN | |
3. SHA1PRNG脚注4 | SUN | |
4. NativePRNGBlocking | SUN | |
5. NativePRNGNonBlocking | SUN | |
macOS | 1. NativePRNG脚注4 | SUN |
2. DRBG | SUN | |
3. SHA1PRNG脚注4 | SUN | |
4. NativePRNGBlocking | SUN | |
5. NativePRNGNonBlocking | SUN | |
Windows | 1. DRBG | 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プロバイダ間のコンジットとして機能します。このプロバイダの詳細は、「PKCS#11リファレンス・ガイド」を参照してください。
SUNプロバイダ
JDK 1.1では、Provider
アーキテクチャが導入されました。最初のJDKプロバイダにはSUN
という名前が付けられ、2種類の暗号化サービス(MessageDigest
およびSignature
)が含まれていました。以降のリリースでは、他のメカニズムが追加されました(SecureRandom
、KeyPairGenerator
、KeyFactory
など)。
当時有効だった米国の輸出制限事項によって、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 (初期シードは、現在、システム属性と NativePRNG ( NativePRNGBlocking ( NativePRNGNonBlocking ( |
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 | 2048 | 鍵サイズは、512から1024の範囲で64の倍数であるか、2048および3072である必要があります。 |
AlgorithmParameterGenerator
アルゴリズム名前 | デフォルトの鍵サイズ | 制限/コメント |
---|---|---|
DSA | 2048 | 鍵サイズは、512から1024の範囲で64の倍数であるか、2048および3072である必要があります。 |
CertificateFactory/CertPathBuilder/CertPathValidator/CertStore実装
CertificateFactory
、CertPathBuilder
、CertPathValidator
およびCertStore
のSUN
プロバイダ実装の詳細は、PKIプログラマーズ・ガイドの付録B: SUNプロバイダでのCertPath実装を参照してください。
SunRsaSignプロバイダ
SunRsaSign
プロバイダは、SunJSSE
プロバイダのRSA署名の機能が拡張された代替機能として、JDK 1.3で導入されました。
SunRsaSign
プロバイダでは、次のアルゴリズムを使用できます。
表4-7 SunRsaSignプロバイダのエンジン・クラス・アルゴリズム名
エンジン | アルゴリズム名 |
---|---|
AlgorithmParameters |
RSASSA-PSS |
KeyFactory |
RSA RSASSA-PSS |
KeyPairGenerator |
RSA RSASSA-PSS |
Signature |
MD2withRSA MD5withRSA SHA1withRSA SHA224withRSA SHA256withRSA SHA384withRSA SHA512withRSA SHA512/224withRSA SHA512/256withRSA RSASSA-PSS SHA1withRSAandMGF1 SHA224withRSAandMGF1 SHA256withRSAandMGF1 SHA384withRSAandMGF1 SHA512withRSAandMGF1 SHA512/224withRSAandMGF1 SHA512/256withRSAandMGF1 |
鍵サイズの制限
SunRsaSign
プロバイダでは、次のデフォルト・キーサイズ(ビット単位)を使用し、次の制限を強制します。
KeyPairGenerator
表4-8 SunRsaSignプロバイダの鍵サイズの制限
アルゴリズム名前 | デフォルトの鍵サイズ | 制限/コメント |
---|---|---|
RSAおよびRSASSA-PSS | 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プロバイダは、以前のリリースとの下位互換性のためにあるため、 |
KeyManagerFactory |
PKIX: SunX509: 注意: SunX509ファクトリは、以前のリリースとの下位互換性のためにあるため、使用しなでください。 |
KeyPairGenerator |
RSA 注意: SunJSSEプロバイダは、以前のリリースとの下位互換性のためにあるため、 |
KeyStore |
PKCS12 注意: SunJSSEプロバイダは、以前のリリースとの下位互換性のためにあるため、 |
Signature |
MD2withRSA MD5withRSA SHA1withRSA 注意: SunJSSEプロバイダは、以前のリリースとの下位互換性のためにあるため、 |
SSLContext |
SSLv3 TLSv1 TLSv1.1 TLSv1.2 TLSv1.3 DTLSv1.0 DTLSv1.2 |
TrustManagerFactory |
PKIX: SunX509: 注意: SunX509ファクトリは、以前のリリースとの下位互換性のためにあるため、使用しなでください。 |
SunJSSEプロバイダのプロトコルのパラメータ
SunJSSE
プロバイダは、次のprotocol
パラメータをサポートしています。
表4-9 SunJSSEプロバイダのプロトコルのパラメータ
プロトコル | クライアントではデフォルトで有効 | サーバーではデフォルトで有効 |
---|---|---|
SSLv3 | いいえ(使用不可<a id="GUID-7093246A-31A3-4304-AC5F-5FB6400405E2__SSLV3ISENABLEDSTARTINGWITHJDK8U31TH-29F18ACA" name="GUID-7093246A-31A3-4304-AC5F-5FB6400405E2__SSLV3ISENABLEDSTARTINGWITHJDK8U31TH-29F18ACA" href="#GUID-7093246A-31A3-4304-AC5F-5FB6400405E2__SSLV3ISENABLEDSTARTINGWITHJDK8U31TH-29F18ACA" onclick='footdisplay(7, "SSLv3 is enabled:Starting with JDK 8u31, the SSLv3 protocol (Secure Socket Layer) has been deactivated and is not available by default. See the java.security.Security Property jdk.tls.disabledAlgorithms in the |
いいえ(使用不可<a id="fnsrc_d52598e1500" name="fnsrc_d52598e1500" href="#fnsrc_d52598e1500" onclick='footdisplay(7, "SSLv3 is enabled:Starting with JDK 8u31, the SSLv3 protocol (Secure Socket Layer) has been deactivated and is not available by default. See the java.security.Security Property jdk.tls.disabledAlgorithms in the |
TLSv1 | はい | はい |
TLSv1.1 | はい | はい |
TLSv1.2 | はい | はい |
TLSv1.3 | はい | はい |
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が初期化される前にこのセキュリティ・プロパティを動的に設定すれば、プロトコルを再度アクティブにできます。
脚注8 SSLv3、TLSv1、TLSv1.1およびTLSv1.2プロトコルを使用すると、SSLv2Hello擬似プロトコルを使用して、SSLv3、TLSv1、TLSv1.1およびTLSv1.2のClientHelloメッセージをSSLv2形式のhelloにカプセル化して送信できます。
脚注9 DTLSv1.0とDTLSv1.2の両方を使用可能です。
次の表は、SSLv2Hellosの使用時に可能な接続の組合せを示しています。
表4-10 SSLv2Hellosを使用して利用可能な接続
クライアント | サーバー | 接続を使用できるかどうか |
---|---|---|
使用可能 | 使用可能 | はい |
使用不可 | 使用可能 | はい(最も相互運用可能度が高い: SunJSSEデフォルト) |
使用可能 | 使用不可 | いいえ |
使用不可 | 使用不可 | はい |
SunJSSE暗号化方式群
次に、このJDKリリースで現在実装されているSunJSSE暗号化方式群を優先度順に示します。これらの暗号化方式群の一部はデフォルトで使用可能になっていません。各暗号化方式群でサポートされているプロトコルを確認するには、『Javaセキュリティ標準アルゴリズム名』の「JSSE暗号化方式群名」を参照してください。
- TLS_AES_128_GCM_SHA256
- TLS_AES_256_GCM_SHA384
- TLS_CHACHA20_POLY1305_SHA256
- TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
- TLS_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384
- TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384
- TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256
- TLS_DHE_DSS_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_RSA_WITH_AES_128_GCM_SHA256
- TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256
- TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256
- TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_DHE_DSS_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
- TLS_RSA_WITH_AES_256_CBC_SHA256
- TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384
- TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384
- TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
- TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
- TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
- TLS_RSA_WITH_AES_256_CBC_SHA
- TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA
- TLS_ECDH_RSA_WITH_AES_256_CBC_SHA
- TLS_DHE_RSA_WITH_AES_256_CBC_SHA
- TLS_DHE_DSS_WITH_AES_256_CBC_SHA
- TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
- TLS_RSA_WITH_AES_128_CBC_SHA256
- TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
- TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256
- TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
- TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
- TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
- TLS_RSA_WITH_AES_128_CBC_SHA
- TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
- TLS_ECDH_RSA_WITH_AES_128_CBC_SHA
- TLS_DHE_RSA_WITH_AES_128_CBC_SHA
- TLS_DHE_DSS_WITH_AES_128_CBC_SHA
- TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA
- TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
- SSL_RSA_WITH_3DES_EDE_CBC_SHA
- TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA
- TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA
- SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA
- SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA
- TLS_EMPTY_RENEGOTIATION_INFO_SCSV
- TLS_DH_anon_WITH_AES_256_GCM_SHA384
- TLS_DH_anon_WITH_AES_128_GCM_SHA256
- TLS_DH_anon_WITH_AES_256_CBC_SHA256
- TLS_ECDH_anon_WITH_AES_256_CBC_SHA
- TLS_DH_anon_WITH_AES_256_CBC_SHA
- TLS_DH_anon_WITH_AES_128_CBC_SHA256
- TLS_ECDH_anon_WITH_AES_128_CBC_SHA
- TLS_DH_anon_WITH_AES_128_CBC_SHA
- TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA
- SSL_DH_anon_WITH_3DES_EDE_CBC_SHA
- TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
- TLS_ECDHE_RSA_WITH_RC4_128_SHA
- SSL_RSA_WITH_RC4_128_SHA
- TLS_ECDH_ECDSA_WITH_RC4_128_SHA
- TLS_ECDH_RSA_WITH_RC4_128_SHA
- SSL_RSA_WITH_RC4_128_MD5
- TLS_ECDH_anon_WITH_RC4_128_SHA
- SSL_DH_anon_WITH_RC4_128_MD5
- SSL_RSA_WITH_DES_CBC_SHA
- SSL_DHE_RSA_WITH_DES_CBC_SHA
- SSL_DHE_DSS_WITH_DES_CBC_SHA
- SSL_DH_anon_WITH_DES_CBC_SHA
- SSL_RSA_EXPORT_WITH_DES40_CBC_SHA
- SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA
- SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA
- SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA
- SSL_RSA_EXPORT_WITH_RC4_40_MD5
- SSL_DH_anon_EXPORT_WITH_RC4_40_MD5
- TLS_RSA_WITH_NULL_SHA256
- TLS_ECDHE_ECDSA_WITH_NULL_SHA
- TLS_ECDHE_RSA_WITH_NULL_SHA
- SSL_RSA_WITH_NULL_SHA
- TLS_ECDH_ECDSA_WITH_NULL_SHA
- TLS_ECDH_RSA_WITH_NULL_SHA
- TLS_ECDH_anon_WITH_NULL_SHA
- SSL_RSA_WITH_NULL_MD5
注意:
- 暗号化方式群の優先順位は今後のリリースで変更される可能性があります。
- TLS_EMPTY_RENEGOTIATION_INFO_SCSVは、RFC 5746をサポートする擬似暗号化方式群です。
新しいアルゴリズムが開発され、旧アルゴリズムの有効性が以前よりも低下したと判断されると、JDKリリースのデフォルトで使用可能な暗号化方式群は変更されます。Oracle JDKでは次の2つのメカニズムを使用して、これらのアルゴリズムの使用可能性を制限します。
jdk.tls.disabledAlgorithms
セキュリティ・プロパティ(暗号化方式群のカテゴリを無効化)。たとえば、このセキュリティ・プロパティにRC4
が含まれていると、すべてのRC4ベースの暗号化方式群が無効化されます。- 暗号化方式群を、デフォルトで有効化されない方式群のリストに移動。
jdk.tls.disabledAlgorithms
セキュリティ・プロパティの詳細は、「無効化された制限付き暗号化アルゴリズム」を参照してください。
デフォルトで使用可能な暗号化方式群の現行リストの確認
デフォルトで使用可能な暗号化方式群の現行リストを確認するには、アプリケーションAvailableCipherSuites.java
を実行します。
import java.util.*;
import java.security.*;
import javax.net.ssl.*;
public class AvailableCipherSuites {
public static void main(String[] args) throws Exception {
// If an argument is present, then remove the
// jdk.tls.disabledAlgorithms restrictions and
// print all implemented cipher suites.
if (args.length != 0) {
Security.setProperty("jdk.tls.disabledAlgorithms", "");
}
SSLContext sslc = SSLContext.getDefault();
SSLSocketFactory sslf = sslc.getSocketFactory();
SSLSocket ssls = (SSLSocket) sslf.createSocket();
ArrayList<String> enabled = new ArrayList(
Arrays.asList(ssls.getEnabledCipherSuites()));
ArrayList<String> supported = new ArrayList(
Arrays.asList(ssls.getSupportedCipherSuites()));
supported.removeAll(enabled);
System.out.println("Enabled by Default Cipher Suites");
System.out.println("--------------------------------");
enabled.stream().forEach(System.out::println);
System.out.println();
System.out.println("Not Enabled by Default Cipher Suites");
System.out.println("------------------------------------");
supported.stream().forEach(System.out::println);
}
}
引数が指定されていない場合、このアプリケーションはSSLSocket.getSupportedCipherSuites()およびSSLSocket.getEnabledCipherSuites()メソッドを呼び出して、jdk.tls.disabledAlgorithms
セキュリティ・プロパティで無効化されていない、有効かつサポートされている使用可能な暗号化方式群を出力します。引数を指定してこのアプリケーションを実行すると、セキュリティ・プロパティにより無効化制限が削除され、使用可能なすべての暗号化方式群が出力されます。
EncryptedPreMasterSecretバージョン番号チェックの強化
JDK 7リリースより前のSSL/TLS実装では、PreMasterSecret内のバージョン番号がチェックされず、SSL/TLSクライアントからデフォルトで正しいバージョン番号が送信されませんでした。システム・プロパティcom.sun.net.ssl.rsaPreMasterSecretFix
がtrue
に設定されないかぎり、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-11 SunJCEプロバイダのエンジン・クラス・アルゴリズム名
エンジン | アルゴリズム名 |
---|---|
AlgorithmParameterGenerator |
DiffieHellman |
AlgorithmParameters |
AES Blowfish ChaCha20-Poly1305 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 PBEWithSHA1AndRC4_128 RC2 |
Cipher |
表4-12を参照してください |
KeyAgreement |
DiffieHellman |
KeyFactory |
DiffieHellman |
KeyGenerator |
AES ARCFOUR Blowfish ChaCha20 DES DESede HmacMD5 HmacSHA1 HmacSHA224 HmacSHA256 HmacSHA384 HmacSHA512 RC2 |
KeyPairGenerator |
DiffieHellman |
KeyStore |
JCEKS |
Mac |
HmacMD5 HmacSHA1 HmacSHA224 HmacSHA256 HmacSHA384 HmacSHA512 HmacSHA512/224 HmacSHA512/256 HmacPBESHA1 HmacPBESHA224 HmacPBESHA256 HmacPBESHA384 HmacPBESHA512 HmacPBESHA512/224 HmacPBESHA512/256 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-12 SunJCEプロバイダの暗号変換
アルゴリズム名 | モード | パディング |
---|---|---|
AES | ECB、CBC、PCBC、CFB脚注10、CFB8、CFB128、OFB脚注10、OFB8、OFB128 | NoPadding、PKCS5Padding、ISO10126Padding |
AES | CTR、CTS、GCM | NoPadding |
AES_128、AES_192、AES_256 | ECB、CBC、OFB、CFB、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脚注10、CFB8、CFB64、OFB脚注10、OFB8、OFB64 | NoPadding、PKCS5Padding、ISO10126Padding |
ChaCha20 | なし | NoPadding |
ChaCha20-Poly1305 | なし | NoPadding |
DESedeWrap | CBC | NoPadding |
PBEWithMD5AndDES、PBEWithMD5AndTripleDES脚注11、PBEWithSHA1AndDESede、PBEWithSHA1AndRC2_40、PBEWithSHA1AndRC2_128、PBEWithSHA1AndRC4_40、PBEWithSHA1AndRC4_128、PBEWithHmacSHA1AndAES_128、PBEWithHmacSHA224AndAES_128、PBEWithHmacSHA256AndAES_128、PBEWithHmacSHA384AndAES_128、PBEWithHmacSHA512AndAES_128、PBEWithHmacSHA1AndAES_256、PBEWithHmacSHA224AndAES_256、PBEWithHmacSHA256AndAES_256、PBEWithHmacSHA384AndAES_256、PBEWithHmacSHA512AndAES_256 |
CBC | PKCS5Padding |
RSA | ECB |
NoPadding、PKCS1Padding、OAEPPadding、OAEPWithMD5AndMGF1Padding、OAEPWithSHA-1AndMGF1Padding、OAEPWithSHA-1AndMGF1Padding、OAEPWithSHA-224AndMGF1Padding、OAEPWithSHA-256AndMGF1Padding、OAEPWithSHA-384AndMGF1Padding、OAEPWithSHA-512AndMGF1Padding、OAEPWithSHA-512/224AndMGF1Padding、OAEPWithSHA-512/2256ndMGF1Padding |
脚注10 値指定なしのCFB/OFBは、デフォルトでアルゴリズムのブロック・サイズになります(つまり、AESは128で、Blowfish、DES、DESedeおよびRC2は64です。)
脚注11 PBEWithMD5AndTripleDESは、標準化されていない独自のアルゴリズムです。
鍵サイズの制限
SunJCEプロバイダでは、次のデフォルト鍵サイズ(ビット単位)が使用され、次の制限が強制されます。
KeyGenerator
表4-13 SunJCEプロバイダの鍵サイズの制限
アルゴリズム名 | デフォルトの鍵サイズ | 制限/コメント |
---|---|---|
AES | 128 | 鍵サイズは、128、192または256と等しいサイズである必要があります。 |
ARCFOUR (RC4) | 128 | 鍵サイズは、40から1024の範囲内である必要があります。 |
Blowfish | 128 | 鍵サイズは、32から448の範囲内で、8の倍数である必要があります。 |
ChaCha20 | 256 | 鍵サイズは、256と等しいサイズである必要があります。 |
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-14 KeyPairGenerator
アルゴリズム名 | デフォルトの鍵サイズ | 制限/コメント |
---|---|---|
Diffie-Hellman (DH) | 2048 | 鍵サイズは、512から1024の範囲で64の倍数であるか、1536、2048、3072、4096、6144、8192である必要があります。 |
表4-15 AlgorithmParameterGenerator
アルゴリズム名 | デフォルトの鍵サイズ | 制限/コメント |
---|---|---|
Diffie-Hellman (DH) | 2048 | 鍵サイズは、512から1024の範囲で64の倍数であるか、2048および3072である必要があります。 |
SunJGSSプロバイダ
SunJGSSプロバイダでは、次のアルゴリズムを使用できます。
表4-16 SunJGSSプロバイダ
OID | 名前 |
---|---|
1.2.840.113554.1.2.2 |
Kerberos v5 |
1.3.6.1.5.5.2 |
SPNEGO |
SunSASLプロバイダ
SunSASL
プロバイダでは、次のアルゴリズムを使用できます。
表4-17 SunSASLプロバイダのエンジン・クラス・アルゴリズム名
エンジン | アルゴリズム名 |
---|---|
SaslClient |
CRAM-MD5 DIGEST-MD5 EXTERNAL NTLM PLAIN |
SaslServer |
CRAM-MD5 DIGEST-MD5 NTLM |
XMLDSigプロバイダ
XMLDSig
プロバイダでは、次のアルゴリズムを使用できます。
表4-18 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-19 SunPCSCプロバイダのエンジン・クラス・アルゴリズム名
エンジン | アルゴリズム名 |
---|---|
TerminalFactory |
PC/SC |
SunMSCAPIプロバイダ
SunMSCAPIプロバイダを使用すると、アプリケーションは標準のJCA/JCE APIを使用して、Microsoft Windowsプラットフォームのネイティブ暗号化ライブラリ、証明書ストアおよび鍵コンテナにアクセスできます。SunMSCAPIプロバイダ自体には暗号化機能は含まれていません。このプロバイダは、Java環境とWindowsのネイティブ暗号化サービス間のコンジットとして機能します。
SunMSCAPI
プロバイダでは、次のアルゴリズムを使用できます。
表4-20 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 RSASSA-PSS |
鍵サイズの制限
SunMSCAPIプロバイダでは、次のデフォルト・キーサイズ(ビット単位)を使用し、次の制限を強制します。
KeyGenerator
表4-21 SunMSCAPIプロバイダの鍵サイズの制限
アルゴリズム名前 | デフォルトの鍵サイズ | 制限/コメント |
---|---|---|
RSA | 2048 | キー・サイズの範囲は512ビットから16,384ビットです。ベースとなるMicrosoft Windows暗号化サービス・プロバイダによって異なります。 |
SunECプロバイダ
SunECプロバイダは、楕円曲線暗号(ECC)を実装します。RSAのような従来の暗号システムと比べて、ECCではより小さい鍵サイズで同等のセキュリティが提供されるため、計算の高速化、消費電力の削減、メモリーと帯域幅の節約を実現できます。
アプリケーションは、JDK 6リリースのように(SunPKCS11を介して)外部のECCライブラリに依存せずに、標準のJCA/JCE APIを使用してECCの機能にアクセスできるようになりました。
SunEC
プロバイダでは、次のアルゴリズムを使用できます。
表4-22 エンジン・クラスのSunECプロバイダ名
エンジン | アルゴリズム名 |
---|---|
AlgorithmParameters |
EC |
KeyAgreement |
ECDH、X25519、X448、XDH |
KeyFactory |
EC、X25519、X448、XDH |
KeyPairGenerator |
EC、X25519、X448、XDH |
Signature |
NONEwithECDSA SHA1withECDSA SHA224withECDSA SHA256withECDSA SHA384withECDSA SHA512withECDSA NONEwithECDSAinP1363Format SHA1withECDSAinP1363Format SHA224withECDSAinP1363Format SHA256withECDSAinP1363Format SHA384withECDSAinP1363Format SHA512withECDSAinP1363Format |
注意:
-
XDHアルゴリズムは、X25519またはX448のパラメータまたは鍵を使用して初期化できます。
-
X25519アルゴリズムはX25519のパラメータおよび鍵のみをサポートします。同様に、X448アルゴリズムはX448のパラメータおよび鍵のみをサポートします。
鍵サイズの制限
SunECプロバイダでは、次のデフォルト・キーサイズ(ビット単位)を使用し、次の制限を強制します。
KeyPairGenerator
表4-23 SunECプロバイダの鍵サイズの制限
アルゴリズム名前 | デフォルトの鍵サイズ | 制限/コメント |
---|---|---|
EC | 256 | キー・サイズは、112から571の範囲内である必要があります。 |
X25519 | 255 | 鍵サイズは255にする必要があります |
X448 | 448 | 鍵サイズは448にする必要があります |
XDH | 255 | 鍵サイズは255または448にする必要があります |
サポートされる楕円曲線名
表4-24に、楕円曲線(EC)、楕円曲線Diffie-Hellman (ECDH)および楕円曲線デジタル署名アルゴリズム(ECDSA)の各アルゴリズムに対して、SunEC
でサポートされるEC名を示します。1列目に、SunEC
でサポートされるすべてのEC名を示します。2列目には、EC名のオブジェクト識別子を示します。3列目には、SunEC
でサポートされるその他のEC名を指定します。(値N/Aは、その他の名前がないことを意味します。)1行に表示されている文字列はすべて同じECを表します。たとえば、文字列secp256r1
、1.2.840.10045.3.1.7
、NIST P-256
およびX9.62 prime256v1
は同じECを表します。
EC名は、次の用途で使用できます。
- ECGenParameterSpecクラスを使用したECパラメータ生成用のパラメータ仕様の作成
keytool
ツールを使用した鍵ペアの生成。たとえば、次のコマンドを実行すると、secp256r1曲線でEC鍵ペアが作成されます。keytool -genkeypair -keyalg EC -groupname secp256r1
表4-24 SunECでサポートされるEC名
サポートされる名前 | オブジェクト識別子 | その他のサポートされる名前 |
---|---|---|
brainpoolP256r1 | 1.3.36.3.3.2.8.1.1.7 | なし |
brainpoolP320r1 | 1.3.36.3.3.2.8.1.1.9 | なし |
brainpoolP384r1 | 1.3.36.3.3.2.8.1.1.11 | なし |
brainpoolP512r1 | 1.3.36.3.3.2.8.1.1.13 | なし |
secp112r1 | 1.3.132.0.6 | なし |
secp112r2 | 1.3.132.0.7 | なし |
secp128r1 | 1.3.132.0.28 | なし |
secp128r2 | 1.3.132.0.29 | なし |
secp160k1 | 1.3.132.0.9 | なし |
secp160r1 | 1.3.132.0.8 | なし |
secp160r2 | 1.3.132.0.30 | なし |
secp192k1 | 1.3.132.0.31 | なし |
secp192r1 | 1.2.840.10045.3.1.1 | NIST P-192、X9.62 prime192v1 |
secp224k1 | 1.3.132.0.32 | なし |
secp224r1 | 1.3.132.0.33 | NIST P-224 |
secp256k1 | 1.3.132.0.10 | なし |
secp256r1 | 1.2.840.10045.3.1.7 | NIST P-256、X9.62 prime256v1 |
secp384r1 | 1.3.132.0.34 | NIST P-384 |
secp521r1 | 1.3.132.0.35 | NIST P-521 |
sect113r1 | 1.3.132.0.4 | なし |
sect113r2 | 1.3.132.0.5 | なし |
sect131r1 | 1.3.132.0.22 | なし |
sect131r2 | 1.3.132.0.23 | なし |
sect163k1 | 1.3.132.0.1 | NIST K-163 |
sect163r1 | 1.3.132.0.2 | なし |
sect163r2 | 1.3.132.0.15 | NIST B-163 |
sect193r1 | 1.3.132.0.24 | なし |
sect193r2 | 1.3.132.0.25 | なし |
sect233k1 | 1.3.132.0.26 | NIST K-233 |
sect233r1 | 1.3.132.0.27 | NIST B-233 |
sect239k1 | 1.3.132.0.3 | なし |
sect283k1 | 1.3.132.0.16 | NIST K-283 |
sect283r1 | 1.3.132.0.17 | NIST B-283 |
sect409k1 | 1.3.132.0.36 | NIST K-409 |
sect409r1 | 1.3.132.0.37 | NIST B-409 |
sect571k1 | 1.3.132.0.38 | NIST K-571 |
sect571r1 | 1.3.132.0.39 | NIST B-571 |
X9.62 c2tnb191v1 | 1.2.840.10045.3.0.5 | なし |
X9.62 c2tnb191v2 | 1.2.840.10045.3.0.6 | なし |
X9.62 c2tnb191v3 | 1.2.840.10045.3.0.7 | なし |
X9.62 c2tnb239v1 | 1.2.840.10045.3.0.11 | なし |
X9.62 c2tnb239v2 | 1.2.840.10045.3.0.12 | なし |
X9.62 c2tnb239v3 | 1.2.840.10045.3.0.13 | なし |
X9.62 c2tnb359v1 | 1.2.840.10045.3.0.18 | なし |
X9.62 c2tnb431r1 | 1.2.840.10045.3.0.20 | なし |
X9.62 prime192v2 | 1.2.840.10045.3.1.2 | なし |
X9.62 prime192v3 | 1.2.840.10045.3.1.3 | なし |
X9.62 prime239v1 | 1.2.840.10045.3.1.4 | なし |
X9.62 prime239v2 | 1.2.840.10045.3.1.5 | なし |
X9.62 prime239v3 | 1.2.840.10045.3.1.6 | なし |
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 |