ecryptfs (возможно, неявно) данные контрольной суммы?

Я планирую создать NAS с ecryptfs, используемым для шифрования. Я задаюсь вопросом, скажет ли ecryptfs мне, если бы файл был тихо поврежден (например, неисправный жесткий диск), или если я все еще зависел бы от базовой файловой системы, чтобы сделать вычисление контрольной суммы данных для меня?

Я могу использовать btrfs в качестве базовой файловой системы так или иначе для получения функции снимка, но мне все еще было бы интересно знать, обеспечит ли, например, ext4 + ecryptfs те же гарантии agains повреждения скрытого файла, как плоскость btrfs (или btrfs + ecrypts) была бы из-за функций вычисления контрольной суммы btrfs.

1
задан 4 September 2014 в 20:48
2 ответа

Приведенный выше ответ неверен. Фактическая реализация 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 может быть неполным. Еще не вникал в это глубже.

2
ответ дан 3 December 2019 в 18:43

eCryptFS делает данные контрольной суммы. Есть статья, описывающая работу eCryptFS. Одна из вещей, которую делает eCryptFS - это защита от взлома файла противниками, и для этого она вычисляет HMAC и сохраняет его вместе с зашифрованным файлом. В качестве бонуса, это очевидно также защищает от случайного "взлома", например, космическими лучами, электронным шумом или простым износом (коллективно описанным bit rot).

Однако, btrfs делает одну дополнительную вещь, в которой, я уверен, eCryptFS не делает: зеркалирование/репликацию и четность. При зеркалировании (RAID1) или четности (RAID5 или RAID6), btrfs может автоматически найти хорошую копию фрагмента файла, если обнаружит повреждение при считывании фрагмента. В Ars Technica есть очень хорошая статья о повреждениях и о том, как лучше всего использовать возможности btrfs или ZFS для обеспечения безопасности данных.

Если вы используете ext4 и eCryptFS, в лучшем случае вы будете знать только то, что что что-то было повреждено или подделано, но вам придется вмешаться вручную, чтобы справиться с проблемой. Я бы рекомендовал придерживаться btrfs и eCryptFS, которые обеспечивают как контрольное суммирование (до тех пор, пока вы не отключите функцию копирования на запись), так и поддержание резервных копий данных (используя RAID1, RAID5, RAID6 или RAID10).

.
1
ответ дан 3 December 2019 в 18:43