我很难找到有关保护未加密数据的问题的答案。我运行的是 Ubuntu 12.04。虽然我不确定这是否相关,但我还要提到我使用加密的主目录(因此也有加密的交换空间),但不使用全盘加密。我的硬盘驱动器使用 ext4 格式化。
我有一个包含一些应用程序密码的文本文件。我使用 GPG 将此文件加密。每当我想编辑文件中的密码时,我都会使用 GPG 将解密的内容写入磁盘,在我最喜欢的文本编辑器(目前是 Gedit)中编辑文本,让 GPG 重新加密文件,然后再加密rm
未加密的版本。
最近,我意识到,在写入磁盘时,如果未覆盖,则未加密的文本可能会从磁盘本身读取。我意识到shred
对于像 ext4 这样的日志文件系统来说,这实际上不起作用。我读到https://stackoverflow.com/a/12289967可以将未加密的文件写入 tmpfs —— 即直接写入 RAM 或交换空间。我链接到的帖子建议使用 /dev/shm;但是,我的理解是该目录旨在用于共享内存操作,并且已被弃用,取而代之的是 /run/shm。听起来写入 /run 可能是一个更好的主意。
如果我将解密后的文件写入 /run(或者 /dev/shm),会有什么不良后果吗?与直接写入磁盘(就像我一直做的那样)相比,该文件会受到更多的保护吗?出于我甚至不知道的原因,写入这些目录是不是一个坏主意?
我将非常感激您提供的任何建议。谢谢!
答案1
如果我将解密的文件写入 /run(或者,写入 /dev/shm),会产生什么不利后果吗?
- 对于您的用例(文本文件,不能变得太大),不是。
与直接写入磁盘相比(就像我一直做的那样),该文件是否会受到更多的保护?
- 您理解的没错。如果有其他选择,最好避免将敏感数据保存到未加密的非易失性磁性介质中。
出于我甚至不知道的原因,写入这些目录是不是一个坏主意?
- 不。你没问题。只需记住,如果你直接写入这些 tmpfs 挂载点之一,尽职调查会要求你确保在解密文件时正确设置 shell umask ——
gpg
最终可能会创建具有全球可读权限的解密文件。
最后:我不会推荐任何密码管理器,因为我从未尝试过;但是,我确实开发了一个用 Python 编写的全面的 GnuPG/OpenSSL 加密(GUI)前端,您可能会感兴趣。它不会将任何文件保存到磁盘(或 tmpfs),除非您告诉它这样做,它可以解密gpg
加密的文件,显示其内容以供查看和编辑,然后允许您重新加密它们。在 github 上查看。