为什么使用 SSH 密钥比使用密码更安全?

信息安全 SSH
2021-08-29 05:02:18

如果人们使用密码登录 UNIX 服务器,则可能会强制使密码过期,然后他们会更改密码。

如果人们使用 ssh 密钥并且没有密码,也没有密码过期,那么没有什么会迫使他们定期更改他们的 SSH 密钥。

问题:哪种解决方案更安全?为什么强化服务器的“howto”总是建议使用 ssh 密钥,而不是密码?

更新:不计算暴力弱点 - 关于密码,因为如果没有类似 Fail2ban 的解决方案,它们可能会被猜到。

3个回答

密钥和密码都有其优点和缺点。“howtos”等建议使用 SSH 密钥的原因是,他们发现自己的缺点比密码的缺点更令人担忧。

SSH 密钥既长又复杂,远远超过任何密码。但是正如您所说,它们没有到期日,并且它们位于可以被盗的磁盘上。另一方面,它们不会被传输到密码需要的远程系统(密钥转发、natch 除外)。

可以预见,密码通常不可避免地很弱。虽然可以使用强密码,但一次又一次地表明人们会使用弱密码并且密码习惯很差......简短,简单,基于单词的简单模式(“p@ssw0rd!”),写他们下来,在多个网站上使用它们,基于他们的电话号码,他们孩子的生日,他们自己的名字。您指出密钥不会过期,但为什么密码会过期?确保在替换密码之前,暴力攻击不太可能破解密码。不是影响键的问题。

而且,除了错误的密码,即使是“好”的密码在适当的条件下也容易受到暴力破解(在线或离线)。它们必须被传输到其他系统,或者用户可能被错误发送的任何其他地方。

证据的平衡强烈表明密码更弱而密钥更强。

使用密码,然后将密码发送到服务器,因此密码的安全性与服务器对用于验证密码的任何内容(例如/etc/shadow文件)的保护程度有关。当您使用 SSH 密钥时,您的私钥将保留在客户端,并且不会向服务器发送任何秘密值。即使服务器处于敌对控制之下,或者您以某种方式被诱导连接到假服务器,那么您的 SSH 密钥仍然是安全的。伪造的服务器没有获得足够的关于您的密钥的信息来恢复它或做一些中间人。从这个意义上说,SSH 密钥比密码更健壮,可以抵御服务器端的入侵。

另一方面,SSH 密钥必须存储在某处计算机上,这可能是一个漏洞。您必须使用密码保护您的私钥;否则,被盗的笔记本电脑会变成帐户泄露。相反,密码只能存储在您的大脑中这(据说)使其不太可能泄漏。

因此,可以说 SSH 密钥比密码“更安全”,但也可以提出相反的观点。这取决于上下文。大多数 HowTo 会采取密钥更好的立场,因为碰巧的是,平均而言,人类用户的密码记录很糟糕。用户选择弱密码,并重用它们(密码重用非常非常糟糕)。

如果我在您的更新中理解,如果您可以在密码和密钥中提供相同的熵,那么就其安全性而言,它没有实际意义。您可以使密钥更好,因为它可以提供更好的“用户体验”,因为您不必每次都输入密码。

我想更多的是你原来的观点,我们正在讨论 SSH 密码与 SSH 密钥的可管理性。是的,可以为密码分配策略,允许基本的安全措施(IE 密码过期、密码历史、混合最大密码长度等),但这不会改变人类的习惯,也不会取悦安全成为阻碍的用户生产(组织层面的平衡)。

密钥提供了保持一定程度的熵和可管理性的方法,同时还提供了一种不会妨碍用户的访问方法(一旦设置了密钥对,您就可以在没有密码提示的情况下进行身份验证,直到它被撤销。)

最重要的是,要知道密钥可以受密码保护并提供另一层。