如何在 Linux 中不创建未加密文件的情况下读取 openssl aes-256-cbc 加密文件?

KNe*_*jad 6 encryption openssl

我有一个加密文件并解密它我使用命令:

 openssl aes-256-cbc -d -in encrypted_file -out unencrypted_file
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时,会创建一个未加密的文件,完成后我必须将其删除。这意味着如果有人拿到我的电脑并使用某种数据恢复工具,他们可以获得未加密的文件。有没有办法在不创建另一个文件的情况下访问加密文件中的数据?

Xen*_*050 4

我假设你正在使用 Linux,并且有一些想法......

\n\n

解压至内存

\n\n

一种简单的方法是仍然创建解密的文件,但不将其写入磁盘。将其放入 ram 中,例如使用ramfstmpfs文件系统。不过,问题可能是:

\n\n
    \n
  • 该文件可能不适合内存
  • \n
  • ramfs 的大小可能会增加,直到所有 ram 都被使用(随后可能会崩溃)
  • \n
  • tmpfs可能会写入您的磁盘交换(另请参阅该链接以了解 tmpfs 和 ramfs 之间的区别)。
  • \n
\n\n

您的/tmp文件夹或其他文件夹(如/run/run/shm/run/user)可能已作为 tmpfs 挂载,您可以使用 进行检查mount|grep tmpfs

\n\n
\n\n

要创建一个新的tmpfs,你可以这样做(如果你愿意,可以选择以字节为单位的大小,类似于-o size=16384,我认为它默认为 ram 的一半):

\n\n
sudo mount -v -t tmpfs  tmpfs /mountpoint\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n\n

要使用旧的ramfs,它不会被写入交换,但没有大小限制,这应该可以工作:

\n\n
sudo mount -v -t ramfs  ramfs /mountpoint\n
Run Code Online (Sandbox Code Playgroud)\n\n

尽管上面的链接警告:

\n\n
\n

ramfs 文件系统不能像基于磁盘的文件系统那样限制大小,后者受其\xe2\x80\x99s 容量的限制。ramfs 将继续使用内存存储,直到系统耗尽 RAM 并可能崩溃或变得无响应

\n
\n\n

另外,这里的内核文档还警告并说:

\n\n
\n

ramfs 的一个缺点是您可以继续向其中写入数据,直到填满所有内存,而虚拟机无法释放它,因为虚拟机认为文件应该写入后备存储(而不是交换空间) ,但 ramfs 没有任何后备存储。因此,只有 root(或受信任的用户)才被允许对 ramfs 挂载进行写访问。

\n\n

创建了名为tmpfs的ramfs衍生产品,以增加大小限制以及将数据写入交换空间的能力。可以允许普通用户对 tmpfs 挂载进行写入访问。有关更多信息,请参阅 Documentation/filesystems/tmpfs.txt。

\n
\n\n

提取到加密的设备或文件夹

\n\n

如果上述 RAM 问题太多,您可以使用另一个程序再次加密磁盘上的文件,但这样就可以“即时”读取和使用未加密的文件(例如,解密版本看起来和行为就像常规文件,但在磁盘上保持加密状态)。您可以使用 dm -crypt/LUKS/truecrypt 和 cryptsetup创建加密分区或容器文件,或者使用eCryptFSEncFS创建加密文件夹,然后在其中解密文件。

\n\n
    \n
  • 例如,要使用 ext4 创建 1GB LUKS 容器文件并安装到文件夹mountpoint-folder,请执行以下操作:

    \n\n
    head -c 1G /dev/zero > 1G\nsudo cryptsetup -v luksFormat 1G\nsudo cryptsetup -v luksOpen 1G container\nsudo mkfs.ext4 -v /dev/mapper/container\nsudo mount -v /dev/mapper/container <mountpoint-folder>\n
    Run Code Online (Sandbox Code Playgroud)\n\n

    然后将文件解密到mountpont-folder可读的位置,即使它再次加密写入磁盘。

  • \n
  • eCryptFS 已经安装在 Linux Mint、Ubuntu 和许多其他发行版中,您可能只需要运行ecryptfs-setup-private然后使用创建的~/Private文件夹即可。

  • \n
  • 可能需要安装 EncFS(类似于),然后在此处或此处apt-get install encfs查看它的手册页,类似的命令应该可以工作。encfs ~/.secret ~/decrypted

    \n\n

    此外,EncFS 有一个巧妙的--reverse功能,“将纯文本数据作为源并按需生成加密数据。这对于创建远程加密备份非常有用,因为您不希望本地文件保持未加密状态。

  • \n
\n

  • 但当然,现在就添加答案。从这个基本搜索仅供参考 https://encrypted.google.com/search?q=tmpfs+may+be+writing+to+swap (2认同)