![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
Relkin |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 21.12.2006 Репутация: 2 Всего: 2 |
Смысл использования инструкции заключается в том, чтобы обнулить значение PCR17 ( при старте компьютера, оно равно -1 ), таким образом отвязав последующую процедуру аттестации от текущего состояния системы, и выполнять только один непрерываемый поток инструкций SL'a. Когда выполняетсчя skinit все AP ядра процессора находятся в состоянии после INIT IPI и ждут STARTUP IPI. Работает только BSP ядро с SL, защищённым от всего, в том числе DMA. SL переинициализирует AP ядра процессора своим кодом. После skinit управление уже никогда не вернётся враждебному гипервизору. Всё это, конечно, если она не была сэмулирована, но в обратном случае аттестация не будет пройдена, т.к. обнулить значение PCR17 другим способом никак нельзя. |
|||
|
||||
xvr |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 20 Всего: 223 |
Зачем этот код выполнять именно как SL? Для аутентификации по пользовательскому случайному числу нужен не SL, а не экспортируемый из TPM приватный ключ. Почему оно защищенное? Если злоумышленник залез в BIOS (а это запросто), то он получит управление до SKINIT, и сможет поставить хук на вызов себя позже (например на другом процессоре, который он может для этого разбудить через STARTUP IPI)
|
||||||
|
|||||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
Relkin,
xvr, приятно читать умные диалоги, но некоторый оффтоп все же имеется в данном случае ![]() давайте ближе к linux'у ![]() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Relkin |
|
||||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 21.12.2006 Репутация: 2 Всего: 2 |
Обычно в DRT под SK подразумевается VMM (гипервизор), который либо начинает контролировать недоверенную ОС (из неё происходил запуск), путём погружения её в виртуальную машину, либо создаёт полностью новые виртуальные машины. Так как GIF флаг равен нулю после SKINIT у AP ядер и они находятся в halted состоянии, то разбудить их возможно только через STARTUP IPI, что и делается либо SL, либо SK. BIOS не может получить управление после SKINIT, до тех пор, пока либо явно не будет обращение к нему, либо при вхождении в SMM. SK (VMM) вполне в состоянии эмулировать BIOS и сбрасывать попытки перейти в SMM (насколько мне известно эмулировать SMM пока получалось только у AMD процессоров). Что вы имеете здесь ввиду не знаю, возможно из-за пробелов в знаниях. Вызов на себя позже по прерыванию, по таймеру, или какой-то другой механизм? В моём понимании BIOS это набор процедур, которые могут быть вызваны программным обеспечением. Соответственно, если SK будет эмулировать все обращения к нему из виртуальных машин, то он не получит управления до перезагрузки.
Вся проблема в том, что DRT стартует из недоверенной среды. Следовательно, если нет доверенного механизма для старта системы (SKINIT), то с одного кода может быть снята контрольная сумма, а после через DMA, враждебный гипервизор, через обновление кэша у процессора, он может быть подменён другим. Соответственно, итоговое число для аттестации получится правильным, но выполнен будет совсем другой код. Наличие SL в цепи загрузки это аппаратное требование, SKINIT передаёт управление на код ограниченного размера. Возможно совместить роль SK и SL, если хватит 64 килобайт. Насколько я понимаю, роль SL, в основном сводится к закрытию памяти SK от DMA, используя либо DEV (только по записи), либо IOMMU. Это сообщение отредактировал(а) Relkin - 22.6.2010, 20:55 |
||||
|
|||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 20 Всего: 223 |
А ему и не надо после, он получает его ДО. Если BIOS модифицирован злоумышленником, то он может сам разбудить AP ДО вызова любого загрузчика и создать там трояна, например переведя AP процессор в PM и перенаправив IDT на приватный кусок памяти с кодом вируса. После чего он может усыпить AP процессор в ожидании STARTUP IPI, который сделает не startup, а запуск вирусного кода.
В любом случае DRT позволяет злоумышленнику получить управление ДО вызова SL, и если найдется дыра в системе защиты, то скомпрометировать всю trusted platform. В случае SRT у злоумышленника такой возможности нет, и системе защиты не придется латать потенциальные дыры.
PS. Мы в оффтопике уже по самые уши, предлагаю завязывать ![]() |
|||
|
||||
Relkin |
|
||||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 21.12.2006 Репутация: 2 Всего: 2 |
Все мои комментарии выше написаны с учётом того, что система не доверена(любые виды зловредов + сама ОС с закладками). То есть до, сколько угодно, после - только под контролем гипервизора ( попытки запустить враждебный гипервизор можно либо сбрасывать, либо делать эмуляцию этих команд). skinit атомарна и отключает прерывания, команда startup ipi требует указания ей адреса, по которому расположен код инициализации процессора. То, что вы описали не получится ( то есть изменить IDT можно, но SL или SK всё равно выполнит свой код).
Можно и не возвращаться, а, например, если SK - XEN, развёртывать полностью новое окружение поверх текущего. Fliсker позволяет выделить критические части у ПО, выполнить их в изолированной среде, а после аттестовать. После он возвращает управление в недоверенную среду, но цель у него и не ставилась как защитить всю систему. В конце концов, можно запихнуть в гипервизор антивирус или файрвол, таким образом защитив их от враждебной ОС. Согласен. Это сообщение отредактировал(а) Relkin - 23.6.2010, 07:53 |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |