Linux 是否有加密的只写文件系统?

Linux 是否有加密的只写文件系统?

我正在寻找一种可以以只写模式挂载的 Linux 加密文件系统,我的意思是您应该能够在不提供密码的情况下挂载它,但仍然可以写入/附加文件,但您既不能读取您已写入的文件,也不能读取文件系统上已有的文件。只有通过密码挂载文件系统时才允许访问文件。这样做的目的是写入日志文件或类似数据,这些数据只能写入,但不能修改,而不会暴露文件本身。文件权限在这里没有帮助,因为我希望即使系统完全被攻陷,数据也无法访问。

Linux 上存在这样的功能吗?如果没有,创建加密日志文件的最佳替代方案是什么?

我当前的解决方法是简单地通过管道传输数据gpg --encrypt,这种方法虽然有效,但非常麻烦,因为您无法轻松访问整个文件系统,因此您必须手动通过管道传输每个文件gpg --decrypt

答案1

...我希望即使系统完全被攻破,数据也无法访问。

这是不可能的。如果系统完全被攻破,那么“根据定义”系统上的所有内容都可以被访问 - 包括加密密钥。

如果加密/解密数据的密钥与加密数据位于同一系统,则加密在系统运行时无法防止系统被入侵。例如,如果您安装了 LUKS 文件系统,并且有人获得了系统的 root 访问权限,则可以从 RAM 中提取密钥 - 因为它们必须位于 RAM 中才能解密文件系统。在您的情况下,如果您每次加密文件时都输入密码,那么您就受到保护(假设您的系统上没有键盘记录器),否则,您处于相同的情况,入侵您系统的人可以找到该密钥并撤消所有加密。

您需要将要保护的数据发送到系统外部 + 如果您绝对不想让 root 访问它,请不要将其写入该系统上的中间介质。rsyslog明确支持与日志记录相关的功能,并且您可以使用 OpenVPN、 或类似方式加密源和接收器之间的连接stunnel。我相信还有其他“单向”传输选项。

答案2

在我看来,你走错了方向。如果你想要一个可以写入但不能读取的文件,那么文件权限就是你要找的。


$ touch log
$ chmod 222 log
$ echo test > log
$ cat log
cat: log: Permission denied

当然,该文件可以位于加密文件系统上。

答案3

完全有可能。我实现了类似的东西,但不是在文件系统级别。

对于任何感兴趣的人,这里都说明了方法。

  1. 公钥/私钥对是在另一台安全计算机上生成的。
  2. 仅将公钥复制到可能被盗的计算机。
  3. 写入时只需使用公钥加密。
  4. 如果被盗,私钥就不在设备上。
  5. 当您准备读回时,复制数据离开将设备恢复到安全状态,然后使用私钥在那里解密。

警告:如果您在敏感设备上解密并删除私钥,则存在被恢复的风险。因此,最好在其他设备上解密,以确保私钥位永远不会出现在设备上。

如果设备有数千个随机命名的公钥,并且您告诉它在启动时使用哪个公钥,那么您可以获得加分。假设所有保存的数据都没有保存与之关联的密钥,您现在可以合理地拒绝解密能力,只需承认您或其他人可能选择了错误的公钥即可。

我在跑车的行车记录仪上使用了这样的系统。我希望它能在我被撞或被抢劫时保护我。但如果我开的是跑车,并且有录像记录,万一我出车祸,它不会给我带来任何麻烦。

基本上,这使得证人只是我的朋友,而不是我的敌人。

  1. 你打我或者抢我。我解密了正确的密钥,并拿出视频证据。

  2. 我撞到什么东西,警察拿走了相机,我会假装无法解密。没有钥匙,等等。目击者保持沉默。

这样,有人就可以带着相机进入恶劣的环境中,拍摄照片证据,而且如果被捕获,敌人也无法确定照片的内容。

享受这些知识:)

答案4

umask 0477 && touch file && echo test > file && cat file

也很有用。在当前进程中创建的任何文件都将具有 0200 模式。

相关内容