Similar presentations:
Защищенный режим процессов общего назначения
1. ЗАЩИЩЕННЫЙ РЕЖИМ ПРОЦЕССОВ ОБЩЕГО НАЗНАЧЕНИЯ
2. Вопросы: 1. Общие сведения. 2. Страничный способ работы с памятью. 3. Жизненный цикл виртуальной страницы памяти. 4. Работа с
периферийными устройствами ирежим DMA.
5. Требования скорости передачи и
безопасность информации.
3. 1.Общие сведения
4.
РАСПРОСТРАНЕННЫЕ АППАРАТНЫЕ ПЛАТФОРМЫ :Наиболее распространенные аппаратные платформы :
- Intel, в которой используются два основных режима:
- 32-разрядный режим х86;
- и 64-разрядный режим х64;
(рабочие станции, мощные серверные системы с большим числом
процессорных ядер)
- ARM, имеет две версии платформы :
- 32-битная платформа ARMv7 (смарт-контроллеры);
- 64-битная платформа ARMv8 (смартфоны).
5.
ЗАЩИЩЕННЫЙ РЕЖИМ РАБОТЫ ПРОЦЕССОРОВ ОБЩЕГО НАЗНАЧЕНИЯЗащищенный режим работы процессоров общего назначения
предоставляет разработчикам ОС возможность разделения
исполняемого кода и данных между процессами и ядром ОС.
Процессы обладают менышим набором прав:
- не имеют возможности чтения и записи данных в составе ОС,
- не имеют возможности прямого исполнения кода в составе ядра ОС.
6.
МЕХАНИЗМЫ МЕТОДОВ ПЕРЕДАЧИ УПРАВЛЕНИЯДля обеспечения возможности работы кода ядра ОС по запросу прикладного
процесса применяются специальные методы передачи управления,
базирующиеся на:
- механизме переключения задач;
- механизме переключения сегментов памяти,
- представляющий собой вызов специальной инструкции.
(В процессорах Intel такая инструкция называется SYSENTER (SYSCALL для 64битных приложений), а в процессорах семейства ARM такая инструкция носит
название SVC.)
7.
ВИРТУАЛЬНОЕ АДРЕСНОЕ ПРОСТРАНСТВОВ ОС общего назначения вводится понятие виртуального адресного
пространства как области для размещения виртуальной памяти.
Виды виртуальных адресных пространств:
- системное (для ядра);
- прикладное (для прикладных процессов).
8.
ВИРТУАЛЬНОЕ АДРЕСНОЕ ПРОСТРАНСТВОПример:
виртуальное адресное пространство прикладного процесса в
32-разрядной OC Windows 7 это непрерывный участок адресов,
от 0х0 до 0x7FFFFFFF (2 гигабайта), в котором размещаются
области виртуальной памяти кода и данные процесса.
9.
ВИРТУАЛЬНОЕ АДРЕСНОЕ ПРОСТРАНСТВОВ состав виртуального адресное пространство ядра ОС :
- области кода и данных ядра ОС,
- области кода и данных текущего процесса.
Такая организация виртуального адресного пространства ядра позволяет коду
ядра ОС осуществлять чтение и запись информации в область виртуального
адресного пространства текущего процесса напрямую, что резко повышает
производительность системы.
Прикладной процесс, в свою очередь, не имеет возможности какого бы то ни
было доступа к областям ядра ОС, что диктуется требованиями безопасности.
10.
СПОСОБЫ ОРГАНИЗАЦИИ ЗАЩИЩЕННОГО РЕЖИМА РАБОТЫ ПРОЦЕССОРОВ ОБЩЕГОНАЗНАЧЕНИЯ
Так, для платформы семейства Intel x86, если процессор функционирует в 32битном режиме, то для него определены четыре так называемых «кольца
защиты»: 0,1,2,3.
В современных ОС кольца 1 и 2 не используются, в кольце 0 располагается
ядро ОС, а в кольце 3 находятся адресные пространства прикладных
процессов.
Виртуальное адресное пространство задается сегментом памяти, а его
характеристики, соответственно, - описателем (дескриптором) сегмента.
В описателях сегментов указывается, к какому кольцу защиты относится
сегмент и задаваемое им адресное пространство.
11.
СПОСОБЫ ОРГАНИЗАЦИИ ЗАЩИЩЕННОГО РЕЖИМА РАБОТЫ ПРОЦЕССОРОВ ОБЩЕГОНАЗНАЧЕНИЯ
Для 64-битного режима работы процессоров семейства Intel
используется более упрошенное задание виртуального адресного
пространства:
- кольца защиты в нем отсутствуют, а различия между системным и
прикладным виртуальными адресными пространствами сводятся к
одному биту в описании сегмента.
12.
СПОСОБЫ ОРГАНИЗАЦИИ ЗАЩИЩЕННОГО РЕЖИМА РАБОТЫ ПРОЦЕССОРОВ ОБЩЕГОНАЗНАЧЕНИЯ
В процессорах семейства ARM для задания адресных пространств
используют уровни привилегий.
Прикладные процессы работают на уровне привилегий PL0, а системное
ПО - на уровне PL1.
В процессорах ARM имеется специальный регистр, который содержит в
себе информацию, какой интервал адресного пространства будет
относиться к ядру ОС, а какой - к прикладным процессам.
13.
Управление всеми виртуальными адресными пространствамиУправление всеми виртуальными адресными пространствами
выполняется ядром ОС.
Для каждого процесса в составе системы создается собственное
виртуальное адресное пространство, в котором размещаются код и
данные процесса, а также код и данные всех прикладных библиотек,
используемых процессом.
После того как процесс завершает свое выполнение, его виртуальное
адресное пространство уничтожается ОС.
14.
Два вида состояния процессораДля защищенного режима работы процессора также определены два вида состояния
процессора:
- системное (процессор может исполнять программный код в системном адресном
пространстве только в том случае, если он находится в системном состоянии).
- пользовательское (когда процессор находится в пользовательском состоянии, он
может исполнять программный код только из прикладного адресного
пространства).
При попытке исполнения программного кода в системном адресном пространстве
процессором, находящимся в пользовательском состоянии, автоматически
генерируется программное прерывание и управление передается ОС, определяющей
реакцию на возникновение события. Обычно в виде такой реакции используется
аварийное завершение процесса.
15.
2. Страничный способ работы с памятью. Виртуальные ифизические страницы
Страничный способ работы с памятью подразумевает что, имеющееся
виртуальное адресное пространство процесса или ядра ОС делится на
участки равного размера, называемые страницами.
Пример: в процессорах Intel и ARM минимальный размер этих участков совпадает
и равен 4 Кб.
К каждому из имеющихся в наличии участков виртуального адресного пространства
процесса может быть отнесена страница памяти. В этом случае такая страница
называется виртуальной страницей памяти.
16.
2. Страничный способ работы с памятью. Виртуальные ифизические страницы
Для процессоров семейства Intel все физическое адресное пространство равно
4 П6 (4 петабайт или 252), и только малая часть физического адресного
пространства может быть занята оперативной памятью в зависимости от
аппаратной конфигурации компьютера.
В общем случае физическое адресное пространство в современных
компьютерах не непрерывно - в нем присутствуют большие пустоты, в которые
не отображается вообще ничего.
Свободные и занятые области физического адресного пространства задаются
либо жестко при проектировании компьютеров на базе процессоров ARM,
либо их конфигурация может быть получена посредством сервисов BIOS для
компьютеров на базе процессоров Intel.
17.
2. Страничный способ работы с памятью. Виртуальные ифизические страницы
Аппаратура современных процессоров позволяет сопоставлять страницы
физического адресного пространства страницам виртуального адресного
пространства. Процесс такого сопоставления называется отображением физического
адресного пространства на виртуальное.
Если отображенная страница физического адресного пространства содержит в
себе участок оперативной памяти, то в виртуальном адресном пространстве, в
который отображена эта физическая страница, появится работоспособная область
оперативной памяти.
При этом процесс отображения построен таким образом, что адрес
физической страницы, отображенной на виртуальную страницу, может быть любым.
Кроме того, адрес этой физической страницы не может быть непосредственно
получен в виртуальном адресном пространстве - для получения физического адреса
необходимо воспользоваться услугами ядра ОС.
18.
2. Страничный способ работы с памятью. Виртуальные ифизические страницы
Механизм отображения физической памяти на виртуальное адресное
пространство в аппаратуре процессоров реализует защиту путем задания
доступности виртуальной страницы на чтение и запись.
В отличие от физической памяти обращение на запрещенный доступ к
странице виртуальной памяти вызовет немедленную реакцию аппаратуры
процессора в виде исключения (еxception) в процессорах Intel или выброса
(аboгt) в процессорах ARM, и управление получит ядро ОС, которое в итоге
определит свою реакцию на возникновение этого события.
Данный механизм позволяет очень гибко управлять виртуальными
страницами памяти со стороны ядра ОС и реализовывать различные
дисциплины работы с памятью.
19.
2. Страничный способ работы с памятью. Виртуальные ифизические страницы
Нетрудно подсчитать, что даже небольшое виртуальное адресное
пространство размером в 2 Гб содержит в себе 524 288 (0×80000) страниц размером
4 Кб. Если бы описание характеристик каждой страницы занимало минимальные 4
байта, для хранения такого описания потребовалось бы 097 152 байта памяти (2 Мб).
Также необходимо учитывать, что в современных ОС одновременно
функционируют десятки процессов, в состав каждого из которых входит виртуальное
адресное пространство.
Вывод:
прямое хранение информации о структуре виртуального адресного пространства
становится слишком накладным, поэтому в аппаратуре процессоров применяется
способ задания адресных пространств страничного режима работы на основе
каскадных таблиц страниц.
20.
2. Страничный способ работы с памятью. Виртуальные ифизические страницы
Основная идея каскадных таблиц страниц заключается в управлении
детализацией отображения физических страниц памяти на виртуальные. Для
задания отображения используются уровни детализации. В том случае, когда
необходимо выполнить детализацию отображения до минимально
возможной градации - страницы в 4 Кб, применяются все уровни детализации.
Так, в процессорах Intel возможно задание размера страницы в 4 К6, 2
или 4 Мб в зависимости от наличия расширения РАЕ и в 64-бит-ном режиме
возможно задание размера страницы в 1 Гб,
в процессорах ARM возможно задание страниц в 4 Кб, 64 К6, 1Мб и 16
М6 для 32-разрядной платформы, а в 64-разрядной платформе ARM в
зависимости от настроек возможно задание различных размеров страниц от 4
Кб до 1Гб.
21.
2. Страничный способ работы с памятью. Виртуальные ифизические страницы
Рассмотрим организацию таблиц страниц на примере 64-битного
режима (long-mode) процессоров Intel. B этом режиме имеется четыре
уровня вложенности таблиц, носящих названия PT, PD, PDPT и PML4.
Одиночная таблица каждого уровня для процессоров Intel занимает
ровно одну страницу в 4 Кб, один элемент в таблице занимает 8 байт.
Следовательно, в состав одиночной таблицы входит 512 элементов.
22.
2. Страничный способ работы с памятью. Виртуальные ифизические страницы
Виртуальный адрес у процессоров Intel в режиме 64-битной адресации разбивается на 5 компонентов,
как показано на рис. размер эффективного адреса при этом равен 48 бит, остальные 16 бит должны
быть все одновременно либо равны единице, либо нулю, повторяя значение бита 47 адреса.
Получившийся в итоге адрес называется каноническим.
Рис. Трансляция виртуального адреса в
процессорах Intel до 4Кб физической
страницы при использовании 64-битной
адресации
23.
2. Страничный способ работы с памятью. Виртуальные ифизические страницы
В составе процессоров семейства Intel имеется специальный регистр CR3, который содержит в
себе физический адрес первой таблицы из каскада таблиц страниц, носящей название РМL4.
Для одного виртуального адресного пространства имеется ровно одна таблица РМL4. Девять
бит адреса с 39 по 47 ответственны за выбор 8-байтового элемента в составе этой таблицы. Каждый из
этих элементов задаст физический адрес таблицы PDPT.
24.
2. Страничный способ работы с памятью. Виртуальные ифизические страницы
Такой же сценарий работы происходит на следующем уровне детализации - РDРТ. Один
элемент таблицы PDPT отвечает за 1 Гб виртуального адресного пространства. Этот элемент
выбирается битами с 30 по 38 виртуального адреса.
В составе элемента PDPTE имеется специальный бит PS (Page Size). Если этот бит установлен в единицу,
то элемент PDPTE будет сразу указывать на 1 Гб физической памяти, а биты виртуального адреса с 0 по 29 будут
задавать смещение конечной ячейки памяти внутри этой области. Также в элементе PDPTE имеется возможность
сброса бита Р и отказа от дальнейшей детализации | Гб виртуального адресного пространства.
25.
2. Страничный способ работы с памятью. Виртуальные ифизические страницы
Такой же сценарий работы происходит на следующем уровне детализации - РDРТ. Один
элемент таблицы PDPT отвечает за 1 Гб виртуального адресного пространства. Этот элемент
выбирается битами с 30 по 38 виртуального адреса.
В составе элемента PDPTE имеется специальный бит PS (Page Size). Если этот бит установлен в единицу,
то элемент PDPTE будет сразу указывать на 1 Гб физической памяти, а биты виртуального адреса с 0 по 29 будут
задавать смещение конечной ячейки памяти внутри этой области. Также в элементе PDPTE имеется возможность
сброса бита Р и отказа от дальнейшей детализации | Гб виртуального адресного пространства.
26.
2. Страничный способ работы с памятью. Виртуальные ифизические страницы
Одна таблица РРТ задает физические адреса 512 таблиц следующего уровня - PD. Таблица PD
определяет следующий уровень детализации адреса. Один элемент PDE задает область виртуальной
памяти размером 2 Мб. Структура элемента PDE почти аналогична структуре элемента PDPTE. Область
виртуальной памяти в 2 Мб можно задать одним участком физической памяти с помощью бита PS. В
этом случае смещение на этом участке памяти будет задаваться битами с 0 по 20 исходного
виртуального адреса.
Каждый элемент таблицы РDЕ позволяет перейти к следующему уровню детализации —
таблице РТ. Это последний уровень в каскадных таблицах, каждый элемент которого содержит в себе
описание одной страницы памяти размером 4 Кб. Каждая из этих страниц задастся своим физическим
адресом либо может быть помечена как отсутствующая.
27.
2. Страничный способ работы с памятью. Виртуальные ифизические страницы
Каждая из виртуальных страниц памяти может быть подключена к одной из физических
страниц.
Но одна физическая страница может отображаться одновременно на несколько виртуальных
страниц, находящихся как в одном, так и в разных адресных пространствах.
Одной из задач системного ПО является задача учета всех страниц физического адреса
компьютера таким образом, чтобы информация страниц памяти адресного пространства ОС не
была доступна в адресных пространствах прикладных процессов, а также адресные
пространства процессов не пересекались друг с другом без явно заданного требования наличия
общих страниц памяти.
28.
2. Страничный способ работы с памятью. Виртуальные ифизические страницы
В итоге в состав современных ОС входит специальная таблица учета страниц физического
адреса компьютера.
Эта таблица может быть ограничена только областями физического адреса, в которых присутствует
оперативная намять компьютера, либо задавать весь спектр физических адресов, ограничиваясь сверху
устройством, чья память отображается на физический адрес компьютера в наиболее старших адресах. B
В OC Windows такая таблица носит название PFN-table. Аббревиатура PFN расшифровывается как Page
Frame Number — номер страничного фрейма. Каждый элемент таблицы отвечает за одну страницу
физической памяти размером 4 Кб. В этом элементе содержатся сведения о физической странице: свободна
страница или занята, а также. какому процессу она принадлежит в случае ее занятости.
B OC Linux применяется немного другой способ учета физической памяти. В ядре системы специальным
образом учитывается только свободная физическая память, а занятая память учитывается в таблицах
страниц виртуальных адресных пространств.
Для учета свободной физической памяти в Linux имеется специальный массив указателей на таблицы
физической памяти. Массив состоит из 10 элементов: 0-й элемент массива указывает на список свободных
областей физической памяти размером 4 Кб, 1-й элемент массива указывает на список свободных областей
физической памяти размером 8 Кб, третий элемент указывает на список областей размером 16 К6 и т.д.
29.
2. Страничный способ работы с памятью. Виртуальные ифизические страницы
Как в OC Windows, так и в OC Linux ядро системы всегда стремится к удержанию заданного объема
физической памяти в свободном состоянии. В том случае, если общий объем свободной физической
памяти становится меньше определенного значении, то системой инициируется процессе подкачки
(своппинг), при котором данные, хранящиеся в занятых страницах физической памяти, постепенно
перебрасываются на системный накопитель, а освобождающиеся при этом страницы физической
памяти поступают обратно в свободную память.
Несомненно, что перед повторным применением физической страницы памяти она должна
быть очищена, т. е. освобождена от хранящихся в ней данных. Очистка страницы производится
занесением в ее ячейки значения 0. Только после этого физическая страница может быть повторно
выделена для нужд ядра либо для процессов в составе системы.
Стратегия очистки страниц памяти может определять требование обнуления либо сразу после
освобождения страницы памяти, либо перед се повторном выделении по запросу.
30.
3. Жизненный цикл виртуальной страницы памятиРанее уже отмечалось, что при создании процесса в ОС формируется его виртуальное адресное
пространство, которое изначально представляет собой место для размещения памяти процесса
без выделения самой памяти.
Подсистема загрузчика в составе ядра ОС выполняет загрузку исполняемого файла программы, а
также файлов динамически загружаемых библиотек. Для того чтобы выполнить такую загрузку в
адресном пространстве процесса, выделяется память по месту нахождения программы. Ядро ОС
вносит требуемые изменения в таблицы страниц адресного пространства процесса, после чего
оперативная память компьютера отображается на виртуальные страницы.
В составе исполняемого файла присутствует код программы и ее данные в виде специальных
секций файла. При необходимости загрузчик выполняет предварительную обработку кода и данных
программы вписывает актуальные адреса по месту точек перемещения (relocation points) в коде
программы, а также инициализирует переменные.
31.
3. Жизненный цикл виртуальной страницы памятиЛогика программы в процессе работы периодически требует дополнительного выделения
памяти. В этом случае в адресном пространстве процесса формируются области динамической
памяти, так называемые кучи, по месту размещения которых также выполняется выделение памяти
из имеющегося пула свободных страниц.
При возникновении ситуации нехватки в ОС оперативной памяти происходит активизация
механизма подкачки, выполняющего перебрасывание данных из оперативном памяти компьютера на
жесткий диск в специально выделенный файл или раздел диска
Однако, например, в OC Windows действует стратегия, согласно которой менеджер памяти в
составе ядра ОС начинает сбрасывать страницы памяти на диск даже в том случае, если в системе
имеется еще достаточное количество свободной оперативной памяти
32.
3. Жизненный цикл виртуальной страницы памятиМеханизм работы с виртуальной памятью процессоров Intel предоставляет ОС некоторую
информацию об использовании процессом страниц виртуальной памяти. Описание страницы в
таблице страниц содержит в себе два специальных бита. Каждая из страниц, к которой хотя бы раз
осуществлялся доступ, помечается специальным битом A (Accessed). Если доступ был на запись, то
страница дополнительно помечается битом D (Dirty). Эта информация дает некоторую возможность
менеджеру физической памяти выбирать кандидата на свопинг (англ. swap — обмен, замена) среди
страниц процесса. Заметим, что в процессорах ARM 7-й версии такие специальные биты отсутствуют, в
таблицах страниц процессоров ARM имеется бит AF, позволяющий программно выполнить эмуляцию
алгоритма работы флагов А и D в таблицах страниц процессоров Intel.
В общем случае прикладной процесс работает с выделенной памятью в своем адресном
пространстве без каких-либо ограничений. Однако в каждый момент времени любая из страниц
памяти процесса может находиться как в оперативной памяти, так и на диске.
Если при возникновении доступа процесса к памяти она в этот момент располагается на диске, то
ОС выполняет обратные действия по размещению данных в странице оперативной памяти и
отображению физической страницы на адресное пространство процесса.
33.
3. Жизненный цикл виртуальной страницы памятиПеремещение страницы памяти на диск производится в два этапа:
- на первом этапе менеджер памяти ОС помечает страницы процесса как кандидаты для перемещения на
внешний накопитель и помещает их в специальный список,
- на втором этапе страницы по очереди перемещаются на жесткий диск компьютера.
Если процесс обращается к странице памяти в то время, когда она находится в списке страниц, помеченных
на своппинг, то такая страница просто возвращается обратно в адресное пространство процесса.
В современных ОС имеется три комбинации прав доступа к странице, с которыми она может быть
помещена в адресное пространство процесса: страница только на чтение (read-оnlу), страница с доступом
на чтение и запись (read-write), а также страница на запись с копированием (writе-сору).
Если права доступа к виртуальной странице ограничиваются чтением, то возможно отображение
одной и той же страницы физической памяти с ее данными на несколько виртуальных страниц. Такой
подход позволяет экономить страницы физической памяти.
Например, если в ОС имеется несколько процессов одной и той же программы, то все области
программы с правами доступа только на чтение будут развернуты менеджером памяти на физические
страницы в единственном экземпляре. Затем полученные физические страницы памяти будут отображены
на виртуальные адресные пространства каждого из процессов этой программы с правами доступа только на
чтение. Если права доступа к странице дают возможность как чтения, так и записи, то в какой-то момент
времени возможно отображение страницы физической памяти только на одну виртуальную страницу.
34.
3. Жизненный цикл виртуальной страницы памятиПраво доступа write-сору на запись с копированием работает согласно следующему алгоритму:
пока к виртуальной странице производятся обращения только на чтение, то на виртуальную страницу
отображается единственная исходная страница физической памяти. Как только по адресу внутри
страницы начинает выполняться операция записи, менеджер памяти ОС выделяет новую физическую
страницу памяти, копирует данные из исходной страницы на вновь выделенную страницу, а затем
отображает новую страницу по имеющемуся виртуальному адресу. В результате операция записи
выполняется не в исходную страницу, а в ее копию.
При завершении работы процесса происходит уничтожение его адресного пространства, а ее
выделенные страницы памяти, относящиеся к этому процессу, освобождаются как в физической
памяти, так и в области подкачки на накопителе.
35.
3. Жизненный цикл виртуальной страницы памятиС точки зрения безопасности крайне важно соблюдение ОС разделения памяти процессов в
составе системы.
Никакие операции над памятью, за исключением явно разрешенных механизмом
безопасности, не должны приводить к ситуации, при которой данные одного процесса
становятся доступными другому процессу.
Еще более важным является требование недоступности со стороны процессов памяти ядра ОС
как на запись, так и на чтение — доступом к памяти ядра операционной системы должны обладать
только собственно компоненты ядра.
Необходимо также обратить внимание на требование недоступности данных из хранилища
своппинга стороннему наблюдателю.
Во время работы ОС данные своппинга защищаются от доступа механизмами ядра.
Однако эти данные могут быть доступны злоумышленнику между двумя перезагрузками ОС. Как
одно из средств защиты информации в файле подкачки может рассматриваться вариант шифрования
файла подкачки.
36.
4. Работы с периферийными устройствами и режим DMAВ составе ядра современных ОС имеется подсистема ввода-вывода, основными задачами
которой являются:
- управление аппаратурой компьютера,
- управление структурами данных, обрабатываемыми этой аппаратурой.
В состав подсистемы ввода-вывода входят специальные программные компоненты,
обеспечивающие требуемый функционал этой подсистемы, называемые драйверами.
Основные отличия драйвера от обычной программы заключаются в том, что драйвер в общем
случае получает управление и обрабатывает данные только по запросу от ядра или программы.
Чтобы обработка запросов драйвером стала возможной, он регистрирует в подсистеме ввода-вывода
список типов запросов, которые он может обрабатывать.
Операционная система формирует список драйверов, которые должны выполняться на
компьютере, на основе анализа данных, полученных от аппаратуры шин РСІ и USB. Перечисленные
шины поддерживают механизм уведомления ОС об устройствах, имеющихся в наличии на шине, а
также о появлении новых устройств или отключении имеющихся. Этот механизм носит общее
название Plug-and-Play. В ответ на уведомление ОС при необходимости производит инсталляцию и
загрузку требуемого драйвера в состав подсистемы ввода-вывода.
37.
4. Работы с периферийными устройствами и режим DMAДля управления аппаратурой и обеспечения параллелизма операций обработки в ОС вводится
понятие запроса ввода-вывода. Каждый запрос ввода-вывода представляет собой структуру,
предписывающую выполнение одного действия над данными посредством работы драйверов и
периферийных устройств, а также, возможно, содержащую сами данные. Драйверы один за другим
обрабатывают запрос ввода-вывода в соответствии логической схеме обработки запроса до тех пор,
пока он не будет выполнен. Согласно терминологии, запрос ввода-вывода передается на обработку от
вышележащего драйвера к нижележащему. Драйвер в конце цепочки обработки запроса,
взаимодействующий непосредственно с аппаратурой компьютера, называется низкоуровневым, или
аппаратным драйвером. Сама представленная схема построения обработки запросов обычно
называется многослойной структурой подсистемы ввода-вывода.
Подавляющее большинство современных периферийных устройств имеют в своем составе
контроллер, который работает под управлением собственной программы. Работа аппаратного
драйвера сводится к выдаче команд контроллеру в составе аппаратного устройства, а в последующем
к анализу результатов обработки этой команды.
38.
4. Работы с периферийными устройствами и режим DMAРассмотрим для примера базовый принцип работы SATA контроллера в составе накопителя. При
необходимости чтения данных из накопителя в память компьютера драйвер выдает контроллеру
соответствующий запрос, а затем приостанавливает свою работу до тех пор, пока запрос не будет
выполнен. Пока контроллер выполняет работу по чтению данных, процессор компьютера занимается
выполнением других задач. Как только все данные оказываются прочитанными в память, контроллер
генерирует прерывание, реакцией на возникновение которого является передача управления от ядра
ОС аппаратному драйверу. Драйвер, в свою очередь, помечает соответствующий запрос ввода-вывода
как выполненный и возвращает его наверх обратно по цепочке драйверов к инициировавшей запрос
прикладной программе.
Чтобы подобная обработка запросов стала возможной, необходимо предоставление аппаратуре
периферийных устройств прямого доступа к оперативной памяти компьютера, минуя процессор. Такой
доступ носит название DMA (Direct Memory Access). В итог при необходимости чтения данных из файла
в виртуальную память программа вызывает соответствующую функцию операционной системы
(например, fread()), которая формирует запрос ввода-вывода к цепочке драйверов и аппаратному
контроллеру в составе накопителя.
39.
4. Работы с периферийными устройствами и режим DMAТак как периферийные устройства компьютера имеют доступ напрямую к оперативной памяти,
они не осведомлены о структуре виртуальной памяти процесса, инициировавшего запрос, поэтому ОС
преобразует запрос на чтение и вместо адреса и размера буфера в виртуальной памяти процесса
ядром ОС будет создана специальная структура, содержащая последовательность физических страниц
памяти. В состав структуры также входит указатель на исходный буфер, размер буфера и смещение
начала буфера от начала первой страницы памяти из последовательности. Иногда исходный буфер в
виртуальной памяти процесса дополнительно отображается ядром ОС в виртуальное адресное
пространство ядра для обеспечения независимости от переключения процессов в системе. В OC
Windows подобная структура носит название MDL (Memory Descriptor List).
Современные контроллеры периферийных устройств могут принимать на вход запросы,
приближенные к структуре MDL. Возвращаясь к контроллеру SATA, устройство получает запрос на
чтение данных и перечень физических страниц оперативной памяти, в которые необходимо записать
данные по итогам операции чтения. Дальше операция чтения выполняется периферийным
устройством независимо от основного процессора.
40.
4. Работы с периферийными устройствами и режим DMAВ процессе выполнения аппаратурой операций с физической памятью важно, чтобы страницы
памяти, содержащие в себе буфер данных, не были подвергнуты операции подкачки страниц. Для
этого ОС помечает такие страницы специальным флагом, который запрещает разрыв связи между
физической и виртуальной страницей. После выполнения операции аппаратурой периферийного
устройства эта блокировка снимается и страницы могут снова рассматриваться как объекты для
своппинга.
41.
5. Требования скорости передачи и безопасность информации.Случай FireWire
Посмотрим на рассмотренное в предыдущем подразделе в следующем ракурсе: как достигается
высокая скорость работы периферийного оборудования при минимальной загрузке процессора? Это
осуществляется путем отделения процесса работы периферийного оборудования с оперативной
памятью от деятельности центрального процессора. Механизм такого взаимодействия появился давно
и получил название Direct Memory Access. Подробное рассмотрение данного механизма выходит за
рамки пособия, отметим лишь, что он предполагает выделение периферийному устройству некоторой
области памяти для самостоятельной записи.
Отметим, что данная концепция противоречит классическим законам Фон Неймана, и,
соответственно, ее применение может быть не учено при моделировании угроз системе. Пусть далее
периферийные устройства рассматриваются в качестве субъектов доступа. Как программное средство
защиты может контролировать их доступ к памяти? Ответ выглядит обескураживающе: никак.
Получается, нужно доверять всем таким периферийным устройствам. Что для этого нужно?
Контролировать перечень таких устройств.
42.
5. Требования скорости передачи и безопасность информации.Случай FireWire
Для устройств, не позиционирующих себя как съемные, данный подход вполне уместен: как правило,
предполагается, что владелец информации не допустит злоумышленника до начинки своего компьютера.
В начале своего развития технология DMA предлагалась для использования именно контроллерами
высокоскоростных периферийных устройств, подключаемых напрямую к материнской плате и находящихся внутри
корпуса. Со временем развитие цифровой техники привело к появлению внешних высокоскоростных интерфейсов,
одним из первых стал интерфейс FireWire. В настоящее время число внешних интерфейсов, разрешающих
использование DMA, существенно выше: это PCI, PCI Express, FireWire, Thunderbolt, ExpressCard. PCMCIA или Cardbus.
Данное обстоятельство существенно повышает возможности нарушителя по подключению к компьютеру DMAсовместимого устройства. Основные особенности механизма DMA сводятся к следующему:
включен при загрузке;
не требует аутентификации для чтения и записи области памяти;
значительно влияет на производительность компьютера в случае его отключения.
К порту с поддержкой DMA с помощью кабеля (USB, FireWire и т.д.) можно подключить другой компьютер (или
ноутбук) и запустить на нем ПО для чтения и записи содержимого памяти атакуемого компьютера.
43.
5. Требования скорости передачи и безопасность информации.Случай FireWire
Рассмотрим историю исследования данной проблемы согласно статье [Щербаков, 2016]
В 2004- 2005 гг. исследователи из Аахенского университета опубликовали результаты своей работы,
касающейся проведения DMA-атаки с использованием плеера iPod компании Apple, подключаемого к
компьютеру через интерфейс FireWire. По информации исследователей, они могли копировать информацию,
выводимую на монитор компьютера, а также получать криптографические ключи, считывая информацию с
помощью технологии DMA. Выполняя с помощью DMA операции записи, они могли изменять информацию на
мониторе компьютера, а также проводить атаки на персональный компьютер (ПК) по получению
привилегированного доступа и осуществлять инъекцию кода в системную память.
В 2006 г. эксперт новозеландской компании, предоставляющей услуги в области компьютерной
безопасности, указал на возможность проведения DMA-атаки на ноутбук с установленной OC Windows ХР, в
ходе которой также использовался интерфейс FireWire. Широкую известность DMA-атаки получили после 2008
г., когда исследователи из Принстонского университета обнаружили, что механизм DMA может быть
использован для компрометации системы шифрования BitLocker корпорации Microsoft. Исследователи смогли
восстановить секретные ключи в таких системах шифрования, как BitLocker, FileVault и dm-crypt.
44.
5. Требования скорости передачи и безопасность информации.Случай FireWire
В 2009 г. польские исследователи показали, что технология DMA, реализованная в подсистеме Intel ME,
может быть использована для осуществления записи информации в память подключенного к сети компьютера.
Это стало возможным благодаря уязвимости, позволяющей проводить инъекцию кода в среду МЕ. Указанный
код не представлял собой полнофункциональную вредоносную программу, но подтвердил возможность
проведения подобных атак.
В 2010 г. французские исследователи продемонстрировали атаку, использующую уязвимость во
встроенном ПО работающего сетевого адаптера. Скомпрометированный сетевой адаптер использовался при
атаке на хост-компьютер, в ходе которой был создан бэкдор (от англ. back door черный ход). Исследователи
разработали способ, с помощью которого можно было получить доступ к внутренней памяти сетевого
адаптера. Осуществление такого доступа является очень сложной и нетривиальной задачей.
В 2012 г. американскими исследователями была продемонстрирована еще одна атака, позволяющая
обходить механизм шифрования жесткого диска, Эта атака направлена на технологию шифрования,
реализованную в центральном процессоре компьютерной системы. Особенность применяемой технологии
шифрования заключалась в том, что информация о ключах хранилась в регистрах процессора и никогда не
загружалась в ОЗУ компьютера.
45.
5. Требования скорости передачи и безопасность информации.Случай FireWire
Основная идея атаки состояла в том, чтобы провести инъекцию кода в пространство ядра. В ходе атаки
использовался обработчик прерываний. Вредоносный код осуществлял перезапись информации о ключах из
регистров процессора в оперативную память, где она посредством использования технологии DMA становилась
доступной для атакующего.
В 2013 г. греческими исследователями была продемонстрирована атака, при проведении которой
использовался выполняемый на графическом адаптере программный код, предназначенный для перехвата нажатий
клавиатуры ПК. Для поиска содержимого буфера клавиатуры осуществлялось сигнатурное сканирование. В ходе атаки
при проведении сканирования требовалось использование ресурсов центрального процессора в режиме ядра.
Итак, широкую известность идея атаки получила в 2004 г., работы по данной тематике появляются с
небольшой периодичностью, и тем не менее производители аппаратуры продолжают активно внедрять механизмы
DMA в свои решения, например, уже в 2010-х гг. появился интерфейс USB 3.0 с поддержкой DMA, и, более того, на
интерфейс USB некоторые производители выводят JTAG для отладки материнской платы. Почему такое происходит?
Потому что возможность такой атаки не предполагается в наиболее распространенных моделях угроз. Пользователь
ПК доверяет внешним устройствам примерно так же, как, например, сетевым картам, да и, как правило, не будет
предоставлять бесконтрольный доступ к своему компьютеру всем желающим, если одновременно обрабатывает на
нем информацию, которую хотел бы скрыть.
46.
5. Требования скорости передачи и безопасность информации.Случай FireWire
Основная идея атаки состояла в том, чтобы провести инъекцию кода в пространство ядра. В ходе атаки
использовался обработчик прерываний. Вредоносный код осуществлял перезапись информации о ключах из
регистров процессора в оперативную память, где она посредством использования технологии DMA становилась
доступной для атакующего.
В 2013 г. греческими исследователями была продемонстрирована атака, при проведении которой
использовался выполняемый на графическом адаптере программный код, предназначенный для перехвата нажатий
клавиатуры ПК. Для поиска содержимого буфера клавиатуры осуществлялось сигнатурное сканирование. В ходе атаки
при проведении сканирования требовалось использование ресурсов центрального процессора в режиме ядра.
Итак, широкую известность идея атаки получила в 2004 г., работы по данной тематике появляются с
небольшой периодичностью, и тем не менее производители аппаратуры продолжают активно внедрять механизмы
DMA в свои решения, например, уже в 2010-х гг. появился интерфейс USB 3.0 с поддержкой DMA, и, более того, на
интерфейс USB некоторые производители выводят JTAG для отладки материнской платы. Почему такое происходит?
Потому что возможность такой атаки не предполагается в наиболее распространенных моделях угроз. Пользователь
ПК доверяет внешним устройствам примерно так же, как, например, сетевым картам, да и, как правило, не будет
предоставлять бесконтрольный доступ к своему компьютеру всем желающим, если одновременно обрабатывает на
нем информацию, которую хотел бы скрыть.
informatics