Насколько устойчивы зашифрованные тома VeraCrypt и LUKS к повреждению данных?


19

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

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

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

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

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

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

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

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

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

Ответы:


13

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

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

В большинстве случаев повреждения данных с ключом и инструментами (такими как ваш пароль и Veracrypt / LUKS) у вас есть такой же доступ, что и у незашифрованного диска, так же, как вы обычно делаете это при повседневном использовании зашифрованного диска. Шифрование только добавит дополнительный шаг (открыть зашифрованный раздел), чем обычный. Так что в этом случае он ведет себя как незашифрованные данные.

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

Подробности о неметаданных

И Veracrypt, и Luks сегодня используют XTS. В этом режиме рассчитывается ключ для каждого блока. В качестве упрощения для шифрования блока iиспользуется ключ, созданный с помощью мастер-ключей, и номер блока. Итак, шифрование одного блока не зависит от другого. Если вы испортили некоторую информацию, она будет ограничена этим блоком.

В XTS он разбивает блок на подблоки (обычно по 16 байт), создает ключ и шифрует этот подблок с помощью него. Это означает, что если мы немного изменим это, это затронет только эти 16 байтов.

В качестве теста, изменяя один бит в томе Luks, он меняет 16 байтов исходного файла на бессмысленный, но остальные 496 остаются неизменными. В 7zip-файле он использует потоковый метод, при котором все байты объединены в цепочку, поэтому изменение одного байта повлияет на все остальные - здесь это не так.

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

Более интересную информацию об этом можно найти по этим ссылкам:

/crypto/6185/what-is-a-tweakable-block-cipher

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


1
Вау, это был очень обширный и информативный ответ, большое спасибо! Однако мой вопрос больше касается устойчивости зашифрованного раздела и самих данных, а не главного ключа и метаданных. Проблема похожа на солидный архив 7zip: если один бит поврежден в середине, то вы потеряете весь архив. Будут ли зашифрованные разделы действовать так же? (мастер-ключ и метаданные исключены)
X.LINK

4

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

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

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

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

Из часто задаваемых вопросов VeraCrypt :

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

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

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

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

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

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


Я читал их, но это все еще немного сбивает с толку. Означает ли это, что восстановление, выполненное через заголовки контейнеров и файловые системы внутри контейнеров, не приведет к тому, что поврежденный сектор прямо в середине самого контейнера не сделает его полностью мертвым и его невозможно смонтировать? Как я понимаю, правильно, блок зашифрованного текста работает точно так же, как внутри нетвердого 7-zip-архива / незашифрованного ext3, все еще монтируемого, есть физические поврежденные сектора?
X.LINK

Я не могу говорить за зашифрованные тома, но изменение одного бита в зашифрованном зашифрованном тексте просто выплюнет мусор для всего блока. Размер блока может быть 128 байтов или 256 байтов или 4 КБ. Это не помешает расшифровке остальной части зашифрованного текста. Алгоритм шифрования не может знать, что мусор - это плохо. Там нет контрольной суммы или что-нибудь (для AES-CBC). Если этот блок был внутри текстового файла, он будет выглядеть как мусор в Блокноте. Если это было частью структуры каталогов, то файловая система будет выглядеть искаженной и требующей chkdsk.
Хлоя

@ X.LINK: плохой бит повредит весь «сектор» из 16 байтов. В зависимости от того, где находится этот сектор, результатом может быть ничто, если он попадет в неиспользуемую область, или мусор в этом месте в файле, или, в худшем случае, плохая структура каталогов, требующая использования утилит восстановления. Это очень похоже на физический диск, на котором есть неиспользуемые сектора, данные файлов и таблицы дисков, и ваша резервная копия должна следовать аналогичным рекомендациям.
harrymc

0

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

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

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

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

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

/superuser/1176839/what-are-every-possible-names-of-hard-drives-structure-parts

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

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

/unix/321488/full-image-of-internal-hdd-drive-dd-dd-rescue-with-truecrypt-bad-sectors/

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

PS:

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.