3

アプリケーションの下位互換性を確保するために、CVE-2011-3389に対して脆弱なバージョンのMS SQL Serverが使用されている場合の JDBC over TLS の動作をテストしています (2005、またはサービス パックなしの 2008/2008R2 が適合します)。理論的には、次の 2 つのオプションを使用できます。

  • またはなどのブロック暗号を使用して CBC 保護を無効にし-Djsse.enableCBCProtection=false、引き続き使用します。AES_128_CBC3DES_EDE_CBC
  • または、次のようなストリーム暗号にフォールバックします( CVE-2015-2808RC4により、これも安全でないことは認識しています)。

実際には、3DES_EDE_CBCCBC 保護をオフにして接続を確立するのに問題はありませんが、 1.8.0_51 (たまたまCVE-2015-2808 に対処した) または( 1.6+ JDK を使用)よりRC4_128も新しい JDKを使用することはできません。 )。AES_{128,256}_CBC

Java のバージョンごとに分類された結果は次のとおりです。

  • 1.6.0_45 ( jTDS )
    • SSL_RSA_WITH_RC4_128_MD5使用されている
  • 1.7.0_76 ( jTDS ) および 1.8.0 から1.8.0_45 ( MS SQL JDBC ) まで:
    • SSL_RSA_WITH_RC4_128_MD5(デフォルト) またはSSL_RSA_WITH_3DES_EDE_CBC_SHA使用可能
    • AES_128_CBCが無効になっていても使用しません3DES(3DES_EDE_CBCとにかく強制されます)
  • 1.8.0_45 (IBM J9 8.0 SR1) ( MS SQL JDBC )
    • SSL_RSA_WITH_3DES_EDE_CBC_SHAが使用されます (CBC 保護がオフの場合にのみ成功します)。また、AESまたはRC4が要求された場合
  • 1.8.0_51+ (オラクル) ( MS SQL JDBC )
    • SSL_RSA_WITH_3DES_EDE_CBC_SHAが使用されている (CBC 保護がオフの場合にのみ成功)、
    • AES_128_CBCorは使用しませんAES_256_CBC(以前の Java バージョンと3DESは異なり、強制されなくなりました。代わりに、互換性のある暗号スイートとしてリストされるIOExceptionafterを取得します)ClientHello*_WITH_AES_128_CBC_SHA
    • RC4の両方が無効になっていても使用しません: ( jTDSMS SQL JDBCの両方)。AES3DES"no negotiable cipher suite"

java.securityリクエストに使用するのは次のAESとおりです。

jdk.certpath.disabledAlgorithms=MD2
jdk.tls.disabledAlgorithms=SSLv3, RC4, TLSv1.1, TLSv1.2, 3DES_EDE_CBC
jdk.tls.legacyAlgorithms= \
        K_NULL, C_NULL, M_NULL, \
        RC4_128, RC4_40

リクエストするバージョンは次のRC4とおりです。

jdk.certpath.disabledAlgorithms=MD2
jdk.tls.disabledAlgorithms=SSLv3, AES_128_CBC, TLSv1.1, TLSv1.2, AES_256_CBC, AES_128_GCM, AES_256_GCM, 3DES_EDE_CBC
jdk.tls.legacyAlgorithms= \
        K_NULL, C_NULL, M_NULL

質問:

  • MS SQL Server 2014に接続するときにAES_{128,256}_CBC使用できるように、Java クライアントでサポートされているようです。MS SQL Server 2005でサポートされていないことを確認できますか? 事実上無効にすると につながるので、サポートされていると思いますが、CBC保護がオフになっているにもかかわらず、サーバー側で何かが起こります。TLS_ECDHE_RSA_WITH_AES_256_CBC_SHAAES"no negotiable cipher suite"
  • RC4Java 1.8.0_51+で引き続き使用するにはどうすればよいですか? このソリューションは機能しなくなり、https.cipherSuitesシステム プロパティにも影響しません (ここで説明します)。6u1157u101には魔法のjdk.tls.enableRC4CipherSuitesシステム プロパティがありますが、Java 1.8 では効果がないようです。
  • jTDSの何が問題なのですか? Java 1.6 および 1.7 (ドライバー バージョン 1.2.8 および 1.3.1) では正常に動作しますが、Java 1.8 を使用すると、 MS SQL JDBCが接続データの暗号化に使用する"Connection reset by peer"たびに常に受信します。3DES
4

0 に答える 0