Запуск Python для разблокировки LUKS полного шифрования диска
Я хочу использовать полное шифрование диска с помощью Luks на Ubuntu 14.04. Тем не менее, я хочу использовать свой собственный скрипт на python для выполнения функций генерации ключа дешифрования во время загрузки устройства, которое затем отправляется lukes, чтобы позволить ему расшифровать.
В идеале я хотел бы, чтобы "исход из сценария Python" + "пользователь вводил ключ дешифрования", который затем передавался Люку, чтобы позволить устройству расшифровать. Затем я могу реализовать свою собственную функциональность в python, чтобы создать "второй фактор", позволяющий устройству расшифровывать.
Я искал вокруг, но не нашел ответа на свой вопрос. Можете ли вы помочь или дать совет?
Спасибо.
1 ответ
Если вы используете полное шифрование диска для своей корневой файловой системы, вам придется решить проблему, заключающуюся в том, что интерпретатор Python обычно недоступен на ранних этапах загрузки. Вам понадобится несколько мегабайт дополнительного незашифрованного дискового пространства для хранения, например /usr/bin/python2.7
и куча важных вещей из /usr/lib/python2.7
и вам придется разработать несколько модификаций для вашего /boot/initrd
для того, чтобы сделать эту работу.
Процесс загрузки вызывает /scripts/local-top/cryptroot
из корня initrd. Это обычно вызывает инструмент plymouth ask-for-password --prompt
, Это используется для запроса парольной фразы до запуска графического интерфейса пользователя. Эта фраза-пароль, в свою очередь, передается в cryptsetup.
Если вы все еще действительно хотите продолжить этот подход, вы можете / должны использовать файл конфигурации в каталоге конфигурации /etc/initramfs-tools/
настроить новое значение для вашего собственного cryptkeyscript
вместо взлома скрипта /usr/share/initramfs-tools/scripts/local-top/cryptroot
непосредственно. Это сделает установку обновлений дистрибутива ОС менее трудоемкой позже.
Для получения дополнительной информации обратитесь к документации по пакетам initramfs-tools, cryptsetup и plymouth и посмотрите сценарий оболочки cryptroot
Я упоминал выше.