当我开始使用 *nix 服务器时,openssh 服务器附带 dsa 和 rsa 主机密钥,openssh 客户端更喜欢 rsa 密钥。如今,openssh 服务器拥有 dsa、rsa 以及 ecdsa 主机密钥,openssh 客户端更喜欢 ecdsa 主机密钥。
在多大程度上我还需要/想要配置 openssh 来提供 dsa 主机密钥?
最想知道的是有关非 openssh 客户端的实现。
答案1
我想不出任何广泛使用的东西缺乏至少对 RSA 的支持,而且如果你在 Windows 上使用仅支持 DSA 的终端仿真器(例如),你应该停止使用它并下载 putty 或更新它。
该选项是为了提供兼容性。但是,它也增加了您的安全面;攻击者可以通过说服客户端仅声明支持 DSA 来削弱您的加密技术。这种情况相当牵强。如果您担心,那么您应该禁用 DSA。
我能想到的唯一可能导致严重泄露的情况是,如果您的某个用户在一台不受信任或受到泄露的计算机上使用了 DSA 密钥对,而这台计算机始终协商 DSA 并生成重复的临时值来创建 DSA 签名;结果是用户的密钥可能会被泄露,但对于攻击者来说,这似乎不是阻力最小的路径。除非您的系统被国际间谍使用,否则您可能无需担心。请参阅我们姊妹网站上的这个问题:https://security.stackexchange.com/q/29262/12223。
实际上没有直接的方法可以禁用 DSA。 Debian 错误 528046提出并提供了一个补丁(针对选项 PubKeyTypes),并得到了支持,但自 2009 年以来一直未采取行动,也没有任何上游的证据。
答案2
你的答案可能在这里:
https://security.stackexchange.com/questions/5096/rsa-vs-dsa-for-ssh-authentication-keys
由于各种原因,大多数建议都使用 RSA 密钥,因此 DSA 密钥主要是为了向后兼容。DSA 是在 SSH2 发布时引入的,因为当时 RSA 仍处于专利阶段,而 DSA 则更加开源。这种情况后来发生了变化。
由于所有这些原因,DSA 密钥几乎毫无用处。它们可以工作,如果您要求,ssh-keygen 甚至可以生成它们,但必须有人专门要求,这意味着如果您强迫他们使用 RSA,他们可以使用 RSA。据我所知,没有任何东西可以只使用 DSA。DSA 密钥可以禁止。
答案3
从安全角度来说,我能想到的唯一原因是,如果素数分解失败而离散对数不失败,那么 RSA 就会失败而 DSA 就会成功。在这种情况下,你会问如何禁用 RSA。如果离散对数失败,那么 RSA 和 DSA 都会失败。但是,如果你的 ssh 仍然需要 1024 位才能进行 DSA,请立即修复。