chizh писал(а):
Чтобы компьютер мог включить только хозяин, в настройках BIOS можно задать пароль.
Существуют и специальные решения, с использованием флешки-ключа и шифрования системного диска
http://technet.microsoft.com/ru-ru/maga ... ocker.aspxБез шифрования диска защита компьютера бессмысленна.
Вместо Flash можно попробовать использовать другие носители: Mini-CD, Floppy.
Ещё раз повторяю, ЭТО НЕ ФЛЭШКА! Это аппаратный ключ, т.е. по сути USB криптомодуль
А пароль БИОС - это, пардон, фуфло, и едва ли тянет на минимальный уровень безопасности.
Шифрование диска будет, но это потом.
phantom-84 писал(а):
1. Трудно сказать, будет ли это работать. Я практически ничего не знаю о программировании USB. Может быть можно организовать что-то вроде полного сохранения и послед. восстановления контекста контроллеров или действительно попробовать по минимуму воздействовать на контроллеры (без переинициализации), чтобы BIOS могла по-прежнему поддерживать работу клавиатуры. Можно попробовать выполнять софт-ресет после работы с ключом в надежде, что BIOS переинициализирует всю аппаратуру под себя, а "флаг" перезагрузки не затронит.
При определении конечной точки на порту хост-контроллера нужно обязательно сбрасывать порт, чтобы можно было потом по нулевому адресу установить адрес для конечной точки и с ней по этому адресу общаться. Это доступно описано, например, в Агурове.
phantom-84 писал(а):
2. Можно переключиться в защищенный режим, а с клавиатурой продолжать общаться через 8042-интерфейс, если конечно работа с ключом не нарушит режим эмуляции, обеспечиваемый BIOS.
Не получится, т.к. во-первых, BIOS работает в реальном режиме, а не в защищённом, т.е. никакой код эмуляции уже работать не будет, а во-вторых, как я уже говорил выше, нужно сбрасывать порты.
phantom-84 писал(а):
3. Тут нужно ориентироваться самостоятельно. В любом случае по-моему это несущественная проблема. Если что, можно выбрать и более подходящее средство/решение (например, писать на ассемблере/выполнять основной код в защищенном режиме).
Ну вот хотелось бы обойтись без написания на ассемблере.
phantom-84 писал(а):
4. По идее BIOS должно быть пофиг, какие сегментные регистры ты используешь для работы в нереальном режиме. В нереальном режиме базовые адреса сегментов должны устанавливаться корректными для реального режима. А лимиты ты можешь задать произвольно, но естественно код, указатель стека и параметры для BIOS должны оставаться в рамках 16-разрядных смещений, поэтому увеличивать лимит cs особого смысла нет - появится соблазн выполнять код со смещениями > 0xFFFF, что недопустимо.
Да соблазна никакого не появится. Тем более, что CS будет и так перегружен после любого дальнего прыжка. Основной вопрос, можно ли это как-то всё сделать прозрачно.