可以为RSA私钥分配一个“密码短语” - 据我所知 - 它旨在提供一些辅助安全性,以防有人使用私钥文件。
如何实施密码安全层?
答案 0 :(得分:47)
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。
答案 1 :(得分:30)
密码只是用于加密包含RSA密钥的文件的密钥,使用对称密码(通常为DES或3DES)。要使用密钥进行公钥加密,首先需要使用解密密钥解密其文件。 ssh会通过询问您的密码来自动执行此操作。
如果某人掌握了密钥的文件,除非他们知道用于加密文件的密码,否则他们将无法使用它。
答案 2 :(得分:9)
存储在通用文件系统上的私钥(与防篡改,专用硬件令牌相对)如果不受保护,可能很容易被盗。文件系统权限似乎已足够,但通常可以绕过它们,尤其是在攻击者可以物理访问计算机的情况下。
一个强大的对称密码,用一个好的密码键入,有助于防止这种情况发生。一个好的RSA私钥太长了,无法记住(对我而言),但是更小的对称密钥可以提供相同级别的安全性。存储在大脑中的相对较短的对称密钥用于保护存储在磁盘上的大型私钥。