Java 暗号化アーキテクチャー
Oracle プロバイダのドキュメント

Java Platform Standard Edition 7



はじめに
暗号化アルゴリズムの輸入制限
SunPKCS11 プロバイダ
SUN プロバイダ
SunRsaSign プロバイダ
SunJSSE プロバイダ
SunJCE プロバイダ
SunJGSS プロバイダ
SunSASL プロバイダ
XMLDSig プロバイダ
SunPCSC プロバイダ
SunMSCAPI プロバイダ
SunEC プロバイダ


注:標準名のドキュメントには、このドキュメントで使用されている標準名に関する詳細な情報が含まれています。


はじめに

Java プラットフォームでは、暗号化、公開鍵インフラストラクチャー、認証、安全な通信、アクセス制御など、主要なセキュリティー分野に渡る一連の API が定義されています。これらの API によって、開発者はアプリケーションコードにセキュリティーメカニズムを簡単に統合できます。Java 暗号化アーキテクチャー (JCA) およびそのプロバイダアーキテクチャーは、Java Development Kit (JDK) のコア概念です。このアーキテクチャーについて十分理解していることが前提となります。

このドキュメントでは、Oracle の Java 環境の一部として提供されているプロバイダの技術的な詳細について説明します。

注: JDK での暗号化実装は、歴史的な理由および提供するサービスの種類により、さまざまなプロバイダによって配布されています (「Sun」、「SunJSSE」、「SunJCE」、「SunRsaSign」)。汎用アプリケーションは、特定のプロバイダから暗号化サービスを要求しないようにする必要があります。たとえば、次のように指定できます。
    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 乱数ジェネレータ、KeyPairGeneratorKeyFactory など)。

当時有効だった米国の輸出制限事項によって、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 実装

CertificateFactoryCertPathBuilderCertPathValidator、および 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
RSA
KeyManagerFactory
SunX509: X509ExtendedKeyManager インスタンスのファクトリであり、IETF PKIX ワーキンググループによって RFC 3280 またはその後継で定義された規則に従って、ローカル側の認証に使用する X.509 証明書ベースの鍵ペアを管理します。この KeyManagerFactory は、Keystore オブジェクトを使用した初期化をサポートしますが、現在のところ javax.net.ssl.ManagerFactoryParameters クラスを使用した初期化はサポートしていません。

PKIX: X509ExtendedKeyManager インスタンスのファクトリであり、IETF PKIX ワーキンググループによって RFC 3280 またはその後継で定義された規則に従って、ローカル側の認証に使用する X.509 証明書ベースの鍵ペアを管理します。現在、この KeyManagerFactory は、KeyStore オブジェクトまたは javax.net.ssl.KeyStoreBuilderParameters を使用した初期化をサポートしています。
KeyPairGenerator
RSA
KeyStore
PKCS12
Signature
MD2withRSA
MD5withRSA
SHA1withRSA
SSLContext
SSLv3
TLSv1
TLSv1.1
TLSv1.2
TrustManagerFactory
SunX509: X509ExtendedTrustManager インスタンスのファクトリであり、IETF PKIX ワーキンググループによって RFC 3280 またはその後継で定義された規則に従って、証明書チェーンを検証します。この TrustManagerFactory は、Keystore オブジェクトを使用した初期化をサポートしますが、現在のところ javax.net.ssl.ManagerFactoryParameters クラスを使用した初期化はサポートしていません。

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

プロトコル

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 暗号化プロバイダが必要です。

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

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

Java SE 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 暗号化拡張機能 (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 の範囲内である必要があります。


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