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

Я установил GRUB2 в зашифрованный загрузочный раздел, как описано здесь . Выбранный алгоритм хэширования для моего luksFormatsha512 , с luksFormat временем по умолчанию (который составляет 2 секунды).

Этот зашифрованный раздел занимает чуть более 2 секунд, чтобы разблокировать, если он сделан из командной строки (либо из архивирования, либо из запущенной системы), но GRUB занимает в среднем 10,5 секунд, чтобы разблокировать его. Это медленнее, чем приемлемо для моего сценария.

Я нашел других людей, имеющих такую ​​же проблему здесь и здесь . Во второй ссылке пользователь frostschutz опубликовал некоторые подсказки о том, что может быть причиной этого, о котором я думаю, 2 очень верны:

1) CPU может работать в режиме энергосбережения во время разблокировки GRUB

2) GRUB может использовать реализацию хеширования, которая намного медленнее, чем система. Он сделал бенчмарк, который можно найти здесь .

Поскольку шифрование загрузочного раздела становится все более распространенным, и пока нет удовлетворительного ответа на эту проблему, я подумал, что я бы спросил об этом. Что можно сделать, кроме уменьшения количества итераций (что существенно снижает безопасность в сценарии автономной атаки), чтобы противостоять этому (значительно) медленному времени дешифрования загрузчиком GRUB?

Я бы хотел хотя бы точно определить причину. Есть ли способ проверить (и, возможно, изменить) часы процессора на экране загрузчика? Я знаю, что у GRUB есть оболочка; Я открыл его и пробовал cat /proc/cpuinfo но он терпит неудачу с «/ proc not found» или что-то в этом роде. Я также пробовал cpuid , и хотя он не терпит неудачу, он также ничего не возвращает.

В качестве дополнительной информации я получил эти тайминги:

  • GRUB занимает 9 секунд или дольше, чтобы разблокировать загрузочный раздел ( /boot ) после ввода пароля и нажатия Enter .
  • Кажется, что ядро ​​занимает около 7 секунд, чтобы разблокировать корневой раздел ( / ). Опять же, это время после нажатия Enter .
  • Ядро разблокирует и монтирует загрузочный раздел ( /boot ) через crypttab всего за 2 секунды.

Обновления:

  • Я попробовал хэширование SHA256, и потребовалось больше времени (13 секунд). Вероятно, это указывает на то, что GRUB должен использовать 64 бита, как это можно сделать здесь , https://security.stackexchange.com/a/40218/91904 и в ответе frostschutz .

  • Также попробовал SHA1, и он занимает 11,5 секунды.

  • Кажется, не имеет значения, используется ли AES256 или AES512

  • Также не имеет значения, какая файловая система используется для загрузочного раздела.

One Solution collect form web for “GRUB занимает слишком много времени, чтобы разблокировать зашифрованный загрузочный раздел”

GRUB – ранняя загрузка. Нет ОС, еще нет Linux, хотя мы, как правило, забываем, что, поскольку GRUB делает много удивительно сумасшедших вещей само по себе. Таким образом, сообщение a /proc not found .

SHA512 много выигрывает от 64-битных инструкций, но GRUB, возможно, пока не сможет их использовать. Попробуйте SHA256 или SHA1, возможно, они работают лучше для GRUB. Не имеет значения, какая хэш-спецификация вы используете с LUKS, поскольку подсчет iter будет соответствующим образом адаптирован. См. Как изменить hash-spec и время-время существующего устройства LUMS dm-crypt? о том, как попробовать это без повторного шифрования всего.

GRUB, похоже, использует какой-то вариант библиотеки gcrypt для своих потребностей в хэшировании. Я не знаю, действительно ли мой старый критерий действителен. Назад, когда я тестировал, это не самая быстрая библиотека (по крайней мере, так, как она используется в cryptsetup benchmark ), и были удивительно большие различия.

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

Поскольку шифрование загрузочного раздела становится все более распространенным,

По всем неправильным причинам … люди нарушают вашу / загрузку, люди так же легко манипулируют загрузчиком. GRUB поддерживает только самую прямую схему, в чем дело, если она попадает в дешевый кейлоггер?

  • Как grub2 находит свой файл конфигурации в загрузке EFI?
  • Восстановить удаленный раздел LUKS
  • Установка NixOS в многозагрузочной системе с GRUB (от установки Arch)
  • Как скрыть загрузку grub 2 в debian во время загрузки?
  • Изменение фона grub2
  • Каков надлежащий способ совместного использования подкаталога / usr?
  • Grub - Неверный путь к файлу EFI для Windows
  • После установки нового ядра в Ubuntu 14.04 перезагрузка приведет меня к initramfs busybox. Как смонтировать файловую систему после этого?
  • конфигурации загрузчика с GPT, RAID1 и LVM
  • SSD failiure. grub rescue видит файлы, но я не могу монтировать диски
  • Grub и загрузчик
  • Interesting Posts

    Как явным образом и безопасно принудительно использовать встроенную команду в bash

    Почему «1,4p» выводит все строки, а не только первые четыре?

    Начальные вопросы относительно «<», «<<» и чтения файлов

    Случайно установленное разрешение экрана слишком велико, оно не изменится назад

    Как сделать пароли пользователей отображаемыми как чистый текст в Linux?

    Слияние и добавление таблиц для создания главной таблицы из нескольких таблиц

    скрипт для синтаксического анализа целого числа и преобразования его в код char

    Как установить DPI на экране Hi-Res? Значение по умолчанию слишком маленькое

    Отключить ошибку: nouveau unknown i2c port и неизвестный статус

    Почему sudo игнорирует псевдонимы?

    Как смонтировать каталог как можно раньше, или сразу после fstab?

    Эквивалент nfsstat -m на старшем ядре

    Как сделать исполняемый файл из всех файлов, за исключением нескольких типов файлов?

    Проверить последние сообщения

    Как проверить, установлена ​​ли общая библиотека?

    Linux и Unix - лучшая ОС в мире.