15

На этот вопрос был дан частичный ответ, но это все еще не то, что я точно ищу. Смотрите обновление 1 ниже

Я планирую зашифровать некоторые файловые системы с помощью VeraCrypt и LUKS, но я боюсь, что, если произойдет какая-то одна проблема, я не смогу снова смонтировать разделы, потеряв при этом все данные, хранящиеся в них. (из-за поврежденных секторов / блоков, сбоя питания во время операции записи, ошибок файловой системы и т. д.)

Кроме того, VeraCrypt, возможно, отказался от инструментов восстановления TrueCrypt, но я не рассчитываю на это и больше смотрю на реальные случаи.

Я также знаю о RAID и резервных копиях / хранилищах, но это не то, что я ищу.

Поэтому возникает вопрос: насколько устойчивы сами зашифрованные разделы с помощью VeraCrypt и LUKS?

Обновление 1:

Мой вопрос больше касается устойчивости зашифрованного раздела и его данных, а не сохранения главного ключа, метаданных или заголовков. Проблема похожа на солидный архив 7zip: если в середине поврежден один бит, то вы потеряете весь архив.

Будут ли зашифрованные разделы уязвимыми? (исключая главный ключ, метаданные и заголовки)

PS: Извините, если я не отвечу сразу, я работаю и путешествую по всему миру - благодаря этому сообщению - и я часто сталкиваюсь с ограниченным временем. Но я обязательно отвечу вам точно.

3 ответа3

13

На практике шифрование почти так же устойчиво, как и без него, при условии, что вы правильно копируете главный ключ и метаданные .

Помимо метаданных, повреждение повлияло бы только на блок поврежденного бита, в большинстве случаев только на 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): добавьте больше информации, основываясь на комментариях ОП.

4

Ниже я собрал некоторую информацию об отказоустойчивости контейнеров VeraCrypt/TrueCrypt.

Из-за повреждения данных Veracrypt :

TC/VC хранит заголовок тома в двух местах: в начале и в конце тома. Один в начале является основным, а другой в конце предназначен для резервного копирования. Этот механизм обычно достаточен для обеспечения доступа, когда часть диска повреждена или повреждена, потому что повреждение часто является локальным. если повреждение происходит как в начале, так и в конце диска, то диск почти наверняка мертв.

Обратите внимание, что в случае поврежденного или поврежденного диска потеря данных будет такой же, как и в том случае, если вы не используете шифрование. Это означает, что даже если вы можете смонтировать том, чтение данных может быть повреждено. Поэтому всегда думайте о резервном копировании данных, потому что шифрование не защищает от повреждения данных.

Из FAQ по VeraCrypt :

Что произойдет, если часть тома VeraCrypt будет повреждена?

В зашифрованных данных один поврежденный бит обычно повреждает весь блок зашифрованного текста, в котором он произошел. Размер блока зашифрованного текста, используемого VeraCrypt, составляет 16 байтов (то есть 128 бит). Режим работы, используемый VeraCrypt, гарантирует, что, если повреждение данных происходит внутри блока, остальные блоки не будут затронуты.

Что мне делать, если зашифрованная файловая система на томе VeraCrypt повреждена?

Файловая система на томе VeraCrypt может быть повреждена так же, как любая обычная незашифрованная файловая система. Когда это происходит, вы можете использовать инструменты восстановления файловой системы, поставляемые с вашей операционной системой, чтобы исправить это. В Windows это инструмент «chkdsk». VeraCrypt предоставляет простой способ использования этого инструмента на томе VeraCrypt: щелкните правой кнопкой мыши подключенный том в главном окне VeraCrypt (в списке дисков) и в контекстном меню выберите «Восстановить файловую систему».

Небольшое повреждение данных должно иметь локальный эффект и не разрушать весь контейнер. Однако я не советую шифровать весь том / раздел, особенно системный диск, так как восстановление может быть более сложным. Делайте хорошие резервные копии, особенно для заголовка тома. И помните, что, как и для реального диска или папки, повреждение заголовков диска / файла может затруднить восстановление данных и может потребовать дополнительных утилит.

Я считаю, что у LUKS нет второго заголовка на диске, поэтому вы должны быть еще более осторожны с сохранением резервной копии.

0

Благодаря всем ответам, предоставленным людьми, окончательный ответ завершен на 100%.

У меня не так много времени, поэтому я отредактирую свой "собственный" ответ позже. Поскольку все ответы, которые люди давали здесь, абсолютно полезны, это будет просто резюме того, что они сказали, а также мои выводы.

Во всяком случае, вот один из моих выводов, который развенчает большую путаницу, с которой я столкнулся, и это в основном касалось ... что означает блок, поскольку это термин, который используется чрезмерно и по ошибке:

https://sockpuppet.org/blog/2014/04/30/you-dont-want-xts/

Кроме того, вы найдете "стандартный" способ говорить о вещах здесь и избежать путаницы в "блоке":

https://superuser.com/questions/1176839/what-are-every-possible-names-of-hard-drives-structure-parts

Вкратце, вы можете изменить зашифрованный блок, содержащий слово "400", на "800". Это означает, что зашифрованный уровень на уровне блоков абсолютно не является твердым, вместо того, чтобы полагать, что "это будет действовать как обычная файловая система" (например, Veracrypt FAQ).

Кроме того, я должен был наткнуться на эту ссылку два месяца назад:

https://unix.stackexchange.com/questions/321488/full-image-of-internal-hdd-drive-dd-dd-rescue-with-truecrypt-bad-sectors/

Поскольку VeraCrypt является форком TrueCrypt, он, безусловно, будет работать так же.

PS:

Любой дополнительный ответ по-прежнему приветствуется и будет добавлен в мой "собственный" ответ.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .