次の項目について説明します。
分野: JCE
概要: Mac OS Xキー・チェーンへのアクセスを提供するjava.security.KeyStore
を実装するApple
プロバイダが導入されました。これは、RFE JDK-7113349 (Mac OS X用のJDKポート)の一部です。「Java暗号化アーキテクチャOracleプロバイダのドキュメント」のApple
プロバイダのセクションを参照してください。
セキュリティ領域でのSPARC T4固有の暗号化最適化
SPARC T4には、オンチップ(ネイティブ)暗号化の実装が含まれています。これらの実装には、SunPKCS11-Solarisプロバイダ(Java SE 5.0リリース以降で利用可能)とOracleUcrypto Provider(7u4リリースで導入)のいずれかを利用するJavaアプリケーションからアクセスできます。
新しいOracleUcrypto Service Providerは、PKCS11レイヤーを経由せずに、基礎となるネイティブ(T4)の暗号化ライブラリにアクセスして、デフォルトで、Solaris OSの最も優先されるプロバイダとなるように構成されます。
「Java暗号化アーキテクチャOracleプロバイダのドキュメント」を参照してください。
分野: Java暗号化拡張機能
概要: 楕円曲線暗号(ECC)鍵を含む公開鍵証明書は、Solaris 11上のSunPKCS11
JCEセキュリティ・プロバイダによって正しく解析されます。7054637を参照してください。
JDK 7リリースには、次の機能が追加されています。
楕円曲線暗号(ECC): Java SE 7リリースには、ECCベースの複数のアルゴリズム(ECDSA/ECDH)を提供する新しいネイティブ・プロバイダが追加されました。詳細は、「Java暗号化アーキテクチャOracleプロバイダのドキュメント」のSunECプロバイダでサポートされるアルゴリズムに関するセクションを参照してください。
CertPathアルゴリズムの無効化: 脆弱な暗号化アルゴリズムを無効化できるようになりました。たとえば、MD2ダイジェスト・アルゴリズムは安全と見なされなくなっています。Java SE 7リリースでは、証明書パス処理およびTLSハンドシェークで特定のアルゴリズムの使用を拒否するためのメカニズムが提供されています。詳細は、『Java PKIプログラマーズ・ガイド』の暗号化アルゴリズムの無効化に関する付録Dおよび『Java Secure Socket Extension (JSSE)リファレンス・ガイド』の無効化された暗号化アルゴリズムについて参照してください。
JSSE (SSL/TLS):
TLS 1.1: SunJSSEプロバイダは、RFC 4346に記述されているTLS 1.1をサポートするようになりました。もっとも重要な更新は、暗号ブロック連鎖(CBC)攻撃に対する保護です。
TLS 1.2: SunJSSEプロバイダは、RFC 5246に記述されているTLS 1.2をサポートするようになりました。特に重要な点として、さまざまな内部ハッシング・アルゴリズムを規定し、新しい暗号化方式群を追加し、柔軟性を(特に暗号化アルゴリズムのネゴシエーションについて)高めています。
脆弱な暗号化方式群を非推奨に設定: RFC 4346、RFC 5246およびRFC 5469に従って、一部の暗号化方式群が廃止されたため、それらの使用は非推奨です。これらの廃止された暗号化方式群は、SunJSSE
ではデフォルトですべて無効になっています。詳細は、「Java暗号化アーキテクチャOracleプロバイダのドキュメント」のSunJSSE
プロバイダに関するセクションにある暗号のリストを参照してください。
接続を考慮したトラスト管理: トラスト・マネージャとキー・マネージャが、ハンドシェーク中にTLS接続(具体的には作成中のSSLSession
)のパラメータを検査できるようになりました。たとえば、トラスト・マネージャは、有効な署名アルゴリズムのリストに基づいて、使用される証明書の種類を制限できます。
HttpsURLConnection
およびHostnameVerifier
を参照)、このような検証をTLSレベルで必要に応じて実行できるようになりました。TLSの再ネゴシエーション: Java SEでは、TLSプロトコルの再ネゴシエーションの問題を解決するRFC 5746がサポートされます。「Java Secure Socket Extension (JSSE)リファレンス・ガイド」のTransport Layer Security (TLS)再ネゴシエーションの問題に関するセクションを参照してください。
クライアントのSSLv2Helloをデフォルトで無効化: Java SE 7では、クライアント上のデフォルトで有効なプロトコルのリストからSSLv2Helloが削除されています。
アルゴリズムの無効化: 前述のとおり、脆弱な暗号化アルゴリズムを無効化できるようになりました。
JSSEクライアントのServer Name Indication (SNI): Java SE 7リリースでは、JSSEクライアントでのServer Name Indication (SNI)拡張がサポートされます。SNIについては、RFC 4366で説明されています。これによって、TLSクライアントが仮想サーバーに接続できます。
EncryptedPreMasterSecretバージョン番号チェックの強化: Java SE 7では、TLS 1.1およびTLS 1.2のハンドシェーク中のバージョン番号チェックが強化されています。詳細は、「Java暗号化アーキテクチャOracleプロバイダのドキュメント」の「EncryptedPreMasterSecretバージョン番号チェックの強化」を参照してください。
さらに、次の拡張機能が追加されています。
分野: セキュリティ
標準/プラットフォーム: Java SE 7
概要:Java SE 7では、セキュリティ・アルゴリズムの要件が定義され、Java SE 7のすべての実装でサポートされる必要があるアルゴリズムのリストが提供されています。該当するクラス(例: java.security.Signature)のクラスのサマリーが更新され、実装要件が追加されました。また、標準アルゴリズムのドキュメントの「実装要件」セクションにすべての要件のリストが記載されています。
RFE: 5001004
分野: API: JSSE
標準/プラットフォーム: Java SE 7
概要: 以前のリリースでは、デフォルトのアルゴリズムを除き、KeyManagerFactoryの標準アルゴリズム名がありませんでした。Java SE 7リリースでは、KeymanagerFactoryの標準アルゴリズム名として「PKIX」がエクスポートされています。「PKIX」のKeyManagerFactoryアルゴリズムは次のように定義されます。
X509ExtendedKeyManagerのファクトリであり、IETF PKIXワーキング・グループによってRFC 3280またはその後継で定義された規則に従って、ローカル側の認証に使用するX.509証明書ベースの鍵ペアを管理します。KeyManagerFactoryは、クラスjavax.net.ssl.KeyStoreBuilderParametersを使用した初期化をサポートする必要があります。
RFE: 7022855
分野: API:JSSE
標準/プラットフォーム: Java SE 7
概要:SunJSSEプロバイダにTLS 1.2のサポートが追加されました。
RFE: 6916074
分野: JSSE
標準/プラットフォーム: JDK 7
概要: TLSの再ネゴシエーションの修正が実装されました。詳細は、「TLS/SSLv3再ネゴシエーションの脆弱性に関する説明」および「TLS再ネゴシエーション攻撃について」を参照してください。
分野: JSSE
標準/プラットフォーム: JDK 7
概要: SunJSSEプロバイダのJSSEクライアントにServer Name Indication (SNI)拡張のサポートが追加されました。
RFE: 6985179
分野: SASL
標準/プラットフォーム: JDK 7
概要: クライアント側とサーバー側の両方で、NTLMがSASLメカニズムとしてサポートされるようになりました。実装されているのは認証レイヤーのみであり、通信のプライバシや統合は保護されません。
RFE: 6911951
分野: セキュリティ
標準/プラットフォーム: JDK 7
概要: PKIXの実装が拡張され、対応する鍵の堅牢性が十分でない場合(MD2ハッシュ関数や、キー・サイズが1024未満のRA鍵など)に証明書を拒否するオプションが追加されました。
RFE: 6792180
分野: API:JSSE
標準/プラットフォーム: JDK 7
概要: TLS 1.1のサポートがSunJSSEプロバイダに追加されたため、SunJSSEプロバイダのデフォルトでは「擬似プロトコル」SSLv2Helloがアクティブでなくなりました。
RFE: 4873177
分野: JGSS
標準/プラットフォーム: JDK 7
概要: キータブ・ファイルが変更されるたびに、Javaによってこのファイルが読み取られるようになりました。このファイルを使用するアプリケーションが起動されるときに、このファイルが空白であっても、存在しなくてもかまいません。
分野: JGSS
標準/プラットフォーム: JDK 7
概要: Windowsシステムや*nixシステムに対して、デフォルトでkrb5.confが設定されたJGSS向けのデフォルト構成ファイルが提供されるようになりました。これにより、JGSSやkrb5のプログラム(特にJavaアプレットの配備)が非常に簡単になります。
RFE: 6483218, 6785456, 6552334
分野: JCE
標準/プラットフォーム: JDK 7
概要: SunPKCS11プロバイダでRaw RSA暗号化がサポートされるようになりました。たとえば、基盤となるPKCS11ライブラリでCKM_RSA_X_509メカニズムがサポートされている場合、Cipher.getInstance("RSA/ECB/NoPadding")を呼び出すことができます。また、Cipherオブジェクトを要求するときに、SunPKCS11プロバイダは「RSA」を「RSA/ECB/PKCS1Padding」変換のエイリアスとして認識します。
RFE: 6994008
分野: JCE
標準/プラットフォーム: JDK 7
概要: 特定のブロック暗号に対して、SunPKCS11プロバイダでPKCS5Paddingを使用したECBモードとCBCモードがサポートされるようになりました。より具体的には、対応するPKCS11メカニズムが基盤となるPKCS11ライブラリによってサポートされている場合、Cipher.getInstance(...)の呼出しに対して次の変換がサポートされます。DES, DESede, AES, and Blowfish with CBC mode and PKCS5Padding
DES, DESede, AES with ECB mode and PKCS5Padding
DES, DESede, AES with ECB mode and NoPadding
RFE: 4898461
分野: JCE
標準/プラットフォーム: JDK 7
概要: 基盤となるPKCS11ライブラリでCKM_AES_CTRメカニズムがサポートされている場合、SunPKCS11プロバイダでカウンタ・モード(CTR)を使用したAES暗号化(たとえば、Cipher.getInstance("AES/CTR/NoPadding")の呼出し)がサポートされるようになりました。
RFE: 6604496
分野: JCE
標準/プラットフォーム: JDK 7
概要: Solaris 10 update 5リリースでSolarisの関連するバグ(6306708「CKM_SSL3_KEY_AND_MAC_DERIVEによって、エクスポート可能な暗号化方式群に対して誤った暗号化鍵が返される」)が解決されたため、SunPKCS11プロバイダで次の2つのメカニズムがデフォルトで無効化されなくなりました。CKM_SSL3_KEY_AND_MAC_DERIVE
CKM_TLS_KEY_AND_MAC_DERIVE
RFE: 7036252