RSA私钥密码短语如何工作?

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

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

ssh-keygen使用OpenSSL生成RSA密钥并以PEM格式存储。 你正在谈论的encryption是特定于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是链接模式。 hex数是CBC所需的初始向量。

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

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

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

存储在通用文件系统(而不是防篡改,专用硬件令牌)上的私钥如果不受保护,很容易被窃取。 文件系统权限可能看起来足够了,但通常可以绕过它们,特别是如果攻击者能够物理访问机器。

一个密码很好的强对称密码有助于防止这种情况发生。 一个好的RSA私钥太长了(对我来说),但是小得多的对称密钥可以提供相同的安全级别。 存储在人脑中的相对较短的对称密钥用于保护存储在磁盘上的大型私钥。