RSA私钥密码短语如何在后台运行?


70

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

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


4
RSA本身没有这样做。听起来您正在谈论使用RSA的某个特定程序-在这种情况下,如果您要告诉我们您正在谈论的程序(例如PGP或GPG),则将非常有帮助。
杰里·科芬,

1
有趣-大多数情况下,我对在unix-y系统上运行“ ssh-keygen -t rsa”请求的密码短语感到好奇。
qfinder

这个问题似乎与主题无关,因为它与编程无关。请在帮助中心中查看我可以询问哪些主题。也许信息安全堆栈交换会是一个更好的地方。
jww

Answers:


58

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
关于如何将密码转换为密码接受的解密密钥,似乎缺少此答案。
Pawel Veselov

1
整数4在Proc-Type中代表什么?
阿米特·维尔玛

37

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

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


1
非常感谢您的答复!几个后续问题:密码短语是RSA标准的一部分还是其他内容(根据上面的评论者)?ssh-keygen程序使用DES还是3DES?什么年级 为什么不使用AES?
qfinder

11

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

使用好的密码进行加密的强对称密码有助于防止这种情况。好的RSA私钥太长了,难以记住(无论如何,对我而言),但是更小的对称密钥可以提供相同级别的安全性。存储在人脑中的相对较短的对称密钥用于保护存储在磁盘上的大型私有密钥。


绝对有道理-有关如何实施的更多详细信息?(究竟是对称的,是否对所有impls都是标准的,等等?)
qfinder
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.