如何在java服务器的ssl中禁用112位密码套件

如何在Java应用程序服务器上禁用112位密码套件。 具体这些之一。

TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA TLS_RSA_WITH_3DES_EDE_CBC_SHA TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA TLS_RSA_WITH_3DES_EDE_CBC_SHA TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA TLS_RSA_WITH_3DES_EDE_CBC_SHA 

我编辑了java.security文件,并使jdk.tls.disabledAlgorithms=SSLv3, MD5withRSA, DH keySize < 2048 ,仍然列出这些algorithm。

我也想降级防攻击( TLS_FALLBACK_SCSV

该怎么办 ?

在更改SSLconfiguration之前,可能需要了解此漏洞的具体含义。

当引入3DES时,要求可以与传统的单DES系统互操作。 3DES背后的想法是,您可以通过使用不同的密钥执行多个DES操作来倍增安全性。 为了提供兼容性,他们使用了一个EDE结构:3个DES操作按顺序 – encryption,解密,encryption – 或简称为EDE。 事实certificate,DES解密操作在安全性方面与encryption操作基本上是可以互换的,所以这个工作得很好。 当您为每个操作使用三个独立的键(称为键控选项1)时,您基本上拥有一个168位键。 如果你想回到旧的单DES模式,你可以使用一个不同的密钥选项(3),它有三个子密钥设置为相同的值,即k1 = k2 = k3,这样两个操作就可以抵消一个DES操作实际上很重要。 还有另一个键控选项,其中两个键具有相同的值,但是有一个不同,产生一个112位的键,但是这在实际中并不真正使用,并且(有点令人困惑)与为什么你看到3DES完全无关报告为112位。

为了让事情更加令人困惑,有时您会听到人们谈论64位DES或192位3DES。 从密码学的angular度来看,它们与56位DES或168位3DES相同。 DES指定了一个密钥填充系统,可以将8个填充位添加到56位密钥中以生成64位填充密钥。 这是用于一些旧的系统,并不重要,但8位可以忽略,只有56位实际上是关键的材料。 在192位3DES中,同样的事情发生,其中每个56位子密钥都填充了8个填充位,但真正的密钥只有168位长。

现在,112比特是什么?

3DES患有一个称为“中间遇见”(middle-in-the-middle)攻击的问题 。 方法如下:

  1. 为你想破解的给定密钥find一个已知的明文和密文块对。
  2. 计算所有可能的56位密钥在明文块上的第一个encryption步骤(即一个DESencryption操作)。
  3. 将所有得到的64位块存储在一个大的查找表中。
  4. 对于密钥的每个可能剩余的112位部分,在密文上执行另外两个操作(解密,encryption)。
  5. 如果这两个操作的结果与查找表中的任何块匹配,则已find该键。 否则,请尝试下一个112位密钥。

这是一个时间/空间的折衷scheme,允许您将计算的数量从2 168减less到2 112 ,空间成本为2 56 64位块(512 PB)。

现在,出于一些奇怪的原因,所有的安全工具似乎都报告3DES-EDE为112位,但实际上并没有排除这个原因。 3DES-EDE没有112位密钥长度,实际上甚至没有112位有效密钥长度,除非你指定你的攻击者拥有512PiB快闪存储器以及大量的DES破解ASIC。 报告为112位的做法似乎已经开始使用“sslscan”工具,并从那以后被各种其他工具复制,导致各种各样的混淆和误解(我甚至看到这在安全考试中被错误地标记!)

这并不是说你不应该禁用3DES – 这是一个旧的algorithm,现在有问题,所以它可能值得离开它。 这只是值得知道为什么。

如果您想这样做,请将DESedeDES添加到禁用的algorithm列表中。 这些名称是在encryption提供商文档中定义的,以防止您想禁用其他名称。