Ecryptfs

ecryptfs(可能是隱式)校驗和數據嗎?

  • January 2, 2015

我打算用 ecryptfs 設置一個用於加密的 NAS。我想知道 ecryptfs 是否會告訴我文件是否已被靜默損壞(例如,有故障的硬碟驅動器),或者我是否仍然依賴底層文件系統為我進行數據校驗和?

無論如何,我可能會使用 btrfs 作為底層文件系統來獲得快照功能,但我仍然想知道例如 ext4 + ecryptfs 是否會像普通 btrfs(或 btrfs + ecrypts)那樣提供相同的保證來防止隱藏文件損壞,因為btrfs 的校驗和功能。

上面的答案是不正確的。eCryptFS 的實際實現預設或根本校驗數據。簡單展示:

$ mkdir /tmp/front /tmp/back
$ sudo mount -o key=passphrase:passwd=Test,ecryptfs_hmac,ecryptfs_enable_filename_crypto=no,ecryptfs_passthrough=no,ecryptfs_unlink_sigs,ecryptfs_key_bytes=16,ecryptfs_cipher=aes -t ecryptfs /tmp/back/ /tmp/front/
$ echo HelloWorld > /tmp/front/HelloWorld.txt
$ cat /tmp/front/HelloWorld.txt
HelloWorld
$ sudo umount /tmp/front
$ printf "deadbeaf" | dd  of=/tmp/back/HelloWorld.txt  bs=1 seek=8192 count=8 conv=notrunc
$ sudo mount -o key=passphrase:passwd=Test,ecryptfs_hmac,ecryptfs_enable_filename_crypto=no,ecryptfs_passthrough=no,ecryptfs_unlink_sigs,ecryptfs_key_bytes=16,ecryptfs_cipher=aes -t ecryptfs /tmp/back/ /tmp/front/
$ cat /tmp/front/HelloWorld.txt
<garbage>

還:

$ ecryptfs-stat /tmp/back/HelloWorld.txt 
File version: [3]
Decrypted file size: [11]
Number of header bytes at front of file: [8192]
Metadata in the header region
Encrypted
HMAC disabled

eCryptfs 不會給出讀取錯誤或任何錯誤指示。請注意,即使使用該ecryptfs_hmac選項也可以啟用校驗和,但顯然沒有。ecryptfs 的實際原始碼確實包含 HMAC 程式碼,所以我不確定為什麼它不起作用。快速 Google 搜尋表明 HMAC 程式碼可能不完整。還沒有深入研究它。

引用自:https://serverfault.com/questions/626311