Защита информационных процессов на аппаратном уровне
1. Защита на уровне расширений BIOS
При начальной загрузке ПЭВМ первичная активизация производится специальной программой процессора, которая хранится в памяти основного BIOS (базовая система ввода/вывода).
При включении питания управление передается на точку входа памяти, которая определяется производителем основного BIOS. Данный код BIOS производит тестирование оборудования, инициализацию векторов прерывания, активизацию видеосистемы и другие действия, которые зависят от специфики BIOS.
В состав BIOS входит типовая процедура поиска расширений BIOS (BIOS Extention). Расширение BIOS - это фрагмент исполняемого кода, который оформлен по следующим правилам:
1. Поиск расширений заключается в сканировании с шагом 512 байт области памяти с C000h до F000h с целью нахождения фиксированной двухбайтовой сигнатуры 55AAh.
2. После нахождения указанной сигнатуры анализируется следующий (третий, начиная с 55h) байт, который указывает область расширения BIOS в 512-байтных страницах (блоках).
3. Если в указанных позициях находится число, отличное от 0, то вычисляется арифметическая байтовая контрольная сумма от области памяти с байтом 55h на длину, указанную в третьем байте.
4. В случае совпадения этой суммы с нулем на четвертый (от первого байта 55h) байт передается управление.
5. Если в теле кода, на которое передано управление, встречается процедура REFT (с учетом состояния стека на момент вызова расширения), то произойдет возврат к основному BIOS, т.е. к процедуре дальнейшего поиска расширений.
Если фрагмент кода оформлен по заданным правилам, то на него передается управление в ходе поиска расширений BIOS.
Программирование расширенного BIOS дает возможность и механизм для реализации защитных функций на аппаратной уровне до загрузки операционной системы.
Объем расширения BIOS определяется объемом ПЗУ, где хранится BIOS. Поэтому на данном уровне может быть реализован достаточно небольшой объем функций безопасности компьютерной системы:
1. Идентификация и аутентификация пользователя (возможно с использованием аппаратного носителя).
2. Запрет несанкционированной загрузки операционной системы с избранных носителей (например, CD-ROM).
3. Контроль неизменности или целостности аппаратной или программной компоненты ПЭВМ.
Первый расширенный BIOS, код которого будет выполнен, - это расширение, которое определяет видеокарта (VideoBIOS). Оно размещено по адресу C000h.
Программирование расширенного BIOS связано с решением ряда проблем:
1. Программирование целесообразно с использованием языка низкого уровня в связи с малым объемом ПЗУ и необходимостью использования специальных функций низкого уровня.
2. Изменение состояний переменных кода при размещении данного кода в ПЗУ невозможно, что требует корректного перемещении кода в оперативную память с передачей управления.
3. На этапе выполнения кода BIOS доступен только ряд сервисных функций, которые могут быть использованы для программирования на низком уровне, - это сервис клавиатуры, реализованный в обработчиках 9h и 16h прерываний, видеосервис (10h прерывание) и сервисы диска (13h прерывание).
4. Если реализуемый пользователем код расширения содержит аварийные выходы, то корректное прерывание выполнения может быть выполнено только через аппаратную перезагрузку ПЭВМ.
5. Как можно реализовать расширения BIOS (возможность перепрограммирования ПЗУ)?
Пример программы расширения BIOS для троекратного запроса пароля до загрузки операционной системы
Рассмотрим пример программы расширения BIOS для парольной идентификации и аутентификации пользователей.
Необходимо троекратно производить запрос пароля и при верном его наборе работа ПЭВМ продолжается, в противном случае - происходит перезагрузка ПЭВМ, и процедура повторяется заново.
Данная программа реализована на языке Ассемблер.
,MODEL
.CODE
; данный модуль троекратно производит запрос пароля
; при правильном наборе пароля ПЭВМ загружается
; при троекратном неправильном наборе пароля ПЭВМ перезагружается
; BIOS equ TRUE - данная переменная должна быть установлена
; для компиляции кода при записи его в ПЗУ
BIOS equ TRUE
; макрос запроса пароля
; заголовок макроса запроса пароля (pass_password)
pass_password MACRO
mov ch,10
mov cl,36
mov di,offset null_str
call Put_string
mov ch,11
mov cl,36
mov di,offset null_str
call Put_string
mov ch,12
mov cl,36
mov di,offset null_str
call Put_string
END MACRO
org 0
zamok:
; формирование сигнатуры расширения BIOS - 55AAh
; длина кода 8192 байта
; начало исполняемого кода
IFDEF BIOS
db 055h
db 0AAh
db 16
ENDIF
; переход к исполняемому коду
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.