【问题标题】:How does the RSA private key passphrase work under the hood?RSA 私钥密码短语如何在幕后工作?
【发布时间】:2009-11-21 04:02:00
【问题描述】:

可能会为 RSA 私钥分配一个“密码短语”,据我了解,该密码旨在提供一些辅助安全性,以防有人盗用私钥文件。

密码短语安全层是如何实现的?

【问题讨论】:

  • RSA 本身不做这样的事情。听起来您在谈论一些使用 RSA 的特定程序——在这种情况下,如果您告诉我们您在谈论什么程序(例如 PGP 或 GPG),将会非常有帮助。
  • 有趣 - 主要是我对在 unix-y 系统上运行“ssh-keygen -t rsa”请求的密码感到好奇。
  • 这个问题似乎离题了,因为它与编程无关。请参阅帮助中心的What topics can I ask about here。也许Information Security Stack Exchange 会是一个更好的提问地点。

标签: security encryption rsa


【解决方案1】:

ssh-keygen 使用 OpenSSL 生成 RSA 密钥并以 PEM 格式存储。您正在谈论的加密特定于 PEM。如果您查看您的密钥文件,

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,5B01E932988DC66B

EPESt4ZVIrxnQXxxWWVa7cCR+vgNZ/4vTu4mdq6pjaW7jMZoB8HV+mA745mQkQw7
i+YtdVs/JqOeyGiw/3McxYYKZTlhyh7MvfIr1n8ZdZmcjQz+oFqMxChFU3r8BGgA

“DEK-Info”标头包含解密密钥所需的所有信息,只要您知道密码。 “DES-EDE3-CBC”表示三重 DES(在 EDE 模式下)。 CBC是链接模式。十六进制数是CBC所需的初始向量。

PEM 是一种非常古老的格式,因此它只支持 DES/TripleDES。 AES 和 Blowfish 是后来添加的,但并非所有实现都支持。我的 ssh (OpenSSH 5.2) 只支持 DES 和 TripleDES。

【讨论】:

  • 这个答案似乎缺少关于如何将密码转换为密码接受的解密密钥。
  • 整数 4 在 Proc-Type 中代表什么?
【解决方案2】:

密码只是用于加密包含 RSA 密钥的文件的密钥,使用对称密码(通常是 DES 或 3DES)。为了使用密钥进行公钥加密,您首先需要使用解密密钥对其文件进行解密。 ssh 通过询问您的密码来自动执行此操作。

如果有人持有密钥文件,除非他们知道用于加密文件的密码短语,否则他们将无法使用它。

【讨论】:

  • 非常感谢您的回复!几个后续问题:密码短语是 RSA 标准的一部分还是其他东西(根据上面的评论者)? ssh-keygen 程序是使用 DES 还是 3DES/我怎么知道?什么年级?为什么不使用 AES?
【解决方案3】:

存储在通用文件系统(与防篡改的专用硬件令牌相反)上的私钥如果没有受到保护,很容易被盗。文件系统权限可能看起来就足够了,但它们通常可以被绕过,尤其是在攻击者可以物理访问机器的情况下。

使用良好密码作为密钥的强对称密码有助于防止这种情况发生。一个好的 RSA 私钥太长而无法记住(无论如何对我来说),但更小的对称密钥可以提供相同级别的安全性。存储在大脑中的相对较短的对称密钥用于保护存储在磁盘上的大型私钥。

【讨论】:

  • 绝对有道理——关于它是如何实现的更多细节? (哪个完全对称,是否是所有 impls 的标准等?)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-02
  • 2023-03-10
  • 1970-01-01
  • 2011-03-20
  • 2017-12-13
  • 1970-01-01
相关资源
最近更新 更多