Повне шифрування диска з двофакторною автентифікацією для Ubuntu: як?


9

Довідкова інформація

Я новачок у Linux, нещодавно відлучений від Windows. Зараз я використовую Ubuntu 11.04 без повного шифрування диска. Зашифрований лише мій домашній каталог із eCryptFS. Останнім часом я почав помічати, що шифрування не таке прозоре, як воно має бути. Наприклад, VMWare іноді стикається з проблемами для віртуальних машин, що зберігаються в моєму зашифрованому домашньому каталозі, тому я просто перемістив віртуальні машини в незашифроване місце і зв'язав його з моїм зашифрованим домашнім каталогом. Але це крім того: я зрозумів, що насправді не дуже безпечно залишати систему незашифрованою, оскільки операційну систему з відкритим кодом, як Ubuntu, дуже легко змінити, щоб розкрити інформацію, яку вона повинна зберігати в секреті.


Мета

Мені хотілося б мати можливість повного шифрування диска спільно з ключовим пристроєм та паролем для передзапускної автентифікації.


Вимоги / подробиці

  1. Весь диск повинен бути зашифрований. Як мінімум, диск складається з окремих розділів, які всі зашифровані. Якщо можливо приховати навіть розділи за допомогою шифрування, я піду за цим. Чим прозоріше шифрування, тим краще; Мені не потрібно було використовувати комп’ютер інакше або налаштовувати щось інше.
  2. Пристрій, який використовується для розблокування та завантаження зашифрованого розділу, повинен бути невеликим зовнішнім портативним пристроєм. Це служить двом цілям: завантажувач завантажується набагато рідше для шкідливих цілей, оскільки він залишиться зі мною, коли він не використовується; і ключові файли для розшифровки диска не знайдуться ніде на самому зашифрованому диску в будь-якій формі.
  3. Ключові файли повинні бути зашифровані паролем. Якщо я втрачу і комп’ютер, і свій USB-пристрій, дані та операційна система все ще будуть у безпеці. Якщо я втрачу USB-ключ або він порушений, я можу створити ще один чистий з резервної копії. Жодна інформація не розголошується в будь-якому випадку. Звичайно, якщо я втрачу комп’ютер, це неістотно.

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


2
Знову "оскільки операційну систему з відкритим кодом, наприклад Ubuntu, дуже легко модифікувати для розкриття інформації, яку вона повинна зберігати в таємниці". - Ви були б вражені тим, як легко переконати ОС із закритим кодом зробити те саме. Той факт, що програма є відкритим кодом, нічого не означає про її безпеку чи незахищеність від локальних атак.
користувач1686

Відповіді:


2

Існує простий спосіб повного шифрування диска, який вимагає наявності певного накопичувача та пароля для завантаження.

Що ви робите, - від'єднати заголовок LUKS від повністю зашифрованого жорсткого диска та зберегти його на своєму великому диску.

Я припускаю, що ви вже маєте таку настройку:

# /dev/sda1 is the boot partition (100MB)
# /dev/sda2 is the encrypted partition
parted /dev/sda mklabel msdos
parted /dev/sda -- mkpart primary ext2 1M 200M
parted /dev/sda -- mkpart primary ext4 200M -100M
cryptsetup luksFormat /dev/sda2

Створіть копію заголовка luks та видаліть його з локального пристрою:

mkdir /media/ramdisk && mount -t tmpfs -osize=20m,rw tmpfs /media/ramdisk
cryptsetup luksHeaderBackup /dev/sda2 --header-backup-file /media/ramdisk/header.img
dd if=/dev/urandom of=/dev/sda2 bs=1M count=2

Виконайте останній крок кілька разів, якщо ви є ціллю високобюджетного агентства. Я також створив ramdisk для тимчасового утримання заголовка, щоб він не затримувався згодом.

За допомогою пристрою usb в / dev / sdb зробіть розділ 2 Мб і завантажте на нього заголовок:

parted /dev/sdb -- mklabel MSDOS
parted /dev/sdb -- mkpart primary 1M 3M
dd if=/media/ramdisk/header.img of=/dev/sdb1

Зараз все в / dev / sda2 виглядає як випадкові дані, і ви маєте свій заголовок у / dev / sdb1. Для доступу до зашифрованого диска вручну ви використовуєте:

cryptsetup luksOpen --header /dev/sdb1 /dev/sda2 rootfs
mount /dev/mapper/rootfs /target

Наступним кроком є ​​те, щоб ваш процес завантаження попросив встановити маятник на завантаження. Мені було легше просто припустити, що він буде там, і не вдасться до іншого. Спочатку дізнайтеся ідентифікатор пристрою та UUID:

find -L /dev/disk/by-id/ -samefile /dev/sdb1
/dev/disk/by-id/usb-Generic-_Compact_Flash-part1
find -L /dev/disk/by-id/ -samefile /dev/sda2
/dev/disk/by-id/scsi-SATA_ST3320820AS_5QF28W6V-part2

blkid /dev/sdb1
/dev/sdb1: UUID="63347546-2db3-4bc1-9414-1142739a4c9f" TYPE="crypto_LUKS"

Далі відредагуйте /etc/crypttabрядок, щоб виглядати так:

root /dev/disk/by-id/scsi-SATA_ST3320820AS_5QF28W6V-part2 none luks,header=/dev/disk/by-id/usb-Generic-_Compact_Flash-part1

(Вам може знадобитися цей патч, щоб отримати підтримку headerопції в crypttab)

І останнє, але не менш важливе, оновіть свій initram:

update-initramfs -u

Ви можете зробити цей крок далі і фактично весь розділ завантаження завантажений на USB-накопичувач . Автор цієї статті був на цьому самому сайті, роблячи подальші дії .

Є багато різних підходів , які можна зробити , з різним ступенем безпеки і зручності.

Особлива примітка щодо безпеки: якщо ваша парольна фраза зламана, кожен, хто має копію заголовка, зможе розшифрувати дані, навіть якщо згодом ви зміните пароль.


1

Я знаю, що TrueCrypt доступний для OSX, Windows та Linux. Ви можете зробити два рівні шифрування для всього диска. Я використовував його на Debian із повним шифруванням диска AES. Для доступу до даних на жорсткому диску потрібен пароль під час завантаження.


3
Я подумав, що TrueCrypt шифрування повного диска працює лише з Windows.
Кевін Лі

two levels of encryption for the whole drive! =two factor auth
GnP
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.