![将未加密的密钥文件存储在易失性位置是否安全?](https://linux22.com/image/1324110/%E5%B0%86%E6%9C%AA%E5%8A%A0%E5%AF%86%E7%9A%84%E5%AF%86%E9%92%A5%E6%96%87%E4%BB%B6%E5%AD%98%E5%82%A8%E5%9C%A8%E6%98%93%E5%A4%B1%E6%80%A7%E4%BD%8D%E7%BD%AE%E6%98%AF%E5%90%A6%E5%AE%89%E5%85%A8%EF%BC%9F.png)
我有多个硬盘,应该使用相同的密钥文件或密码进行加密。以下是我计划的方法:我使用 LUKS/cryptsetup 加密每个硬盘并选择一个密钥文件。此密钥文件应使用密码进行加密(使用 gpg)。
出现的问题是:我应该将未加密的密钥文件存储在哪里以便 LUKS 可以使用它?
好吧,因为任何加密软件都会将其密钥存储在 RAM 中,所以我想:为什么不将我的密钥文件存储在 ramdisk 上(笔记:我不想使用,tempfs
因为它可以交换)。这样,每当我想要挂载加密驱动器时,我都会将密钥文件加载到 RAM 中(使用 ramdisk),然后使用该密钥文件挂载所有驱动器。
在任何系统关闭/断电时,只会产生与实际密钥相同的风险:通常的 RAM 攻击。
所以我的问题是:您是否认为这种情况涉及任何安全问题?
笔记:
我知道对所有内容使用相同密码存在风险,但我想在这里权衡安全性和功能性。此外,以这种方式解密的所有驱动器都将是 LVM 驱动器,无论如何都会合并到一个大分区中,因此如果一个驱动器被解密,我不能依赖存储在其他驱动器上的数据是安全的(因为这可能是可推断的)。
此外,该装置应特别不是在启动时自动挂载,因为这是一台无头机器。它将在大多数时间运行,但挂载应该只在我请求时发生。
我知道理论上所涉及的大多数风险,并且我认为我在我的场景中尽可能地采取了预防措施,所以这个问题实际上更多的是一个技术问题而不是理论问题,尽管只要你考虑到我的笔记,欢迎对这种方法提出评论/批评。
答案1
如果您确保 ramfs 挂载点具有适当的访问规则,我不会对您的方法产生任何安全担忧。
物理访问 RAM 始终是一个问题,而且似乎没有解决方案。
答案2
设置目标机器并将需要访问密钥的所有机器列入白名单。然后将目标机器锁在房间里(最好是保险库,但让我们实际一点),这样物理访问就会受到限制。只要遵守所有其他良好做法(防火墙路由器、强密码等),这应该可以消除 90% 的威胁