到目前为止,我的理解是 ecryptfs 使用包装的密码来加密文件。当我使用相同的密钥挂载两对加密/解密目录时,我期望在加密密钥时得到相同的结果。然而,这似乎不是真的:
$ sudo mount -i -t ecryptfs -o ecryptfs_passthrough=n,ecryptfs_enable_filename_crypto=n,ecryptfs_sig=f8ac65b530d4aebc,ecryptfs_key_bytes=32,ecryptfs_cipher=aes,ecryptfs_xattr=y safe1/ open1
$ sudo mount -i -t ecryptfs -o ecryptfs_passthrough=n,ecryptfs_enable_filename_crypto=n,ecryptfs_sig=f8ac65b530d4aebc,ecryptfs_key_bytes=32,ecryptfs_cipher=aes,ecryptfs_xattr=y safe2/ open2
$ echo "Hi" > open1/testfile
$ cp -a open1/testfile open2/testfile
$ md5sum open*/testfile
31ebdfce8b77ac49d7f5506dd1495830 open1/testfile
31ebdfce8b77ac49d7f5506dd1495830 open2/testfile
$ md5sum safe*/testfile
4fe5016ca0b9b283fd05e03ccaee0b14 safe1/testfile
75850506e568f60a77acd96dfb2d2895 safe2/testfile
我认为这与文件内容无关,但与某些元数据有关。因为当我将加密文件从一个空间复制到另一个空间时,我可以解密内容
$ umount open*
$ cp -a safe2/testfile safe1/testfile2
$ sudo mount -i -t ecryptfs -o ecryptfs_passthrough=n,ecryptfs_enable_filename_crypto=n,ecryptfs_sig=f8ac65b530d4aebc,ecryptfs_key_bytes=32,ecryptfs_cipher=aes,ecryptfs_xattr=y safe1/ open1
$ sudo mount -i -t ecryptfs -o ecryptfs_passthrough=n,ecryptfs_enable_filename_crypto=n,ecryptfs_sig=f8ac65b530d4aebc,ecryptfs_key_bytes=32,ecryptfs_cipher=aes,ecryptfs_xattr=y safe2/ open2
$ cat open1/testfile2
Hi
有人能解释这种行为吗?
我正在寻找一种方法,使上面的示例中的加密文件相同。
答案1
加密值的差异是设计使然。每个加密文件都有一个每个文件随机生成会话密钥。