攻击者获取私钥文件的方式主要有两种:
- 通过破坏客户端计算机,在这种情况下,攻击者通常也可以获得密码。
- 通过破坏客户端计算机的备份,或窃取该计算机。
如果您将私钥身份验证与密码身份验证进行比较,则只有第二种情况是相关的。在第二种情况下,私钥文件上的强密码确实是安全所必需的。
您可以通过从备份中排除私钥文件来降低风险,但听起来您对客户端计算机几乎没有控制权,并且总是有可能被盗。您还可以通过一种快速停用密钥的方法来降低风险。如果除了 SSH 密钥之外,渗透您的网络还需要 VPN 连接,这会增加在造成任何损害之前停用密钥的时间窗口。
请注意,密码也不是灵丹妙药。SSH 客户端往往使密码验证难以自动化,但足够恼火的用户无论如何都会将密码写入纯文本文件中,甚至可能在某个脚本或配置文件中公开它。使用私钥文件的优点是机密信息集中在一个文件中,用户不会倾向于复制。
另一个对私钥有利的考虑因素是,从社会的角度来看,它们往往更容易撤销。告诉用户他们必须更改密码永远不会受到赞赏,而且您无法确保他们不会从 更改Password123为Password456. (除非您强制输入密码,在这种情况下,您知道他们已经将密码写在某处。)
此外,如果 VPN 与 SSH 具有相同的密码,那么对于大多数意图而言,SSH 不会执行任何额外的身份验证。因此,带有密钥身份验证的 SSH 在这种情况下代表了额外的安全层(无论密钥是否受到良好保护),而具有相同密码的 SSH 则不然。如果另一种方法是让密码让你通过后门和前门,那么让后门受到不同机制的保护是一个加分项。