Наскільки стійкими є зашифровані томи 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

Детальніше про Master Key

ЛУКС

LUKS має кілька секторів на початку розділу (або диска) з метаданими, що зберігають методи шифрування, інші параметри та 8 ключових слотів. Для шифрування та розшифровки диска він використовує головний ключ , велике випадкове число, що генерується при створенні контейнера LUKS. Щоб зберегти його, він зашифрує головний ключ своїм паролем, повторивши функцію криптографічного хешу багато разів над паролем та генеруючи певний ключ для цього слота. На одному диску можна мати 8 різних паролів, кожен з яких шифрує головний ключ з іншим паролем у слоті. Коли ви змінюєте пароль, це так само просто, як шифрувати головний ключ, а не змінювати весь розділ.

Отже, коли цей слот і метадані пошкоджені, ви не можете відновити головний ключ, який реально використовується для розшифровки, втрачаючи всі дані на диску. Це простий спосіб швидко знищити всі ваші дані. Але якщо у вас є резервна копія заголовка гучності, відновити її досить просто.

Нижче наведено копію LUKS FAQ про резервну копію, вилучену з 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>

Веракріпт

Веракріпт схожий на LUKS. Я не звик до цього, як це було з Truecrypt, але загальна ідея справедлива.

У Veracrypt просто один слот для ключів, тому ви не можете мати більше одного пароля одночасно. Але ви можете мати прихований том: він зберігає метадані в кінці розділу (або диска чи файлу). У прихованому томі є інший головний ключ, і він буде використовувати кінець розділу як перекритий простір. Ідея, що вам слід створити резервну копію, однакова. Це можна зробити за допомогою Tools -> Backup Volume Headerі Tools -> Restore Volume Header. При системному шифруванні він створював завантажувальний диск із резервним копією ключа, який відновлює завантажувач Truecrypt і ключі, якщо трапляються пошкодження. Це робиться, перш ніж щось шифрувати, і наскільки я знаю, Веракріпт продовжує робити те саме.

Детальніше дивіться за цим посиланням https://veracrypt.codeplex.com/wikipage?title=Program%20Menu

Міркування щодо безпеки резервних ключів

Якщо у вас є, наприклад, пароль, що просочився, і ви зміните пароль гучності на новий, надійний та надійний, хтось із доступом до резервної копії все одно зможе розшифрувати файли зі старим паролем. Резервна копія - це головний ключ, зашифрований паролем (старий). Отже, змінюючи паролі, потрібно також зробити нову резервну копію та знищити старіші. І знищення даних назавжди може бути дуже хитрою.

Для кожного резервного копіювання, що маєте цей пароль, є можливим способом розшифрувати дані за допомогою цього пароля. Наприклад, це можна використовувати у Веракріпті, використовуючи "Універсальний пароль" (наприклад, у корпорації), створити резервну копію та змінити інший пароль. Тож відділ ІТ може відновити доступ до цього тома, навіть якщо хтось втратив пароль (подумайте як головний пароль, але не плутайте його з головним ключем раніше).

Фінальні думки (TL; DR)

Ймовірність пошкодження конкретного сектору за допомогою головного ключа є меншою, ніж у вас повний збій диска. Отже, якщо ці дані важливі, вам слід мати резервну копію, а не лише заголовки гучності (Master Key).

А корупція даних поширюється мало (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". Це означає, що зашифрований рівень рівня блоку є абсолютно не твердим, замість того, щоб вірити, що "це буде діяти як звичайна файлова система" (тобто FAQ про Veracrypt).

Крім того, я повинен був натрапити на це посилання два місяці тому:

/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.