Загрузчики Linux, поддерживающие полное шифрование диска?

28

Существуют ли загрузчики Linux, поддерживающие полное шифрование диска (а-ля TrueCrypt ). Я знаю, что была работа по добавлению поддержки шифрования в GRUB2, но пока она еще не готова. Есть еще варианты?

(Обратите внимание, что я действительно имею в виду полное шифрование диска здесь - в том числе /boot)

Большинство ответов описывают установку, где /bootне зашифрованы, и некоторые из них пытаются объяснить, почему незашифрованные /bootдолжны быть в порядке.

Не вдаваясь в дискуссию о том, почему на самом деле мне нужно / boot для шифрования, вот статья, которая описывает именно то, что мне нужно, на основе модифицированной версии GRUB2:

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

Grodriguez
источник
да, есть отличный МЕТОДИЧЕСКИЕ здесь: wiki.archlinux.org/index.php/...
EBal

Ответы:

20

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

Обновление (2015) : последняя версия GRUB2 (2.00) уже содержит код для доступа к зашифрованным разделам LUKS и GELI. (Ссылка на xercestch.com, предоставленная OP, упоминает о первых патчах для этого, но теперь они интегрированы в последнюю версию).

Однако, если вы пытаетесь зашифровать весь диск по соображениям безопасности, обратите внимание, что незашифрованный загрузчик (например, TrueCrypt, BitLocker или модифицированный GRUB) предлагает не более защиты, чем незашифрованный /bootраздел (как отметил JV в комментарии выше) , Любой, кто имеет физический доступ к компьютеру, может легко заменить его на пользовательскую версию. Это даже упоминается в статье на xercestech.com, на которую вы ссылаетесь:

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

Обратите внимание, что все программные продукты для полного шифрования диска имеют этот недостаток, независимо от того, используют ли они незашифрованный загрузчик или незашифрованный раздел загрузки / предварительной загрузки. Даже продукты с поддержкой чипов TPM (Trusted Platform Module), такие как BitLocker, могут быть внедрены без изменения аппаратного обеспечения.

Лучшим подходом было бы:

  1. расшифровывать на уровне BIOS (в материнской плате или адаптере диска или внешнем оборудовании [смарт-карта], с чипом TPM или без него), или
  2. Носите код PBA (авторизация перед загрузкой) ( /bootв данном случае это раздел) на съемном устройстве (например, на смарт-карте или USB-накопителе).

Чтобы сделать это вторым способом, вы можете проверить проект Linux Full Disk Encryption (LFDE) по адресу: http://lfde.org/, который предоставляет послеустановочный скрипт для перемещения /bootраздела на внешний USB-накопитель, шифруя ключ с помощью GPG и хранение его на USB тоже. Таким образом, более слабая часть пути загрузки (незашифрованный /bootраздел) всегда с вами (вы будете единственным, кто имеет физический доступ к расшифровывающему коду и ключу). ( Примечание : этот сайт был потерян, а блог автора также исчез, однако вы можете найти старые файлы по адресу https://github.com/mv-code/lfde, просто обратите внимание, что последняя разработка была сделана 6 лет назад). В качестве более легкой альтернативы вы можете установить незашифрованный загрузочный раздел на USB-накопитель при установке вашей ОС.

С уважением, М.В.

MV.
источник
1
Расшифровка на уровне BIOS была бы действительно хорошим решением (я рассмотрел это как вариант) ...
1
Я не знаю ни одной работающей реализации, но EFI / UEFI имеет возможность включить пользовательский менеджер загрузки EFI для замены обычного загрузчика, возможно, добавив слой дешифрования для расшифровки данных (конечно, тогда вам понадобится платформа EFI ). Или, возможно, некоторые из проектов, связанных с CoreBoot (ADLO, SeaBIOS, OpenBIOS и т. Д.), Могут быть изменены для этого. Просто идеи.
4
Просто чтобы добавить больше информации о слабости использования незашифрованного / загрузочного раздела (но это также относится и к незашифрованному загрузчику): twopointfouristan.wordpress.com/2011/04/17/… (как изменить загрузочный раздел за 10 минут физического доступа, чтобы получить парольную фразу монтирования плюс любой другой файл в зашифрованном разделе)
1
@MV .: Спасибо. Я могу проверить это сам и добавить здесь ответ с более подробными /bootинструкциями по использованию зашифрованных разделов с GRUB2.
Пек
1
@ 에이 바: нет, это связано (использование LUKS с TPM), но это не тот же проект, который ранее размещался на lfde.org (сейчас это сайт об аэроклубе).
М.В.
4

Сделайте ваш Начальный RAMdisk, и папка / boot не использует шифрование.

Это поднимет «минимальное» ядро, с драйверами и поддержкой , чтобы перейти к «реальной» корневой файловой системе , которая будет зашифрована.

Прежде чем вы заявите, что «это взлом», - запомните - большинство (если не все) дистрибутивы Linux загружаются таким образом сегодня по умолчанию. Это явно позволяет вашей системе загружать и загружать вашу корневую ФС, используя модули, которые ей необходимо загрузить из файловой системы. (Вроде проблема курицы и яйца). Как, например, если ваша корневая файловая система была на аппаратном томе RAID, и вам нужно было загрузить ее драйвер, прежде чем вы сможете смонтировать корневую FS.

штифтик
источник
3

Я просмотрел ссылку, которую вы разместили - хотя загрузочного раздела нет, на жестком диске все еще есть незашифрованный загрузчик, доступ к которому можно получить с помощью атаки злой девицы. Я искал подобную установку, в которой на жестком диске нет незашифрованных данных, но до сих пор я только запускал загрузчик со съемного диска.


источник
Да, все еще есть незашифрованный загрузчик. Это было бы приемлемо для меня.
Злая служанка может заразить загрузчик, чтобы выдать поддельный пароль, чтобы обмануть вас, а затем просто загрузить незашифрованное троянское ядро. Шифрование ядра очень мало выигрывает без шифрования загрузчика.
Skaperen
1

Я полагаю, что большинство из них делает то, что вам нужно, это инструкция по установке ОС с зашифрованным HD в первую очередь.

В Ubuntu есть отличная страница с инструкциями по созданию зашифрованных разделов, LMVP, папок и т. Д., Просто посмотрите версию этого дистрибутива Google ...

СП
источник
2
Большинство дистрибутивов Linux, включая Ubuntu, включают в себя некоторую поддержку шифрования разделов, но для них требуется / boot, чтобы они были незашифрованы. Я ищу загрузчик, который может работать с полностью зашифрованным диском.
1
По крайней мере, некоторая часть загрузчика должна быть зашифрована, иначе процессор не сможет ее запустить. Есть ли какая-то конкретная проблема, связанная с оставлением / загрузкой незашифрованным?
2
Загрузчик и / boot это разные вещи. Я ищу загрузчик, который может загрузить полностью зашифрованный диск. TrueCrypt может сделать это для Windows, но не для Linux.
Разница в том, что загрузчик Windows содержится в самом mbr, а в linux mbr просто ссылается на необходимые файлы / boot.
СП
1
«Аутентификация перед загрузкой обрабатывается загрузчиком TrueCrypt Boot Loader, который находится на первой дорожке загрузочного диска» - иначе говоря, в Windows он создает мини-загрузчик. Опять же, сам grub содержится в / boot, mbr составляет всего 512 байт, что недостаточно для хранения алгоритма расшифровки. Как бы то ни было, часть жесткого диска должна быть в незашифрованном виде. Возможно, вы сможете запустить grub на зашифрованном разделе с загрузчика на совершенно другом, но для этого потребуется некоторый грязный код ...
СП
0

Нет, я думаю, что нет.

Вы действительно должны зашифровать / загрузить? Я подозреваю, что нет. Остальная часть файловой системы может быть зашифрована обычным программным обеспечением Linux, которое находится в initramfs в / boot и соответственно запрашивает пользователя.

MarkR
источник
2
Да, мне нужно зашифровать / загрузить. Все должно быть зашифровано, кроме самого загрузчика.
Пожалуйста, объясните, почему вы считаете, что нет загрузчиков, поддерживающих полное шифрование диска.
this.josh
@Grodriguez: если вы считаете / boot частью загрузчика, то все зашифровано - все двоичные файлы, используемые во время выполнения, все пользовательские данные и т. Д.
MarkR
2
Как отмечено в комментарии к другому ответу: я знаю, что всегда должно быть «что-то», которое не зашифровано - мне просто нужно это «что-то», чтобы быть загрузчиком (MBR + загрузочный сектор), а не разделом / boot ,
0

Вы, кажется, просите что-то, что невозможно сделать, и сравниваете это с решением Windows, которое скрывает от вас реализацию, но в действительности делает то же самое, что делает Linux.

Самое близкое решение, о котором я могу подумать, - это использовать жесткий диск с паролем безопасности и шифрованием. Некоторые ноутбуки Thinkpad используют эти аппаратные решения.

Зан Рысь
источник
2
Извините, но я не понимаю, почему это должно быть "невозможно". Статья, на которую я ссылаюсь в своем вопросе, доказывает, что это возможно. Доказательство концепции было реализовано с использованием модифицированной версии GRUB 2. Я знаю, что всегда должно быть «что-то», которое не зашифровано - мне просто нужно это «что-то», чтобы быть загрузчиком (MBR + загрузочный сектор), вместо этого раздела / boot.
@ Гродригес: Ваше требование не имеет смысла. Удовлетворены ли ваши требования при использовании виртуальной машины внутри другой ОС? Если это так, загрузите ОС 1, расшифруйте диск и запустите виртуальную машину.
Zan Lynx
2
Вы действительно пытались прочитать статью, на которую я ссылался? Тот факт, что вы не понимаете требования, не означает, что «это не имеет смысла». У меня есть веские причины для этого (в которые я не хочу вдаваться).
В статье 3 четко указано, что это не улучшает ситуацию. Поэтому для меня нет смысла следить за остальным, что фокусируется на том, как его настроить, а не как оно работает. Подумайте о том, что скажет вам, что я заменил ваше ядро, или целое / boot, своим собственным (когда я действую как злая служанка).
Skaperen
0

Ответ подсказан в статье. «Теперь это возможно с расширениями для загрузчика GRUB2 следующего поколения, который был исправлен для поддержки не только» и «мы хотим установить наш новый образ grub2 с поддержкой luks позже» и «Теперь мы скомпилируем источник GRUB2 с поддержкой LUKS». " Кажется, есть патч или расширение, которое нужно получить и включить в GRUB2, или раздвоенный источник GRUB2.

Skaperen
источник
0

Grub2 версии 2.02 ~ бета3 может сделать много вещей, которые Grub2 версии 2.02 ~ бета2 не может сделать, протестировано мной:

  1. Загрузка с использованием диска Super Grub 2
  2. Нажмите клавишу «c», чтобы перейти к командной строке
  3. Введите команды для монтирования зашифрованного раздела я хочу
    • Инсмод Лукс
    • cryptomount (hd0, #) // где # представляет зашифрованный раздел
  4. Введите фразу-пароль и введите еще несколько команд
    • мультизагрузка (crypto0) /grub/i386-pc/core.img
    • ботинок

Это загрузит еще один Grub2, который находится внутри зашифрованного раздела, здесь злая безумная атака не имеет никакого смысла ... я загружаюсь с компакт-диска (только для чтения), затем монтирую зашифрованный раздел (без парольной фразы, как кто-нибудь смеет вставьте что-нибудь!), затем загрузитесь из зашифрованного раздела и загрузите Grub2 с собственным меню и т. д.

Примечание. Такая загрузка Grub 2.02 ~ beta3 (я использую Super Grub 2 cd) может быть на USB-накопителе, USB-жестком диске и т. Д.

Предупреждение: Grub2 версии 2.02 ~ beta2 не может сделать то же самое, поскольку имеет некоторые ошибки (которые, похоже, исправлены в Grub2 версии 2.02 ~ beta3), связанные с командой cryptomount ...

Бета2 ошибки, о которых я говорю, это:

  1. Он на самом деле не монтирует зашифрованный раздел, поэтому он не дает вам доступа (crypto0) / *
  2. Если существует более одного зашифрованного раздела, используется cryptomount -aтолько один пароль
  3. После запуска cryptomount один раз он запускается снова ничего не делает

на бета 3:

  1. Он действительно монтирует зашифрованный раздел и позволяет вам получать доступ к файлам через (crypto0) / * или (crypto1) / * и т. Д., Если одновременно подключено более одного
  2. Он запрашивает каждую фразу-пароль (по одному на зашифрованный раздел)
  3. Он позволяет запускать его столько раз, сколько вам нужно, вы можете смонтировать одно, затем другое и т. Д.

Примечание: я не понял, как их размонтировать, кроме перезагрузки или загрузки другого или того же grub2 / другого загрузчика и т. Д.

Надеюсь, что это поможет прояснить ситуацию, и надеемся, что версия Grub2 2.02 ~ beta3 будет интегрирована в LiveCD, так что все, что мы можем установить, без необходимости компилировать ее самостоятельно.

PD: С диском Super Grub 2 я не вижу способа установить Grub2 версии 2.02 ~ beta3 на MBR / загрузочный раздел и т. Д.

Claudio
источник