security - 是否可以公开存储 GPG 的 4096 位 RSA SSH 私钥?

标签 security encryption ssh ssh-keys gnupg

考虑您有一个要备份的 SSH key 对的情况。

选项 A:将 id_rsa 文件以 QR 码形式存储在一张纸上的保险箱中。

选择 B:使用 GPG(对称)加密 id_rsa 文件,使用 31 个字符的随机混合大小写字母数字密码,将密码以二维码形式放在一张纸上的保险箱中,然后将 id_rsa.gpg 文件放在显眼处任何人都可以看到。 (这样做的好处是 QR 码需要存储的字节少得多,并且可以打印得更紧凑)。用于选项 B 的加密命令将是:

gpg -c --force-mdc --s2k-mode 3 --s2k-count 65011712 --output id_rsa.gpg id_rsa

选择 B 是可接受的做法吗?如果不是,将密码更改为超过 31 个字符是否可以接受?如果可以接受,有没有办法描述选择 B 的风险有多大?假设 SSH key 本身有一个空密码。谢谢!

(编辑:正如评论中指出的那样,公开存储 id_rsa.gpg 文件的愿望是确保可以将大量副本存储在很多地方,这样我们就不用担心丢失它的副本并且不要'不用担心这些存储位置中的每一个都是安全的)

(编辑 2:我还想到,如果选项 B 令人满意,那么选项 B 将是存储 SSH key 对和常规非对称 GPG key 对的好方法)。

最佳答案

如果使用足够新版本的 OpenSSH (>=6.5),则可以使用新的私钥格式生成私钥(使用 bcrypt 作为基于密码的 key 派生函数)。这将减轻对暴力破解密码的担忧,并使使用受密码保护的 key 成为选项 B 的等效(且更简单)选项。

请注意,这只影响私钥,这意味着公钥仍然可以在旧的 SSH 服务器版本中使用。

有关更多详细信息,请参见此处:
http://www.tedunangst.com/flak/post/new-openssh-key-format-and-bcrypt-pbkdf

如果担心备份 key 对以保证可用性,您只需要担心备份私钥,因为公钥始终可以从中派生。

该方法是否可接受取决于您想要在安全性与可用性方面做出何种权衡。
例如如果在使用 key 的任何系统上都有一个能够捕获密码短语的键盘记录器,那么拥有 30 多个字符的密码短语/gpg 保护的 key 将无济于事。通常建议将私钥仅存储在生成它们的位置。
更安全的方法是使用生成和使用私钥的智能卡/usb token 。

关于security - 是否可以公开存储 GPG 的 4096 位 RSA SSH 私钥?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35286841/

相关文章:

iphone - iOS 如何加密存储持久数据?

java - 同一台机器上的应用程序之间最安全的通信方法

security - symfony2 安全角色

sql - 执行此操作之前,请在数据库中创建主 key 或在 session 中打开主 key

php openssl - RSA_padding_check_PKCS1_type_2 和 RSA_EAY_PRIVATE_DECRYPT :padding check failed:rsa_eay. c:602:

bash - bash脚本问题将ssh登录发送到Mattermost

angular - SPA 使用的经过身份验证的 Rest API : how to get CSRF token for login and registration forms?

java - 如何在 EJB 3 中动态设置 @RolesAllowed

linux - 通过 SSH 写入多个远程终端

ssh - 使用ssh在远程计算机上运行命令