Ecryptfs
ecryptfs(可能是隱式)校驗和數據嗎?
我打算用 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 程式碼可能不完整。還沒有深入研究它。