SunPKCS11 プロバイダSUN プロバイダSunRsaSign プロバイダSunJSSE プロバイダSunJCE プロバイダSunJGSS プロバイダSunSASL プロバイダXMLDSig プロバイダSunPCSC プロバイダSunMSCAPI プロバイダSunEC プロバイダ注:標準名のドキュメントには、このドキュメントで使用されている標準名に関する詳細な情報が含まれています。
Java プラットフォームでは、暗号化、公開鍵インフラストラクチャー、認証、安全な通信、アクセス制御など、主要なセキュリティー分野に渡る一連の API が定義されています。これらの API によって、開発者はアプリケーションコードにセキュリティーメカニズムを簡単に統合できます。Java 暗号化アーキテクチャー (JCA) およびそのプロバイダアーキテクチャーは、Java Development Kit (JDK) のコア概念です。このアーキテクチャーについて十分理解していることが前提となります。
このドキュメントでは、Oracle の Java 環境の一部として提供されているプロバイダの技術的な詳細について説明します。
getInstance("...", "SunJCE"); // not recommended
vs.
getInstance("..."); // recommended
後者のようにしないと、アプリケーションは特定のプロバイダに結び付けられることになり、そのプロバイダはほかの Java 実装で使用できない可能性があります。特定の要求されたプロバイダよりも優先順位が高い、使用可能な最適化されたプロバイダ (たとえば、PKCS11 によるハードウェアアクセラレータまたは Microsoft の MSCAPI などのネイティブ OS 実装) を利用できない場合もあります。一部の国では輸入規制があるため、Oracle の実装では、暗号化アルゴリズムの強度を制限するデフォルトの暗号化管轄ポリシーファイルが提供されます。次に、この「強力な」バージョンの管轄ポリシーファイルで許可される最大キーサイズを示します。
| アルゴリズム | 最大キーサイズ |
|---|---|
| DES | 64 |
| DESede | * |
| RC2 | 128 |
| RC4 | 128 |
| RC5 | 128 |
| RSA | * |
| その他すべて | 128 |
より強力なアルゴリズム (たとえば、256 ビットの鍵を使用する AES) が必要な場合は、強度が無制限の JCE 管轄ポリシーファイルを入手して、JDK/JRE にインストールする必要があります。
この行為が各地域の規制下で許可されるかどうかを確認することは、ユーザーの責任です。
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) が含まれていました。後続のリリースでは、ほかのメカニズムも追加されました (SecureRandom 乱数ジェネレータ、KeyPairGenerator、KeyFactory など)。
当時有効だった米国の輸出制限事項によって、JDK の内部で使用可能な暗号化機能に重大な制限が課されました。このため、SUN プロバイダには、データを直接暗号化または復号化しない暗号化エンジンが含まれています。
SUN プロバイダでは、次のアルゴリズムを使用できます。
| エンジン | アルゴリズム名 |
|---|---|
AlgorithmParameterGenerator |
DSA |
AlgorithmParameters |
DSA |
CertificateFactory |
X.509 |
CertPathBuilder |
PKIX |
CertPathValidator |
PKIX |
CertStore |
Collection LDAP |
Configuration |
JavaLoginConfig |
KeyFactory |
DSA |
KeyPairGenerator |
DSA |
KeyStore |
JKS |
MessageDigest |
MD2 MD5 SHA-1 SHA-256 SHA-384 SHA-512 |
Policy |
JavaPolicy |
SecureRandom |
SHA1PRNG |
Signature |
NONEwithDSA SHA1withDSA |
SUN プロバイダでは、次のデフォルトキーサイズ (ビット単位) を使用し、次の制限を強制します。
KeyPairGenerator
| アルゴリズムの名前 | デフォルトキーサイズ | 制限/コメント |
|---|---|---|
| DSA | 1024 | キーサイズは、512 から 1024 の範囲で、64 の倍数である必要があります。 |
AlgorithmParameterGenerator
| アルゴリズムの名前 | デフォルトキーサイズ | 制限/コメント |
|---|---|---|
| DSA | 1024 | キーサイズは、512 から 1024 の範囲で、64 の倍数である必要があります。 |
CertificateFactory/CertPathBuilder/CertPathValidator/CertStore 実装CertificateFactory、CertPathBuilder、CertPathValidator、および CertStore に対する SUN プロバイダ実装の詳細については、「PKI プログラマーズガイド」の「付録 B」を参照してください。
SunRsaSign プロバイダSunRsaSign プロバイダは、SunJSSE プロバイダの RSA 署名の機能が拡張された代替機能として、JDK 1.3 で導入されました。
SunRsaSign プロバイダでは、次のアルゴリズムを使用できます。
| エンジン | アルゴリズム名 |
|---|---|
KeyFactory |
RSA |
KeyPairGenerator |
RSA |
Signature |
MD2withRSA MD5withRSA SHA1withRSA SHA256withRSA SHA384withRSA SHA512withRSA |
SunRsaSign プロバイダでは、次のデフォルトキーサイズ (ビット単位) を使用し、次の制限を強制します。
KeyPairGenerator
| アルゴリズムの名前 | デフォルトキーサイズ | 制限/コメント |
|---|---|---|
| RSA | 1024 | キーサイズの範囲は、512 から 65536 ビットの間である必要があります。後者の値は不必要に大きくなっています。 |
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 |
|
KeyManagerFactory |
|
KeyPairGenerator |
|
KeyStore |
|
Signature |
|
SSLContext |
|
TrustManagerFactory |
|
SunJSSE は次の protocol パラメータをサポートしています。
| プロトコル | クライアントではデフォルトで有効 | サーバーではデフォルトで有効 |
|---|---|---|
| SSLv3 | はい | はい |
| TLSv1 | はい | はい |
| TLSv1.1 脚注 1 | いいえ | はい |
| TLSv1.2 脚注 1 | いいえ | はい |
| SSLv2Hello 脚注 2 | いいえ | はい |
脚注 1 Java SE 7 リリースの SunJSSE は TLS 1.1 と TLS 1.2 をサポートしますが、クライアント接続の場合はどちらのバージョンもデフォルトで有効になりません。一部のサーバーは、上位互換性を正しく実装していないため、TLS 1.1 または TLS 1.2 クライアントとの通信を拒否します。SunJSSE は、相互運用性を確保するため、クライアント接続の場合は TLS 1.1 または TLS 1.2 をデフォルトで有効にしません。
サーバー接続では、このような相互運用性の問題は発生しません。サーバー接続の場合は、TLS 1.1 および TLS 1.2 がデフォルトで有効になります。
脚注 2 SSLv3、TLSv1、および TLSv1.1 プロトコルを使用すると、SSLv3、TLSv1、および TLSv1.1 の hello を SSLv2 形式の hello にカプセル化して送信できます。
SunJSSE は、数多くの暗号化方式群をサポートしています。次の 2 つの表は、SunJSSE でサポートされている暗号化方式群 (優先順)、およびそれらが導入されたリリースを示しています。
1 つ目の表には、デフォルトで有効になっている暗号化方式群を示します。2 つ目の表には、SunJSSE でサポートされているが、デフォルトでは有効になっていない暗号化方式群を示します。
| 暗号化方式群 | J2SE v1.4 | J2SE v1.4.1、v1.4.2 | J2SE 5.0 | Java SE 6 | Java SE 7 |
|---|---|---|---|---|---|
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 |
X脚注 1 | ||||
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 |
X脚注 1 | ||||
TLS_RSA_WITH_AES_256_CBC_SHA256 |
X脚注 1 | ||||
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 |
X脚注 1 | ||||
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 |
X脚注 1 | ||||
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 |
X脚注 1 | ||||
TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 |
X脚注 1 | ||||
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA |
X | X | |||
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA |
X | X | |||
TLS_RSA_WITH_AES_256_CBC_SHA |
X | X | X | X | |
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA |
X | X | |||
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA |
X | X | |||
TLS_DHE_RSA_WITH_AES_256_CBC_SHA |
X | X | X | X | |
TLS_DHE_DSS_WITH_AES_256_CBC_SHA |
X | X | X | X | |
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 |
X脚注 1 | ||||
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 |
X脚注 1 | ||||
TLS_RSA_WITH_AES_128_CBC_SHA256 |
X脚注 1 | ||||
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 |
X脚注 1 | ||||
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 |
X脚注 1 | ||||
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 |
X脚注 1 | ||||
TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 |
X脚注 1 | ||||
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA |
X | X | |||
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA |
X | X | |||
TLS_RSA_WITH_AES_128_CBC_SHA |
X | X | X | X | |
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA |
X | X | |||
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA |
X | X | |||
TLS_DHE_RSA_WITH_AES_128_CBC_SHA |
X | X | X | X | |
TLS_DHE_DSS_WITH_AES_128_CBC_SHA |
X | X | X | X | |
TLS_ECDHE_ECDSA_WITH_RC4_128_SHA |
X | X | |||
TLS_ECDHE_RSA_WITH_RC4_128_SHA |
X | X | |||
SSL_RSA_WITH_RC4_128_SHA |
X | X | X | X | X |
TLS_ECDH_ECDSA_WITH_RC4_128_SHA |
X | X | |||
TLS_ECDH_RSA_WITH_RC4_128_SHA |
X | X | |||
TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA |
X | X | |||
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA |
X | X | |||
SSL_RSA_WITH_3DES_EDE_CBC_SHA |
X | X | X | X | X |
TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA |
X | X | |||
TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA |
X | X | |||
SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA |
X | X | X | X | |
SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA |
X | X | X | X | X |
SSL_RSA_WITH_RC4_128_MD5 |
X | X | X | X | X |
TLS_EMPTY_RENEGOTIATION_INFO_SCSV2 |
1.4.2u28+ | u26+ | u22+ | X |
脚注 1 SHA384 および SHA256 を使用する暗号化方式群は、TLS 1.2 以降でのみ使用可能です。
脚注 2 TLS_EMPTY_RENEGOTIATION_INFO_SCSV は、RFC 5746 をサポートするための新しい擬似暗号化方式群です。詳細は、JSSE リファレンスガイドの「Transport Layer Security (TLS) 再ネゴシエーションの問題」セクションを参照してください。
| 暗号化方式群 | J2SE v1.4 | J2SE v1.4.1、v1.4.2 | J2SE 5.0 | Java SE 6 | Java SE 7 |
|---|---|---|---|---|---|
TLS_DH_anon_WITH_AES_256_CBC_SHA256 |
X | ||||
TLS_ECDH_anon_WITH_AES_256_CBC_SHA |
X | X | |||
TLS_DH_anon_WITH_AES_256_CBC_SHA |
X | X | X | X | |
TLS_DH_anon_WITH_AES_128_CBC_SHA256 |
X | ||||
TLS_ECDH_anon_WITH_AES_128_CBC_SHA |
X | X | |||
TLS_DH_anon_WITH_AES_128_CBC_SHA |
X | X | X | X | |
TLS_ECDH_anon_WITH_RC4_128_SHA |
X | X | |||
SSL_DH_anon_WITH_RC4_128_MD5 |
X | X | X | X | X |
TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA |
X | X | |||
SSL_DH_anon_WITH_3DES_EDE_CBC_SHA |
X | X | X | X | X |
TLS_RSA_WITH_NULL_SHA256 |
X | ||||
TLS_ECDHE_ECDSA_WITH_NULL_SHA |
X | X | |||
TLS_ECDHE_RSA_WITH_NULL_SHA |
X | X | |||
SSL_RSA_WITH_NULL_SHA |
X | X | X | X | X |
TLS_ECDH_ECDSA_WITH_NULL_SHA |
X | X | |||
TLS_ECDH_RSA_WITH_NULL_SHA |
X | X | |||
TLS_ECDH_anon_WITH_NULL_SHA |
X | X | |||
SSL_RSA_WITH_NULL_MD5 |
X | X | X | X | X |
SSL_RSA_WITH_DES_CBC_SHA |
X | X | X | X | X脚注 1 |
SSL_DHE_RSA_WITH_DES_CBC_SHA |
X | X | X | X脚注 1 | |
SSL_DHE_DSS_WITH_DES_CBC_SHA |
X | X | X | X | X脚注 1 |
SSL_DH_anon_WITH_DES_CBC_SHA |
X | X | X | X | X脚注 1 |
SSL_RSA_EXPORT_WITH_RC4_40_MD5 |
X | X | X | X | X脚注 2 |
SSL_DH_anon_EXPORT_WITH_RC4_40_MD5 |
X | X | X | X | X脚注 2 |
SSL_RSA_EXPORT_WITH_DES40_CBC_SHA |
X | X | X | X脚注 2 | |
SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA |
X | X | X | X脚注 2 | |
SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA |
X | X | X | X | X脚注 2 |
SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA |
X | X | X | X | X脚注 2 |
TLS_KRB5_WITH_RC4_128_SHA |
X | X | X | ||
TLS_KRB5_WITH_RC4_128_MD5 |
X | X | X | ||
TLS_KRB5_WITH_3DES_EDE_CBC_SHA |
X | X | X | ||
TLS_KRB5_WITH_3DES_EDE_CBC_MD5 |
X | X | X | ||
TLS_KRB5_WITH_DES_CBC_SHA |
X | X | X脚注 1 | ||
TLS_KRB5_WITH_DES_CBC_MD5 |
X | X | X脚注 1 | ||
TLS_KRB5_EXPORT_WITH_RC4_40_SHA |
X | X | X脚注 2 | ||
TLS_KRB5_EXPORT_WITH_RC4_40_MD5 |
X | X | X脚注 2 | ||
TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA |
X | X | X脚注 2 | ||
TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5 |
X | X | X脚注 2 |
脚注 1 RFC 5246 TLS 1.2 では、これらの群の使用は禁止されています。これらは、SSLv3/TLS1.0/TLS1.1 プロトコルでは使用できますが、TLS 1.2 以降では使用できません。
脚注 2 RFC 4346 TLS 1.1 では、これらの群の使用は禁止されています。これらは、SSLv3/TLS1.0 プロトコルでは使用できますが、TLS 1.1 以降では使用できません。
AES_256 を使用する暗号化方式群では、強度が無制限の JCE 管轄ポリシーファイルがインストールされている必要があります。「暗号化アルゴリズムの輸入制限」を参照してください。
楕円曲線暗号 (ECDSA、ECDH、ECDHE、ECDH_anon) を使用する暗号化方式群では、次の要件を満たす JCE 暗号化プロバイダが必要です。
プロバイダは、パッケージ java.security.spec および java.security.interfaces 内のクラスとインタフェースで定義されているように ECC を実装する必要があります。Elliptic Curve 鍵オブジェクトの getAlgorithm() メソッドは、文字列「EC」を返す必要があります。
プロバイダは、Signature アルゴリズムの SHA1withECDSA と NONEwithECDSA、KeyAgreement アルゴリズムの ECDH、およびアルゴリズム EC の KeyPairGenerator と KeyFactory をサポートする必要があります。これらのアルゴリズムのいずれかが欠落している場合、SunJSSE では EC 暗号化方式群の使用が許可されません。
プロバイダは、RFC 4492 仕様のセクション 5.1.1 (「付録 A」も参照) で説明されているすべての SECG 曲線をサポートする必要があります。証明書では、圧縮されていない形式を使用してポイントをエンコードし、namedCurve 選択を使用して (つまりオブジェクト識別子を使用して) 曲線をエンコードします。
これらの要件が満たされていない場合、EC 暗号化方式群が正しくネゴシエーションされないことがあります。
Java SE 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 暗号化拡張機能 (JCE) は、個別の「オプションパッケージ」(「標準拡張機能」とも呼ばれています) としてリリースされ、JDK 1.2.x および 1.3.x で使用できました。JDK 1.4 の開発時に制限が緩和されたため、JCE (および SunJSSE) は JDK の一部としてバンドルできるようになりました。
SunJCE プロバイダでは、次のアルゴリズムを使用できます。
| エンジン | アルゴリズム名 |
|---|---|
AlgorithmParameterGenerator |
DiffieHellman |
AlgorithmParameters |
AES Blowfish DES DESede DiffieHellman OAEP PBEWithMD5AndDES PBEWithMD5AndTripleDES PBEWithSHA1AndDESede PBEWithSHA1AndRC2_40 RC2 |
Cipher |
暗号の表を参照してください。 |
KeyAgreement |
DiffieHellman |
KeyFactory |
DiffieHellman |
KeyGenerator |
AES ARCFOUR Blowfish DES DESede HmacMD5 HmacSHA1 HmacSHA256 HmacSHA384 HmacSHA512 RC2 |
KeyPairGenerator |
DiffieHellman |
KeyStore |
JCEKS |
Mac |
HmacMD5 HmacSHA1 HmacSHA256 HmacSHA384 HmacSHA512 |
SecretKeyFactory |
DES DESede PBEWithMD5AndDES PBEWithMD5AndTripleDES PBEWithSHA1AndDESede PBEWithSHA1AndRC2_40 PBKDF2WithHmacSHA1 |
次の表に、SunJCE プロバイダで使用できる暗号アルゴリズムを示します。
| アルゴリズム名 | モード | パディング |
|---|---|---|
| AES | ECB、CBC、PCBC、CTR、CTS、CFB、CFB8..CFB128、OFB、OFB8..OFB128 | NOPADDING、PKCS5PADDING、ISO10126PADDING |
| AESWrap | ECB | NOPADDING |
| ARCFOUR | ECB | NOPADDING |
| Blowfish、DES、DESede、RC2 | ECB、CBC、PCBC、CTR、CTS、CFB、CFB8..CFB64、OFB、OFB8..OFB64 | NOPADDING、PKCS5PADDING、ISO10126PADDING |
| DESedeWrap | CBC | NOPADDING |
| PBEWithMD5AndDES、PBEWithMD5AndTripleDES1、PBEWithSHA1AndDESede、PBEWithSHA1AndRC2_40 | CBC | PKCS5Padding |
| RSA | ECB | NOPADDING、PKCS1PADDING、OAEPWITHMD5ANDMGF1PADDING、OAEPWITHSHA1ANDMGF1PADDING、OAEPWITHSHA-1ANDMGF1PADDING、OAEPWITHSHA-256ANDMGF1PADDING、OAEPWITHSHA-384ANDMGF1PADDING、OAEPWITHSHA-512ANDMGF1PADDING |
1 PBEWithMD5AndTripleDES は、標準化されていない独自のアルゴリズムです。
SunJCE プロバイダでは、次のデフォルトキーサイズ (ビット単位) を使用し、次の制限を強制します。
KeyGenerator
| アルゴリズム名 | デフォルトキーサイズ | 制限/コメント |
|---|---|---|
| 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 | キーサイズの制限はありません。 |
| HmacSHA256 | 256 | キーサイズの制限はありません。 |
| HmacSHA384 | 384 | キーサイズの制限はありません。 |
| HmacSHA512 | 512 | キーサイズの制限はありません。 |
| RC2 | 128 | キーサイズは、40 から 1024 の範囲内である必要があります。 |
注: 各種のパスワードベース暗号化 (PBE) アルゴリズムは、さまざまなアルゴリズムを使用して鍵データを生成し、最終的にターゲットの Cipher アルゴリズムに依存します。たとえば、「PBEWithMD5AndDES」は常に 56 ビットの鍵を生成します。
KeyPairGenerator
| アルゴリズム名 | デフォルトキーサイズ | 制限/コメント |
|---|---|---|
| Diffie-Hellman (DH) | 1024 | キーサイズは、512 から 1024 の範囲で、64 の倍数である必要があります。 |
AlgorithmParameterGenerator
| アルゴリズムの名前 | デフォルトキーサイズ | 制限/コメント |
|---|---|---|
| Diffie-Hellman (DH) | 1024 | キーサイズは、512 から 1024 の範囲で、64 の倍数である必要があります。 |
| DSA | 1024 | キーサイズは、512 から 1024 の範囲で、64 の倍数である必要があります。 |
SunJGSS プロバイダSunJGSS プロバイダでは、次のアルゴリズムを使用できます。
| OID | 名前 |
|---|---|
1.2.840.113554.1.2.2 |
Kerberos v5 |
1.3.6.1.5.5.2 |
SPNEGO |
SunSASL プロバイダSunSASL プロバイダでは、次のアルゴリズムを使用できます。
| エンジン | アルゴリズム名 |
|---|---|
SaslClient |
CRAM-MD5 DIGEST-MD5 EXTERNAL GSSAPI PLAIN |
SaslServer |
CRAM-MD5 DIGEST-MD5 GSSAPI |
XMLDSig プロバイダ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 スマートカードスタックと相互に作用することができます。一部のオペレーティングシステムでは、PC/SC スタックを使用する前にこれを有効にして構成する必要があることがあります。詳細は、オペレーティングシステムのドキュメントを参照してください。
Solaris および Linux プラットフォームでは、SunPCSC は libpcsclite.so ライブラリを使用して PC/SC スタックにアクセスします。SunPCSC は、ディレクトリ /usr/$LIBISA および /usr/local/$LIBISA 内でこのライブラリを検索します。$LIBISA は、32 ビットのプラットフォームでは lib、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 プロバイダでは、次のアルゴリズムを使用できます。
| エンジン | アルゴリズム名 |
|---|---|
TerminalFactory |
PC/SC |
SunMSCAPI プロバイダSunMSCAPI プロバイダを使用すると、アプリケーションは標準の JCA/JCE API を使用して、Microsoft Windows プラットフォームのネイティブ暗号化ライブラリ、証明書ストア、および鍵コンテナにアクセスできます。SunMSCAPI プロバイダ自体には暗号化機能は含まれていません。このプロバイダは、Java 環境と Windows のネイティブ暗号化サービス間のコンジットとして機能します。
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
| アルゴリズムの名前 | デフォルトキーサイズ | 制限/コメント |
|---|---|---|
| RSA | 1024 | キーサイズの範囲は 512 ビットから 16,384 ビットです。ベースとなる Microsoft Windows 暗号化サービスプロバイダによって異なります。 |
SunEC プロバイダSunEC プロバイダは、楕円曲線暗号 (ECC) を実装します。ECC は、モバイル/ワイヤレス環境やその他の環境向けの魅力的な公開鍵暗号システムとして普及しつつあります。RSA のような従来の暗号システムと比べて、ECC ではより小さいキーサイズで同等のセキュリティーが提供されるため、計算の高速化、消費電力の削減、メモリーと帯域幅の節約を実現できます。
アプリケーションは、JDK 6 リリースのように (SunPKCS11 を介して) 外部の ECC ライブラリに依存せずに、標準の JCA/JCE API を使用して ECC の機能にアクセスできるようになりました。
SunEC プロバイダでは、次のアルゴリズムを使用できます。
| エンジン | アルゴリズム名 |
|---|---|
AlgorithmParameters |
EC |
KeyAgreement |
ECDH |
KeyFactory |
EC |
KeyPairGenerator |
EC |
Signature |
NONEwithECDSA SHA1withECDSA SHA256withECDSA SHA384withECDSA SHA512withECDSA |
SunEC プロバイダでは、次のデフォルトキーサイズ (ビット単位) を使用し、次の制限を強制します。
KeyPairGenerator
| アルゴリズムの名前 | デフォルトキーサイズ | 制限/コメント |
|---|---|---|
| EC | 256 | キーサイズは、112 から 571 の範囲内である必要があります。 |