Як я можу використовувати dm-crypt (LUKS) з GnuPG, щоб використовувати двофакторний для FDE?


9

При використанні повного шифрування диска за допомогою Ubuntu (на відміну від homedir-шифрування) для шифрування об'єму використовується dm-крипта з LUKS. У програмі встановлення (принаймні, 12.04 черговий) ви можете вибрати між налаштуваннями за допомогою парольної фрази або файлу ключів. Я хотів би використовувати комбінацію двох; ні те, але вимагають і того, і іншого.

Чому? Тому що це підвищує безпеку (двофакторний); вам потрібно мати щось, і вам потрібно щось знати, щоб розблокувати його. Тоді я хочу покласти ключ файлів на невеликий знімний накопичувач (флешка USB) і підключити його лише під час завантаження. Результат повинен бути таким, що потрібно поставити правильну флешку та надати правильну парольну фразу для розблокування кореневого розділу.

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

Я бачу /usr/share/initramfs-tools/hooks/cryptgnupgскрипт-помічник, який може допомогти виконати його, але я не маю поняття, як ним користуватися.

Тільки, щоб уникнути плутанини: я не прошу способу додати додатковий ключ до гучності, щоб розблокувати його.


Я знайшов одну частину відповіді сам, читаючи документи . Прочитайте, як це використовувати в /usr/share/doc/cryptsetup/README.gnupg. Я спробую знайти деякий час, щоб змінити його, щоб він скористався файлом ключів із зовнішніх носіїв інформації.
gertvdijk

Відповіді:


5

Я роблю те саме, однак боюся, що моя відповідь не буде задовільною, оскільки з різних причин я пішов із повністю власноруч Initramfs .

Замість того GnuPG, що є додатковим двійковим, який повинен бути включений до Initramfs (а у випадку GnuPG-2досить складного), я просто використав те, що вже є. І це очевидно dm-crypt/LUKS.

Отже, припустимо, у вас є keyfile. Переважно один із випадковими даними.

# dd if=/dev/urandom of=keyfile count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.000189802 s, 2.7 MB/s

Додайте для нього шифрування за допомогою LUKS (сміливо додайте налаштування шифру на вибір).

# truncate -s 2M keyfile.luks
# cryptsetup luksFormat keyfile --header keyfile.luks

WARNING!
========
This will overwrite data on keyfile.luks irrevocably.

Are you sure? (Type uppercase yes): YES
Enter passphrase: bananas
Verify passphrase: bananas

Тепер у вас є файл ключів (512 байт) і keyfile.luks (2 Мб, якому в cryptsetup чомусь потрібно написати заголовку LUKS 192k). Оскільки Initramfs все одно буде стиснений, це не дуже погано (все-таки менше, ніж GnuPG).

Тепер ви можете розшифрувати файл ключів:

# cryptsetup luksOpen keyfile --header keyfile.luks lukskey
Enter passphrase for keyfile: bananas

І у вас 512 байт випадкових даних у /dev/mapper/lukskey. (Ви можете написати до нього, якщо хочете змінити його, щоб ми могли ініціалізувати файл із нулями раніше.)

# blockdev --getsize64 /dev/mapper/lukskey
512

Потім у Initramfsinit ви можете перейти до відкриття реального об'єму LUKS (якщо ви спочатку додали ключ).

cryptsetup --key-file=/dev/mapper/lukskey luksOpen /dev/yourdisk luksyourdisk
cryptsetup luksClose lukskey # clean up

Такий підхід робить GnuPG абсолютно зайвим, плюс ви отримуєте всі переваги LUKS, такі як кілька прохідних паролів для ключа, шифр на ваш вибір та ін. Не кажучи вже про приємний (в основному регулярний) запит на пароль з декількома спробами.


2
Класне рішення, але як саме це інтегрувати в свої програми initramfs? Ви заявляєте, що використовуєте повністю користувальницькі initramfs, але чи не вдалося це зробити лише за допомогою гачка?
gertvdijk

Звичайно. Можливо, навіть без гачка, якщо ви можете придумати спосіб примусити криптовалюту, щоб спочатку знайти та відкрити ключ. Наприклад, це не повинен бути файл, ви можете зробити окремий розділ для нього на USB-накопичувачі. Однак, оскільки я це не роблю, я не можу скласти конкретної відповіді на це ... вибачте: - /
frostschutz

1
Зовсім ніяких проблем - обхід GnuPG та повторне використання LUKS - це, безумовно, чудовий варіант. У випадку, якщо мені потрібно переписати гачки для підходу GnuPG, я б краще переписати його, не використовуючи його взагалі. І так, я знаю, що це не повинно бути файлом.
gertvdijk

@gertvdijk, якщо ви продовжите це, мені буде цікава ваша відповідь для подальшої довідки
frostschutz
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.