На практике шифрование почти так же устойчиво, как и без него, при условии, что вы правильно копируете главный ключ и метаданные .
Помимо метаданных, повреждение повлияло бы только на блок поврежденного бита, в большинстве случаев только на 16 байтов.
В большинстве случаев повреждения данных с ключом и инструментами (такими как ваш пароль и Veracrypt/LUKS) у вас есть такой же доступ, что и у незашифрованного диска, так же, как вы обычно делаете это при повседневном использовании зашифрованного диска. Шифрование только добавит дополнительный шаг (открыть зашифрованный раздел), чем обычный. Так что в этом случае он ведет себя как незашифрованные данные.
С Veracrypt или Luks вы должны хранить мастер-ключ на диске, который зашифрован вашим паролем. Повреждение этого сектора (-ов) может привести к потере постоянных данных. Это может быть легко решено с помощью резервного копирования главного ключа (размером в несколько килобайт), что легко сделать с обоими программами, и это настоятельно рекомендуется для всех.
Подробности о неметаданных
И Veracrypt, и Luks сегодня используют XTS. В этом режиме рассчитывается ключ для каждого блока. Для упрощения, чтобы зашифровать блок i
вы используете ключ, сгенерированный с помощью мастер-ключей, и номер блока. Итак, шифрование одного блока не зависит от другого. Если вы испортили некоторую информацию, она будет ограничена этим блоком.
В XTS он разбивает блок на подблоки (обычно по 16 байт), создает ключ и шифрует этот подблок с помощью него. Это означает, что если мы немного изменим это, это затронет только эти 16 байтов.
В качестве теста, изменяя один бит в томе Luks, он меняет 16 байтов исходного файла на бессмысленный, но остальные 496 остаются неизменными. В 7zip-файле он использует потоковый метод, при котором все байты объединены в цепочку, поэтому изменение одного байта повлияет на все остальные - здесь это не так.
Некоторые считают это проблемой, поскольку вы можете точно знать, когда и где вы меняете простой текст с точностью до 16 байт, сравнивая только зашифрованные данные.
Более интересную информацию об этом можно найти по этим ссылкам:
https://crypto.stackexchange.com/questions/6185/what-is-a-tweakable-block-cipher
https://security.stackexchange.com/questions/39306/how-secure-is-ubuntus-default-full-disk-encryption
https://en.wikipedia.org/wiki/Disk_encryption_theory
Подробности о Мастер Ключе
LUKS
У LUKS есть несколько секторов в начале раздела (или диска) с метаданными, хранящими методы шифрования, другие параметры и 8 ключевых слотов. Для шифрования и дешифрования диска используется мастер-ключ, большое случайное число, генерируемое при создании контейнера LUKS. Чтобы сохранить его, он шифрует мастер-ключ с помощью вашего пароля, многократно повторяя криптографическую хеш-функцию над паролем и генерируя специальный ключ для этого слота. Вы можете иметь 8 разных паролей для одного и того же диска, каждый из которых зашифровывает мастер-ключ своим паролем в слоте. Когда вы меняете пароль, это так же просто, как зашифровать мастер-ключ, а не изменить весь раздел.
Таким образом, когда эти слоты и метаданные повреждены, вы не можете восстановить главный ключ, который действительно используется для расшифровки, теряя все данные на диске. Это простой способ быстро уничтожить все ваши данные. Но если у вас есть резервная копия заголовка тома, его довольно легко восстановить.
Ниже приведена копия часто задаваемых вопросов LUKS о резервном копировании, извлеченная из https://gitlab.com/cryptsetup/cryptsetup/wikis/FrequentlyAskedQuestions#6-backup-and-data-recovery
6.2 Как мне сделать резервную копию заголовка LUKS?
Хотя вы можете просто скопировать соответствующее количество байтов с начала раздела LUKS, лучше всего использовать параметр команды "luksHeaderBackup" cryptsetup. Это также защищает от ошибок, когда при создании раздела LUKS использовались нестандартные параметры. Пример:
cryptsetup luksHeaderBackup --header-backup-file <file> <device>
Для восстановления используйте обратную команду, т.е.
cryptsetup luksHeaderRestore --header-backup-file <file> <device>
Если вы не уверены в том, что заголовок будет восстановлен, сначала сделайте резервную копию текущего! Вы также можете протестировать заголовочный файл, не восстанавливая его, используя параметр --header для отдельного заголовка, например:
cryptsetup --header <file> luksOpen <device> </dev/mapper/ -name>
Если это откроет твою партию ключей, ты в порядке. Не забудьте снова закрыть устройство.
При некоторых обстоятельствах (поврежденный заголовок) это не удается. Затем выполните следующие действия:
Сначала определите размер мастер-ключа:
cryptsetup luksDump <device>
дает строку в форме
MK bits: <bits>
с битами, равными 256 для старых значений по умолчанию и 512 для новых значений по умолчанию. 256 бит равняется общему размеру заголовка в 1'052'672 байта и 512 битам из 2MiB. (См. Также пункт 6.12) Если luksDump завершается неудачно, предположите, что 2MiB, но учтите, что если вы восстановите это, вы также можете восстановить первые 1M или около того файловой системы. Не изменяйте файловую систему, если вы не смогли определить размер заголовка! При этом восстановление резервной копии слишком большого заголовка все еще безопасно.
Во-вторых, сбросьте заголовок в файл. Есть много способов сделать это, я предпочитаю следующее:
head -c 1052672 <device> > header_backup.dmp
или же
head -c 2M <device> > header_backup.dmp
для заголовка 2MiB. Проверьте размер файла дампа, чтобы быть уверенным.
Чтобы восстановить такую резервную копию, вы можете попробовать luksHeaderRestore или сделать более простой
cat header_backup.dmp > <device>
Veracrypt
ФИЛЬМЫ ПОХОЖИЕ НА LUKS Я не привык с этим, как я был с Truecrypt, но общая идея верна.
У Veracrypt просто один слот для ключей, поэтому вы не можете иметь более одного пароля одновременно. Но у вас может быть скрытый том: он хранит метаданные в конце раздела (или на диске, или в файле). Скрытый том имеет другой мастер-ключ и будет использовать конец раздела в качестве перекрывающегося пространства. Идея, что вы должны сделать резервную копию, та же самая. Это можно сделать с помощью Tools -> Backup Volume Header
и Tools -> Restore Volume Header
. С помощью системного шифрования он используется для создания загрузочного диска с резервной копией ключей, которая восстанавливает загрузчик Truecrypt и ключи в случае любого повреждения. Это делается до того, как что-то зашифровать, и, насколько я знаю, Veracrypt продолжает делать то же самое.
Для получения более подробной информации смотрите эту ссылку https://veracrypt.codeplex.com/wikipage?title=Program%20Menu
Соображения безопасности по поводу ключей резервного копирования
Например, если у вас есть утечка пароля и вы смените пароль тома на новый, надежный и безопасный, кто-то, имеющий доступ к резервной копии, все равно сможет расшифровать файлы со старым паролем. Резервная копия - это в основном мастер-ключ, зашифрованный (старым) паролем. Поэтому при смене паролей также необходимо сделать новую резервную копию и уничтожить старые. И уничтожение данных навсегда может быть очень хитрым.
Для каждой резервной копии с этим паролем возможен способ расшифровки данных с помощью этого пароля. Это можно использовать, например, в Veracrypt, используя "Универсальный пароль" (как в корпорации), создавая его резервную копию и меняя другой пароль. Итак, отдел информационных технологий. может восстановить доступ к этому тому, даже если кто-то потерял пароль (думайте как мастер-пароль, но не путайте с мастер-ключом ранее).
Заключительные мысли (TL; DR)
Вероятность повреждения конкретного сектора с помощью мастер-ключа меньше, чем при полном отказе диска. Поэтому, если эти данные важны, у вас должна быть резервная копия, а не только заголовки томов (мастер-ключ).
И повреждение данных распространяется мало (16 байт), в результате чего приемлемо для большинства применений.
Таким образом, плохой блок в середине раздела или диска будет влиять только на этот блок. И ошибки в несколько битов в секторе ограничены этим сектором и даже не влияют полностью на сектор 512 байт.
Обновление (23/01/2017): добавьте больше информации, основываясь на комментариях ОП.