我使用 PuTTYgen 生成了两个密钥用于 SSH 通信,同时我添加了一个密码来保护这两个文件。这个密码有效,因为在 pageant 中打开 .ppk 时需要输入该密码。
但是,我注意到我可以在记事本中打开该文件并看到以下内容:
PuTTY-User-Key-File-2: ssh-rsa
Encryption: aes256-cbc
Comment: rsa-key-20160116
Public-Lines: 6
AAAAB3NzaC1yc2EAAAABJQAAAQEAsoVC582ZMBopBMtOcyKUBh5vlKlrC+3KeEQD
EYXx <censored for protection>
Private-MAC: 8e4fc1c400 <censored for protection>
不管什么内容是可见的,这个密钥是否仍然完全安全?不幸的是,我对公钥/私钥安全还很陌生...感谢您的帮助。
答案1
仅仅因为您可以在文本编辑器中打开它并且它看起来不像二进制文件,并不意味着它更安全或更不安全。例如,以 AAAA... 开头的块是 Base64 编码的二进制文件。因此,其中有二进制块,它们只是以一种允许可能不理解二进制文件的程序处理它们的方式进行编码。(我们仍然有这样的程序,但这主要是对过去时代的一种回归,当时您必须小心谨慎地尝试通过网络发送什么样的内容,因为有些系统会破坏它们。)
Base64 编码部分可能是密码加密的部分。无论他们使用什么技术进行加密,它都是安全的。
答案2
使用公钥身份验证时,身份验证实体拥有一个公钥和一个私钥。每个密钥都是一个具有特殊数学属性的大数字。私钥保存在您登录的计算机上,而公钥存储在您要登录的所有计算机上的 .ssh/authorized_keys 文件中。当您登录计算机时,SSH 服务器使用公钥“锁定”消息,只有您的私钥才能“解锁” - 这意味着即使是最足智多谋的攻击者也无法窥探或干扰您的会话。作为额外的安全措施,大多数 SSH 程序以密码保护的格式存储私钥,这样如果您的计算机被盗或被入侵,您应该有足够的时间在他们破解密码并开始使用您的密钥之前禁用旧的公钥。维基百科对密钥的工作原理有更详细的解释。