如果文件被暴露,ssh 密钥文件的安全性会在几个小时内被破坏吗?

信息安全 密码 SSH 蛮力
2021-08-23 08:52:45

在此链接上,有人声称如果 RSA 密钥具有强大的密码短语,则如果攻击者拥有私钥,则可能会在几个小时内破坏安全性。

使这成为可能的 RSA 密钥的安全性是否存在弱点?似乎强密码无法在几个小时内破解,那么为什么 RSA 密钥可以在给定私钥的情况下在几个小时内破解?

仅出于比较的目的,强密码可能合理地是大小写和数字以及 15 个字符,因此几乎 8*10^26 的空间和不合理的快速计算机可能每秒尝试 10^9 次猜测,如果你每秒有 10^12 个集群。尝试所有这些需要 8*10^14 秒​​或 2500 万年。

4个回答

不,如果您选择强密码,您的 SSH 密钥不会在几个小时内被破解。我读了你引用的网页,只是写得不好,给人留下了错误的印象。那里的陈述措辞拙劣。该网站声称:

SSH 密钥密码短语是一种次要的安全形式,当您的密钥被盗时,它可以给您一点时间。如果您的 RSA 密钥具有强密码,攻击者可能需要几个小时才能通过蛮力猜测。这段额外的时间应该足以登录您拥有帐户的任何计算机,从 .ssh/authorized_keys 文件中删除旧密钥,然后添加新密钥。

这是用一种非常令人困惑的方式表达的。我怀疑他们的意思是,一个好的密码至少需要几个小时才能破解。事实上,一个强密码短语的破解时间要比破解的时间长得多。可能几天或几年,或更长时间,这取决于你的密码有多强。

由于措辞不佳,此网页可能会留下这样的印象,即即使您选择了强密码,攻击者最多仍可以在几个小时内恢复您的 SSH 密钥。这是不正确的。如果你有一个强密码,攻击者需要很长时间才能恢复你的 SSH 私钥。

有权编辑网页的人应该修复它以纠正令人困惑的措辞。

至少在我的结果中man ssh-keygen

~/.ssh/identity

包含用户的协议版本 1 RSA 身份验证身份。除用户外,任何人都不应读取此文件。生成密钥时可以指定密码;该密码将用于使用 128 位 AES加密此文件的私有部分

因此,关于被盗密钥的破解时间问题是以下因素中较小的一个因素:

  • 是时候破解 AES 本身了
  • 是时候破解您选择的 AES 加密密码了。

第二个项目符号还包括缩减代码以及将您的字符串转换为有效的 128 位密钥所需的多轮。AES 本身仍然被认为是一种很好的对称算法。因此,如果您有一个好的密码短语,您将安全超过“几个小时”。

您提供的链接没有说明 RSA密钥的强度或攻击者拥有您的私钥它指的是完全不同的东西:用于控制对RSA 私钥的访问的密码强度:

SSH 密钥密码短语是一种次要的安全形式,当您的密钥被盗时,它可以给您一点时间。如果您的 RSA 密钥具有强密码,攻击者可能需要几个小时才能通过 brute force 进行猜测这段额外的时间应该足以登录您拥有帐户的任何计算机,从 .ssh/authorized_keys 文件中删除旧密钥,然后添加新密钥。

基本上 - 如果攻击者可以访问您存储密钥的计算机,他们可以尝试暴力破解您的密码(而不是密钥)。如果您选择了一个弱密码,那么它可以被猜到。猜测密码将允许攻击者拥有您的 RSA 私钥。最后,如果他们拥有您的私钥,那么他们就可以读取专为您加密的消息。

编辑添加:但上面的引用存在严重错误,它说强密码短语可能需要攻击者几个小时才能通过蛮力猜测。正如其他人指出的那样,一个真正强大的密码应该需要很多年才能猜到。我认为他们试图说明的是密码是最薄弱的环节。如果你选择一个穷人,它很容易受到损害。但是,如果您的密码是 65 个随机字符,则无法按照他们的描述进行猜测。

是的,SSH 密钥文件的安全性被破坏了。

https://latacora.micro.blog/the-default-openssh/

OpenSSH 默认使用 MD5 制作 AES 密钥来保护 SSH 密钥。即使它确实使用盐 MD5 作为密钥派生函数 (KDF) 也不够好。

另外,对上述链接的讨论: https ://news.ycombinator.com/item?id=17682946