Подписание / контрольная сумма ядра для предотвращения / обнаружения манипуляций


8

Все мои разделы зашифрованы ( /и /home), но /bootраздел должен оставаться незашифрованным и открытым для манипуляций. Я думал о хешировании ядра при загрузке и проверке результата по сохраненному значению (сгенерированному при компиляции, сохраненному на моем зашифрованном диске), чтобы увидеть, манипулирует ли кто-то каким-либо образом ядром с момента последней загрузки (возможно, даже физически). Есть ли проблема с написанием такого скрипта? Есть ли программы, которые уже делают это?

Ответы:


6

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

Шифрование не обеспечивает целостность данных или подлинность . Другими словами, это не мешает злоумышленнику изменить содержимое вашего диска и заменить его вредоносной операционной системой. Эту вредоносную операционную систему можно легко запрограммировать на отображение контрольной суммы, которую вы ожидаете для загруженного ядра.

Самый простой путь атаки - « человек посередине», когда злоумышленник запускает вашу обычную операционную систему под некой виртуальной машиной. Уровень виртуальной машины передает ваш ввод в желаемую операционную систему и передает вывод обратно. Но он также записывает нажатия клавиш (мммм, пароли) сбоку, вынимает закрытые ключи из памяти ОС и так далее.

Чтобы избежать этой формы атаки, вам нужен корень доверия : компонент системы, которому вы доверяете не по той причине, что другой компонент системы говорит об этом. Другими словами, вы должны начать где-нибудь. Хорошее начало - начать с имеющегося у вас оборудования; Вы можете оставить свою операционную систему на USB-ключе, который не будет у вас на виду, и подключить его только к оборудованию, в котором вы достаточно уверены (в оборудовании может быть вредоносное ПО !). Имейте в виду, если вы готовы доверять компьютеру, вы можете доверять и его жесткому диску.

Существует техническое решение для преодоления разрыва между доверием небольшого чипа и доверием целого настольного компьютера или ноутбука. Некоторые ПК имеют TPM (модуль доверенной платформы), который, среди прочего, может проверить, что может быть загружена только известная операционная система. Trusted Grub поддерживает TPM, поэтому с TPM plus Trusted Grub вы можете быть уверены, что запущенное вами ядро ​​одобрено.

Обратите внимание, что принятие TPM может работать для вас или против вас. Все зависит от того, у кого есть ключи. Если у вас есть закрытый ключ для вашего TPM, вы можете точно контролировать, что работает на вашем компьютере. Если только у производителя есть закрытый ключ, это способ превратить универсальную платформу в заблокированное устройство.


+1 за ссылку на большую потенциальную ловушку TPM (она же Treacherous Computing)
Эли Хеди

Вы не даете реальных решений , просто упоминаете популярные фразы, связанные с безопасностью. То, что вы говорите о MITM-атаке, - это угроза, которая игнорирует основную идею вопроса ОП: использование сценария проверки контрольной суммы, который позволяет системе загружаться только при соблюдении определенных условий. В тот момент, не было бы не проблема в проверке того, что фактическое базовое оборудование является то , что оно должно быть, не VM.
rozcietrzewiacz

-1

Загруженное ядро ​​находится в памяти. Вы можете создать скрипт, который найдет его /dev/memи, зная размер, рассчитает и проверит его контрольную сумму.

Вы также можете зашифровать весь HD, без необходимости /bootразбиения и (почти) никакого способа изменить ядро. Как? два способа, которыми я могу придумать:

  • Поместите свое ядро ​​на компакт-диск, с которого ваш компьютер будет загружаться. Это не так сложно; некоторые люди сообщали об использовании такой установки несколько лет назад - см. второй пост в этой ветке форума .

  • Если ваша материнская плата поддерживается coreboot и имеет достаточно места для минимального ядра, у вас может быть ядро ​​с поддержкой шифрования на вашем чипе BIOS. (У меня не было возможности проверить, но я не вижу причин, по которым это может не сработать.)

Редактировать: обратите внимание, что все это всего лишь один шаг к «доверенной» или «проверенной» загрузке (на которую Гиллес справедливо указал). Полный механизм должен также учитывать то, что происходит на этапе загрузчика и как определяется базовое оборудование. Посмотрите, как Google Chromium OS делает это .


Это будет работать? Я не уверен; Я не знаю случайно, изменяет ли ядро ​​свой код в памяти после запуска. Я знаю, что вы не можете проверить модуль таким образом, потому что модуль связан с ядром (изменяя некоторые адреса здесь и там), когда он загружен. Это обеспечит желаемые свойства безопасности? Нет, смотри мой ответ. Честность это сложно!
Жиль "ТАК ... перестать быть злым"

Похоже, вы не прочитали весь мой ответ. Первый абзац, на который вы ссылаетесь, является лишь прямым ответом на то, что действительно было задано. Остальные мои варианты ответов представлены аналогичные методу вы «ве уже упоминалось, но лучше , потому что они защищены от модификации ядра ( в отличие от USB - флешки).
rozcietrzewiacz

@Gilles Забыл '@' вас в предыдущем комментарии. Кроме того, я только что проверил то, в чем вы не были уверены: сделал дамп образа ядра в памяти, затем добавил несколько модулей, сделал второй дамп региона, сравнил - тоже самое. Вы можете использовать это.
rozcietrzewiacz
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.