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.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モードは最も簡単に使用できるブロック暗号モードであり、デフォルトの暗号モードになっています。ECBは、単一のデータ・ブロックに対しては正常に機能し、パラレル化可能ですが、モードの特性により、通常は複数のデータ・ブロックの暗号化には使用しないでください。これにより、機密データが簡単かつ完全に開示される可能性があります。このモードは使用可能ですが、関連する暗号化リスクを理解している場合にのみ使用してください。

SecureRandom実装

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

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

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

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

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

SunPKCS11プロバイダ

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

SUNプロバイダ

アルゴリズム

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

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

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

DSA

HSS/LMS脚注4

KeyPairGenerator DSA
KeyStore

PKCS12脚注5

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

HSS/LMS脚注6

NONEwithDSA

SHA1withDSA

SHA224withDSA

SHA256withDSA

SHA384withDSA

SHA512withDSA

NONEwithDSAinP1363Format

SHA1withDSAinP1363Format

SHA224withDSAinP1363Format

SHA256withDSAinP1363Format

SHA384withDSAinP1363Format

SHA512withDSAinP1363Format

SHA3-224withDSA

SHA3-256withDSA

SHA3-384withDSA

SHA3-512withDSA

SHA3-224withDSAinP1363Format

SHA3-256withDSAinP1363Format

SHA3-384withDSAinP1363Format

SHA3-512withDSAinP1363Format

ノート:

署名の生成では、ダイジェスト・アルゴリズムのセキュリティ強度が署名に使用されたキーのセキュリティ強度より弱い場合(SHA1withDSA署名による(2048、256)ビットのDSAキーの使用など)は、操作が失敗し、次のエラー・メッセージが表示されます: 「SHA1ダイジェスト・アルゴリズムのセキュリティ強度が、このキー・サイズに対して十分ではありません。」

脚注4 HSS/LMSのKeyFactory実装は、公開キー管理のみをサポートします。generatePrivateメソッドがコールされるか、getKeySpecおよびtranslateKeyメソッドが秘密キーでコールされると、InvalidKeySpecExceptionがスローされます。

脚注5

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

パスワードなしのPKCS12キーストア・ファイルを作成するには、nullパスワードでKeyStore.store()メソッドを呼び出します。このキーストア内の証明書は暗号化されずに保存され、MacDataは追加されません。このキーストアは任意のパスワード(nullを含む)でロードできます。キーストア内の鍵は常に暗号化されて保存されます。

脚注6 HSS/LMSのSignature実装は、署名検証のみをサポートします。initSignメソッドが秘密キーでコールされると、InvalidKeyExceptionがスローされます。

SHAメッセージ・ダイジェストおよびDSA署名に関連付けられたオブジェクト識別子

次の表に、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
SHA384withDSA 2.16.840.1.101.3.4.3.3
SHA512withDSA 2.16.840.1.101.3.4.3.4
SHA3-224withDSA 2.16.840.1.101.3.4.3.5
SHA3-256withDSA 2.16.840.1.101.3.4.3.6
SHA3-384withDSA 2.16.840.1.101.3.4.3.7
SHA3-512withDSA 2.16.840.1.101.3.4.3.8

キー・サイズの制限

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

表4-7 KeyPairGeneratorアルゴリズムのキー・サイズの制限

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

表4-8 AlgorithmParameterGeneratorアルゴリズムのキー・サイズの制限

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

CertificateFactory/CertPathBuilder/CertPathValidator/CertStore実装

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

SunRsaSignプロバイダ

アルゴリズム

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

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

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

RSASSA-PSS

KeyFactory

RSA

RSASSA-PSS

KeyPairGenerator

RSA

RSASSA-PSS

Signature

MD2withRSA

MD5withRSA

SHA1withRSA

SHA224withRSA

SHA256withRSA

SHA384withRSA

SHA512withRSA

SHA512/224withRSA

SHA512/256withRSA

SHA3-224withRSA

SHA3-256withRSA

SHA3-384withRSA

SHA3-512withRSA

RSASSA-PSS

キー・サイズの制限

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

表4-10 SunRsaSignプロバイダのキー・サイズの制限

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

SunJSSEプロバイダ

アルゴリズム

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

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

エンジン アルゴリズム名
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ファクトリは、以前のリリースとの下位互換性のためにあるため、使用しなでください。

KeyStore

PKCS12

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

SSLContext

SSL

SSLv3

TLS

TLSv1

TLSv1.1

TLSv1.2

TLSv1.3

DTLS

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プロバイダは、表4-12に示すprotocolパラメータをサポートしています。

表4-12 SunJSSEプロバイダのプロトコル・バージョン

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

SSLv3
いいえ いいえ
TLSv1脚注7 はい はい
TLSv1.1脚注7 はい はい
TLSv1.2 はい はい
TLSv1.3 はい はい
SSLv2Hello いいえ いいえ
DTLSv1.0 はい はい
DTLSv1.2 はい はい

脚注7 TLS 1.0および1.1は、安全とはみなされなくなったTLSプロトコルのバージョンであり、より安全で最新のバージョン(TLS 1.2および1.3)に置き換えられました。これらのバージョンは、デフォルトで無効になっています。問題が発生した場合は、自己責任になりますが、java.security構成ファイルのjdk.tls.disabledAlgorithmsセキュリティ・プロパティからTLSv1またはTLSv1.1を削除すると、これらのバージョンを再度有効化できます。

ノート:

新しいプロトコルが開発され、古いプロトコルの有効性が以前よりも低下したと判断されると、JDKのリリースでデフォルトで使用可能なプロトコルは変更されます。JDKでは、次の2つのメカニズムで、これらのプロトコルを使用するかどうかを制限します:

  • jdk.tls.disabledAlgorithmsセキュリティ・プロパティ: プロトコルおよび暗号スイートのカテゴリを無効にします。たとえば、このセキュリティ・プロパティにSSLv3が含まれている場合、SSLv3プロトコルが無効になります。このセキュリティ・プロパティの詳細は、「無効化された制限付き暗号化アルゴリズム」を参照してください。
  • 表4-12に示すように、デフォルトで有効になっていないプロトコルのリストにプロトコルを移動します。

SSLContext実装の有効なプロトコル・バージョンは、アルゴリズムやモード(クライアントまたはサーバー)によって、前の表のデフォルト値と異なることがあります。次の表には、デフォルトとは異なるSSLContext実装の有効なプロトコル・バージョンを示しています:

表4-13 クライアント・モードの特定のSSLContext実装に対して有効なプロトコル・バージョン

SSLContextアルゴリズム SSL/TLS/DTLSプロトコル・バージョン
SSLv2Hello SSLv3 TLSv1 TLSv1.1 TLSv1.2 TLSv1.3 DTLSv1.0 DTLSv1.2
SSLv3 いいえ いいえ はい いいえ いいえ いいえ なし なし
TLSv1 いいえ いいえ はい いいえ いいえ いいえ なし なし
TLSv1.1 いいえ いいえ はい はい いいえ いいえ なし なし
TLSv1.2 いいえ いいえ はい はい はい いいえ なし なし
TLSv1.3 いいえ いいえ はい はい はい はい なし なし
デフォルト いいえ いいえ はい はい はい はい なし なし
TLS いいえ いいえ はい はい はい はい なし なし
SSL いいえ いいえ はい はい はい はい なし なし
DTLSv1.0 なし なし なし なし なし なし はい いいえ
DTLSv1.2 なし なし なし なし なし なし はい はい
DTLS なし なし なし なし なし なし はい はい

表4-14 サーバー・モードの特定のSSLContext実装に対して有効なプロトコル・バージョン

SSLContextアルゴリズム SSL/TLS/DTLSプロトコル・バージョン
SSLv2Hello SSLv3 TLSv1 TLSv1.1 TLSv1.2 TLSv1.3 DTLSv1.0 DTLSv1.2
SSLv3 いいえ いいえ はい はい はい はい なし なし
TLSv1 いいえ いいえ はい はい はい はい なし なし
TLSv1.1 いいえ いいえ はい はい はい はい なし なし
TLSv1.2 いいえ いいえ はい はい はい はい なし なし
TLSv1.3 いいえ いいえ はい はい はい はい なし なし
デフォルト いいえ いいえ はい はい はい はい なし なし
TLS いいえ いいえ はい はい はい はい なし なし
SSL いいえ いいえ はい はい はい はい なし なし
DTLSv1.0 なし なし なし なし なし なし はい はい
DTLSv1.2 なし なし なし なし なし なし はい はい
DTLS なし なし なし なし なし なし はい はい

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セキュリティ・プロパティの詳細は、「無効化された制限付き暗号化アルゴリズム」を参照してください。

デフォルトで使用可能なプロトコルおよび暗号化方式群の現行リストの確認

デフォルトで使用可能なプロトコルおよび暗号化方式群の現行リストを取得するには、次のコマンドを実行します:

keytool -showinfo -tls

このコマンドによって生成されるリストには、jdk.tls.disabledAlgorithmsセキュリティ・プロパティが無効化されている方式群は含まれないことに注意してください。

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プロバイダでは、次のアルゴリズムを使用できます。

ノート:

SunJCEプロバイダは、PBEアルゴリズムのパスワードとしてASCIIのみをサポートします。

表4-15 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

PBEWithHmacSHA512/224AndAES_128

PBEWithHmacSHA512/256AndAES_128

PBEWithHmacSHA1AndAES_256

PBEWithHmacSHA224AndAES_256

PBEWithHmacSHA256AndAES_256

PBEWithHmacSHA384AndAES_256

PBEWithHmacSHA512/224AndAES_256

PBEWithHmacSHA512/256AndAES_256

PBEWithHmacSHA512AndAES_256

PBEWithMD5AndDES

PBEWithMD5AndTripleDES

PBEWithSHA1AndDESede

PBEWithSHA1AndRC2_40

PBEWithSHA1AndRC2_128

PBEWithSHA1AndRC4_40

PBEWithSHA1AndRC4_128

RC2

Cipher 表4-16を参照してください
KEM DHKEM脚注8
KeyAgreement DiffieHellman
KeyFactory DiffieHellman
KeyGenerator

AES

ARCFOUR

Blowfish

ChaCha20

DES

DESede

HmacMD5

HmacSHA1

HmacSHA224

HmacSHA256

HmacSHA384

HmacSHA512

HmacSHA512/224

HmacSHA512/256

HmacSHA3-224

HmacSHA3-256

HmacSHA3-384

HmacSHA3-512

RC2

KeyPairGenerator DiffieHellman
KeyStore JCEKS
Mac

HmacMD5

HmacSHA1

HmacSHA224

HmacSHA256

HmacSHA384

HmacSHA512

HmacSHA512/224

HmacSHA512/256

HmacSHA3-224

HmacSHA3-256

HmacSHA3-384

HmacSHA3-512

HmacPBESHA1

HmacPBESHA224

HmacPBESHA256

HmacPBESHA384

HmacPBESHA512

HmacPBESHA512/224

HmacPBESHA512/256

PBEWithHmacSHA1

PBEWithHmacSHA224

PBEWithHmacSHA256

PBEWithHmacSHA384

PBEWithHmacSHA512

PBEWithHmacSHA512/224

PBEWithHmacSHA512/256

SecretKeyFactory

DES

DESede

PBEWithMD5AndDES

PBEWithMD5AndTripleDES

PBEWithSHA1AndDESede

PBEWithSHA1AndRC2_40

PBEWithSHA1AndRC2_128

PBEWithSHA1AndRC4_40

PBEWithSHA1AndRC4_128

PBEWithHmacSHA1AndAES_128

PBEWithHmacSHA224AndAES_128

PBEWithHmacSHA256AndAES_128

PBEWithHmacSHA384AndAES_128

PBEWithHmacSHA512AndAES_128

PBEWithHmacSHA512/224AndAES_128

PBEWithHmacSHA512/256AndAES_128

PBEWithHmacSHA1AndAES_256

PBEWithHmacSHA224AndAES_256

PBEWithHmacSHA256AndAES_256

PBEWithHmacSHA384AndAES_256

PBEWithHmacSHA512/224AndAES_256

PBEWithHmacSHA512/256AndAES_256

PBEWithHmacSHA512AndAES_256

PBKDF2WithHmacSHA1

PBKDF2WithHmacSHA224

PBKDF2WithHmacSHA256

PBKDF2WithHmacSHA384

PBKDF2WithHmacSHA512

PBKDF2WithHmacSHA512/224

PBKDF2WithHmacSHA512/256

脚注8 DHKEMアルゴリズムは、secp256r1、secp384r1およびsecp521r1曲線上のECキー、およびCurve25519およびCurve448上のXDHキーを受け入れます。

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

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

アルゴリズム名 モード パディング
AES ECB、CBC、PCBC、CFB脚注9、CFB8。CFB128、OFB脚注9、OFB8。OFB128 NoPadding、PKCS5Padding、ISO10126Padding脚注10
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脚注9、CFB8。CFB64、OFB脚注9、OFB8。OFB64 NoPadding、PKCS5Padding、ISO10126Padding
ChaCha20 なし NoPadding
ChaCha20-Poly1305 なし NoPadding
DESedeWrap CBC NoPadding

PBEWithHmacSHA1AndAES_128、PBEWithHmacSHA224AndAES_128、PBEWithHmacSHA256AndAES_128、PBEWithHmacSHA384AndAES_128、PBEWithHmacSHA512AndAES_128、PBEWithHmacSHA512/224AndAES_128、PBEWithHmacSHA512/256AndAES_128、PBEWithHmacSHA1AndAES_256、PBEWithHmacSHA224AndAES_256、PBEWithHmacSHA256AndAES_256、PBEWithHmacSHA384AndAES_256、PBEWithHmacSHA512/224AndAES_256、PBEWithHmacSHA512/256AndAES_256、PBEWithHmacSHA512AndAES_256、PBEWithMD5AndDES、PBEWithMD5AndTripleDES脚注11、PBEWithSHA1AndDESede、PBEWithSHA1AndRC2_40、PBEWithSHA1AndRC2_128、PBEWithSHA1AndRC4_40、PBEWithSHA1AndRC4_128

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/256AndMGF1Padding

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

脚注10 パディング・バイトがランダムであることが標準で規定または要求されているわけではありませんが、Java SE ISO10126Padding実装では、ランダムなバイトで埋められます(最後のバイトまで埋められるため、指定どおりのパディングの長さになります)。

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

キー・サイズの制限

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

KeyGenerator

表4-17 SunJCEプロバイダのキー・サイズの制限

アルゴリズム名 デフォルトのキー・サイズ 制限/コメント
AES 暗号化ポリシーで許可されている場合は256(「暗号化アルゴリズムの輸入制限」を参照)、それ以外の場合は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-18 KeyPairGenerator

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

表4-19 AlgorithmParameterGenerator

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

SunJGSSプロバイダ

アルゴリズム

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

表4-20 SunJGSSプロバイダ・アルゴリズム名

OID 名前
1.2.840.113554.1.2.2 Kerberos v5
1.3.6.1.5.5.2 SPNEGO

SunSASLプロバイダ

アルゴリズム

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

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

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

CRAM-MD5

DIGEST-MD5

EXTERNAL

NTLM

PLAIN

SaslServer

CRAM-MD5

DIGEST-MD5

NTLM

XMLDSigプロバイダ

アルゴリズム

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

表4-22 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スマート・カード・スタックと相互に作用することができます。詳細は、オペレーティング・システムのドキュメントを参照してください。

Linuxでは、SunPCSCはlibpcsclite.soライブラリを使用してPC/SCスタックにアクセスします。これは、ディレクトリ/usr/$LIBISAおよび/usr/local/$LIBISA内でこのライブラリを検索します。$LIBISAは、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()は端末をサポートしないJDK組込み実装を返します。

アルゴリズム

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

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

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

SunMSCAPIプロバイダ

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

アルゴリズム

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

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

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

Windows-MY-CURRENTUSER (Windows-MYとも呼ばれます): ネイティブMicrosoft Windows MYキーストアを識別するキーストア・タイプ。現在のユーザー・アカウントのみがアクセスできる、ユーザーの個人証明書および関連する秘密キーが含まれています。

Windows-ROOT-CURRENTUSER (Windows-ROOTとも呼ばれます): ネイティブMicrosoft Windows ROOTキーストアを識別するキーストア・タイプ。現在のユーザー・アカウントのみがアクセスできる、ルート認証局の証明書および他の信頼できる自己署名証明書が含まれています。

Windows-MY-LOCALMACHINE: ネイティブMicrosoft Windows MYキーストアを識別するキーストア・タイプ。システム上のすべてのアカウントがアクセスできる、証明書および関連する秘密キーが含まれています。

Windows-ROOT-LOCALMACHINE: ネイティブMicrosoft Windows ROOTキーストアを識別するキーストア・タイプ。システム上のすべてのアカウントがアクセスできる、ルート認証局の証明書および他の信頼できる自己署名証明書が含まれています。

SecureRandom

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

Signature

MD5withRSA

MD2withRSA

NONEwithRSA

SHA1withRSA

SHA256withRSA

SHA384withRSA

SHA512withRSA

RSASSA-PSS

SHA1withECDSA

SHA224withECDSA

SHA256withECDSA

SHA384withECDSA

SHA512withECDSA

キー・サイズの制限

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

KeyGenerator

表4-25 SunMSCAPIプロバイダのキー・サイズの制限

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

SunECプロバイダ

SunECプロバイダは、楕円曲線暗号(ECC)を実装します。RSAのような従来の暗号システムと比べて、ECCではより小さいキー・サイズで同等のセキュリティが提供されるため、計算の高速化、消費電力の削減、メモリーと帯域幅の節約を実現できます。アプリケーションは、(SunPKCS11を通じて)外部のECCライブラリに依存せずに、標準のJCA/JCE APIを使用してECCの機能にアクセスできます。

アルゴリズム

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

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

エンジン アルゴリズム名
AlgorithmParameters EC
KeyAgreement ECDH、X25519、X448、XDH
KeyFactory

EC

Ed25519

Ed448

EdDSA

X25519

X448

XDH

KeyPairGenerator

EC

Ed25519

Ed448

EdDSA

X25519

X448

XDH

Signature

Ed25519

Ed448

EdDSA

NONEwithECDSA

SHA1withECDSA

SHA224withECDSA

SHA256withECDSA

SHA384withECDSA

SHA512withECDSA

NONEwithECDSAinP1363Format

SHA1withECDSAinP1363Format

SHA224withECDSAinP1363Format

SHA256withECDSAinP1363Format

SHA384withECDSAinP1363Format

SHA512withECDSAinP1363Format

SHA3-224withECDSA

SHA3-256withECDSA

SHA3-384withECDSA

SHA3-512withECDSA

SHA3-224withECDSAinP1363Format

SHA3-256withECDSAinP1363Format

SHA3-384withECDSAinP1363Format

SHA3-512withECDSAinP1363Format

ノート:

  • EdDSAアルゴリズムは、Ed25519またはEd448のパラメータとキーを使用して初期化できます。パラメータまたはキーなしでEdDSAアルゴリズムを初期化する場合、デフォルトではEd25519のパラメータおよびキーが使用されます。
    • すべてのEdDSAバリアント(pure、prehashedおよびcontext)がサポートされています。
  • XDHアルゴリズムは、X25519またはX448のパラメータまたはキーを使用して初期化できます。

キー・サイズの制限

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

表4-27 SunECプロバイダのキー・サイズの制限

KeyPairGeneratorアルゴリズム名 デフォルトのキー・サイズ 制限/コメント
EC 384 キー・サイズは256、384または521である必要があります
Ed25519 255 キー・サイズは255にする必要があります
Ed448 448 キー・サイズは448にする必要があります
EdDSA 255 キー・サイズは255または448にする必要があります
X25519 255 キー・サイズは255にする必要があります
X448 448 キー・サイズは448にする必要があります
XDH 255 キー・サイズは255または448にする必要があります

サポートされる楕円曲線名

SunECプロバイダには、楕円曲線(EC)、楕円曲線Diffie-Hellman (ECDH)および楕円曲線デジタル署名アルゴリズム(ECDSA)の各アルゴリズムで使用する様々な楕円曲線の実装が含まれます。これらの曲線の中には、サイドチャネル攻撃の防止に役立つ最新の式と技術を使用して実装されたものがあります。それ以外には、攻撃に対して脆弱である可能性があるため、使用すべきではないレガシー曲線があります。次の表に、これらの各カテゴリに分類される曲線を示します。

次の表の1列目「曲線名」に、SunECが実装する名前を示します。2列目「オブジェクト識別子」には、EC名のオブジェクト識別子を指定します。3列目「その他の名前/別名」には、その曲線のその他の名前または別名を指定します。(値N/Aは、その他の名前がないことを意味します。)1行に表示されている文字列はすべて同じ曲線を表します。たとえば、文字列secp256r11.2.840.10045.3.1.7NIST P-256およびX9.62 prime256v1は同じ曲線を表します。曲線名を使用して、ECGenParameterSpecクラスまたはNamedParameterSpecクラスでECパラメータ生成のパラメータ仕様を作成できます。

推奨曲線

次の表に、SunECプロバイダによって提供され、最新の式と技術を使用して実装される楕円曲線を示します。

表4-28 SunECプロバイダにより提供される推奨曲線

曲線名 オブジェクト識別子 その他の名前/別名
Ed25519 1.3.101.112 なし
Ed448 1.3.101.113 なし
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
X25519 1.3.101.110 なし
X448 1.3.101.111 なし

ECDSA署名に関連付けられたオブジェクト識別子

次の表に、ECDSA署名に関連付けられたオブジェクト識別子(OID)を示します:

表4-29 ECDSA署名に関連付けられたOID

ECDSA署名 OID
SHA1withECDSA 1.2.840.10045.4.1
SHA224withECDSA 1.2.840.10045.4.3.1
SHA256withECDSA 1.2.840.10045.4.3.2
SHA384withECDSA 1.2.840.10045.4.3.3
SHA512withECDSA 1.2.840.10045.4.3.4
SHA3-224withECDSA 2.16.840.1.101.3.4.3.9
SHA3-256withECDSA 2.16.840.1.101.3.4.3.10
SHA3-384withECDSA 2.16.840.1.101.3.4.3.11
SHA3-512withECDSA 2.16.840.1.101.3.4.3.12

Appleプロバイダ

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

アルゴリズム

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

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

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

JdkLDAPプロバイダ

JdkLDAPプロバイダは、SUNプロバイダのLDAP CertStore実装を置き換えます。

アルゴリズム

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

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

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

LDAP

JdkSASLプロバイダ

アルゴリズム

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

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

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

GSSAPI

SaslServer

GSSAPI