是否应将 DSA 密钥视为已弃用?

信息安全 dsa
2021-09-05 16:55:43

openssh deprecates dss-keys的要点似乎是:

“鉴于最近发现的漏洞,openssh 弃用了 DSA 密钥。”

这是否意味着我通常应该考虑弃用 DSA 密钥?链接到的“升级公告”提供的信息很少,我似乎找不到关于“最近发现的漏洞”的任何其他信息。

2个回答

OpenSSH 的决定似乎是出于某种源于他们自己的代码库的混乱。请参阅此答案进行分析。

在 SSH 中,DSA 密钥已被弃用,因为决定支持什么和不支持什么的人(OpenSSH 开发人员)是这么说的。

在更一般的基础上,DSA 上没有新发现的漏洞。存在与密钥大小相关的问题,这些问题已为人所知并不断为人所知;基本上,1024 位模数的 DSA 密钥并不比 1024 位模数的 RSA 密钥强很多,因此如果要避免后者,则要避免前者。当前版本的 DSA 标准允许模数大小为 1024、2048 或 3072 位。如果您使用 DSA,那么您需要将模数设置为 2048 位(如果您想花费更多 CPU,则为 3072 位)。有关基于密钥长度估计强度的大量数据,请参阅此站点。

然而,人们可能会注意到,几乎没有理由更喜欢 DSA 而不是其椭圆曲线版本 ECDSA:ECDSA 公钥更短(这节省了网络带宽),而 ECDSA 版本的计算密集度更低(这节省了 CPU)。虽然这并不意味着“不推荐使用 DSA”,但这仍然意味着 ECDSA 更可取,除非由于与遗留系统的互操作性问题而无法使用它。请注意,相同类型的互操作性问题可能会阻止您使用 2048 位 DSA 模数。

这是 DSA 的实施问题,正如Thomas Pornin 2 年前在通过 OpenSSH 中的 DSA 密钥禁用身份验证中所说的那样?

DSA 或 ECDSA 的实施很糟糕;然而,RSA 的实现也很糟糕,在某些情况下,它会导致 RSA 密钥泄漏(例如Bleichenbacher 的攻击)。

这是Debian 的 openssl 包中的一个实现问题,它间接影响 OpenSSH。

来自CVE-2008-0166

基于 Debian 的操作系统上的 OpenSSL 0.9.8c-1 到 0.9.8g-9 之前的版本使用随机数生成器生成可预测的数字,这使得远程攻击者更容易对加密密钥进行暴力猜测攻击。

进一步阅读:

DSA-1571-1 openssl -- 可预测的随机数生成器