我必须生成带有.key
扩展名的东西。指令只是说“安全存储“。 如何???
我希望在这里得到的答案是,例如,它应该是一个文件夹吗?文件夹的权限是什么?磁盘上是否有任何常规名称和/或位置可以保存它?或者越随机越好?文件本身的权限应该是什么(400
我猜?)...
我的问题不仅仅是存储 SSH 密钥因为它更通用。实际上,我查看了我的.ssh
文件夹。我看到它是600
,将所有密钥存储在那里是否合理?但我刚刚读到浏览器可以从该文件夹中读取...
此外,我不需要对该密钥进行密码加密(就我的特定情况而言,但我认为知道选项 b)也不错。)
这是一个非常基本的问题,但我确实花了一些时间在互联网上搜索,但大多数答案都提到了一些特殊情况,即密钥存储在代码中或需要第三方加密等。我正在寻找一种基本的最佳实践指南。
答案1
什么算作“足够安全”取决于您的威胁模型——您在保护什么、攻击者是谁以及您的暴露程度。
如果您在独立的机器上保管着您的高分列表的密钥并且不允许其他人访问,那么全世界可读的文件可能“足够安全”。
如果您在学生计算服务器上保护服务器场的 SSH 密钥,那么您可能希望将其加密保存在可移动设备上,该设备只在需要时短暂连接。
大多数用例介于两者之间(有些则介于两者之外,特别是在军事环境中)。
答案2
购买 HSM、Yubikey 或智能卡。这是最安全的存储方式,因为即使是恶意应用程序也无法读取私钥材料。存储在文件系统上的所有内容(即使具有 600 个权限)都可以被恶意用户读取。root
如果它在文件系统上加密,则需要解密才能使用,然后再次将其存储在内存中,恶意用户可以再次访问它root
。