我曾是调查使用 ecryptfs 加密我计算机中的单个目录,但我注意到的一件事是,它泄漏了对较低加密数据文件中未加密文件的时间戳操作,如也提到的:完全隐藏主文件夹 - ecryptfs 是正确的选择吗?这可以极大地帮助攻击者识别文件。
有没有办法隐藏这些时间戳,例如为每个数据文件使用固定时间戳?我知道文件大小也可以帮助攻击者,但我可以忍受(嗯或者我可以吗?攻击者可以从加密文件的未加密版本中唯一地确定加密文件的确切大小吗?对于我猜的另一个问题)。
您可以使用以下命令重现此内容:
export ECRYPTFS_DIR="$HOME/ecryptfs"
export ECRYPTFS_DATA_DIR="$HOME/.ecryptfs-data"
sudo mount -t ecryptfs \
-o key=passphrase,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_passthrough=no,ecryptfs_enable_filename_crypto=yes \
"$ECRYPTFS_DATA_DIR" \
"$ECRYPTFS_DIR"
echo AAAA > ~/ecryptfs/aaaa
echo BBBB > ~/ecryptfs/bbbb
dd if=/dev/zero bs=1k count=1k > ~/ecryptfs/zzzz
sudo umount "$ECRYPTFS_DIR"
ls -l "$ECRYPTFS_DATA_DIR"
这将显示这些文件的正确时间戳。
在 Ubuntu 20.04、Linux 内核 5.4 上测试。
答案1
不,您无法隐藏时间戳。如果您想隐藏时间戳和文件大小等元数据(它们比时间戳更有可能侵犯隐私),则需要全磁盘(或整个分区)加密。
可能有一种方法可以强制 mtime(内容修改时间)不同(实际上,您可以使用 手动执行此操作touch
),但是没有办法隐藏ctime(索引节点更改时间)。 ctime 是文件最后一次以某种方式修改的时间。