Java™ SE 7リリースにおけるセキュリティの拡張機能

Java SE 7リリースには次の機能が追加されています。

  • 楕円曲線暗号(ECC)
    いくつかのECCベースのアルゴリズム(ECDSA/ECDH)を提供する新しいネイティブ・プロバイダがJava SE 7リリースに追加されました。

  • CertPathアルゴリズムの無効化
    脆弱な暗号アルゴリズムを無効にできるようになりました。 たとえば、MD2ダイジェスト・アルゴリズムは現在セキュアではないと考えられています。 Java SE 7リリースでは、証明書パス処理とTLSハンドシェイクにおいて、特定のアルゴリズムの使用を拒否するためのメカニズムが提供されます。

  • JSSE(SSL/TLS)
    • TLS 1.1
      SunJSSEプロバイダが、TLS 1.1(RFC 4346に記載)をサポートするようになりました。 もっとも重要な更新内容は、暗号ブロック連鎖(CBC)への攻撃に対する保護機能です。

    • TLS 1.2
      SunJSSEプロバイダが、TLS 1.2(RFC 5246に記載)をサポートするようになりました。 TLS 1.2の特に重要な点として、さまざまな内部ハッシング・アルゴリズムを規定し、新しい暗号スイート(Cipher Suite)を追加し、特に暗号アルゴリズムのネゴシエーションにおいて柔軟性を高めています。

    • 脆弱な暗号スイートを非推奨に設定
      RFC 4346RFC 5246RFC 5469では、一部の暗号スイートが廃止されたため、これらの使用は推奨されません。 これらの廃止された暗号スイートは、SunJSSEではデフォルトですべて無効になっています。 詳細は、SunJSSEプロバイダに関するドキュメントの暗号スイートのリストを参照してください。

    • コネクション重視のトラスト管理
      トラスト・マネージャとキー・マネージャが、ハンドシェイク中にTLSコネクション(具体的には作成中のSSLSession)のパラメータを検証できるようになりました。 たとえば、トラスト・マネージャは有効な署名アルゴリズムのリストに基づいて、使用される証明書の種類を制限できます。

    • エンドポイントの検証
      リモート・コンピュータのホスト・アドレスが、付属する証明書と一致することを検証するための、エンドポイント識別アルゴリズムを指定できます。 この種の検証は、以前はHTTPSで実行されていましたが(HttpsURLConnectionおよびHostnameVerifierを参照)、このような検証をTLSレベルで任意に実行できるようになりました。

    • TLS再ネゴシエーション
      Java SEではRFC 5746がサポートされます。RFC 5746では、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のハンドシェイク中のバージョン番号確認が厳密化されています。 詳細は、JSSE Reference Guideを参照してください。