Аппаратные средства защиты информационных систем
Аппаратные средства защиты информационных систем — средства защиты информации и информационных систем, реализованных на аппаратном уровне. Данные средства являются необходимой частью безопасности информационной системы, хотя разработчики аппаратуры обычно оставляют решение проблемы информационной безопасности программистам. Эта проблема привлекла внимание многих фирм, в том числе и такой как Intel. В 80-х годах была разработана система 432. Но проект постигла неудача. Возможно, именно после неудачи "гранда" другие фирмы отказались от этой идеи. Задача аппаратной защиты вычислений была решена советскими разработчиками созданием вычислительного комплекса Эльбрус 1. В основе лежит идея контроля типов на всех уровнях системы, в том числе и на аппаратном. И основная заслуга разработчиков в планомерной её реализации. Общая модель защищенной системыРазработчиками Эльбруса была предложена следующая модель защищённой информационной системы [1]. Информационную систему в общем случае можно представить, как информационное пространство и обслуживающее его обрабатывающее устройство. Вычисления разбиваются на отдельные вычислительные модули, расположенные в информационном пространстве. Схему реализации вычислений можно представить следующим образом: обрабатывающее устройство под руководством программы может обращаться к этому пространству, читая и редактируя его. Для описания системы введем понятия
Узел — ячейка данных произвольного объема вместе со ссылкой на неё из обрабатывающего устройства. Ссылка не только описывает данные, но и содержит все права доступа к ним. Система должна обеспечивать контроль над тем, чтобы в операциях, использующих ссылки, не были использованы данные других типов а в операциях с аргументами других типов ссылка не могла быть модифицирована. Контекст программы — множество всех данных доступных для вычислений в конкретном модуле. Базовая функциональность модели защищенной информационной системыСоздание узла произвольного объема для хранения данных После появления новый узел должен быть
Удаление узла.
Смена контекста или смена процедуры, исполняемой обрабатывающим устройством. Новый контекст состоит из трех частей:
Общие методы и требования к переключению контекста:
Реализации могут быть разными (в том числе и без особых ссылок), но должны быть выдержаны основные принципы:
Анализ модели
Архитектура ЭльбрусВ архитектуре Эльбрус для разграничения типов данных вместе с каждым словом в памяти хранится его тег. По тегу можно определить является ли данное слово ссылкой или принадлежит к какому-либо специальному типу данных. Ссылки и работа с нимиВ ссылке содержится описание области (дескриптор), на которую она ссылается и права доступа. Дескриптор обязательно содержит базовый адрес и размер данных. Возможны следующие форматы дескриптора:
Дескриптор объекта служит для поддержания объектно-ориентированного программирования и содержит дополнительно описание приватной и публичной областей. Обращение в публичную область стандартно(сложение базового адреса и индекса вместе с последующим контролем размера. Если в командах обращения в память стоит признак приватных данных, то для разрешения обращения проверяется специальный регистр в процессоре, который хранит тип объекта, когда работают программы обработки данного типа. Таким образом, внутри программы становятся доступными приватные данные объектов этого типа. При доступе к ячейке памяти проверяется корректность ссылки. Важные операции для работы со ссылками:
Контексты и методы работы с нимиКонтекст модуля состоит из данных хранящихся в оперативной памяти и в файлах, и подается в виде ссылки на регистры процессора. Переключение контекста — это, по сути, вызов процедуры или возврат из неё. При запуске процедуры полный контекст исходного модуля сохраняется, а нового — создается. При выходе из процедуры её контекст уничтожается. Реализация защищенного стекаПри реализации процедурного механизма в Эльбрусе, для повышения эффективности выделения памяти для локальных данных используется механизм стека. Стековские данные подразделяются на три группы по своим функциональным характеристикам и уровню доступности для пользователя:
Стек процедур предназначен для данных, вынесенных на оперативные регистры. Каждая процедура работает только в своем окне, которое может пересекаться с предыдущим окном областью параметров (она же является областью возвращаемых значений). Обращение за данными (для пользователя) возможно только в текущее окно, всегда расположенное на оперативных регистрах. Стек пользователя предназначен для данных, которые пользователь считает нужным разместить в памяти. Стек связующей информации предназначен для размещения информации о предыдущей (вызвавшей) процедуре и используемой при возврате. При защищенном программировании пользователь не должен иметь возможность изменять эту информацию, поэтому для неё выделен специальный стек, доступный только операционной системе и аппаратуре. Стек связующей информации устроен так же, как стек процедур. Поскольку в стеке виртуальная память переиспользуется, встает проблема защиты данных. Она имеет два аспекта:
Первая проблема решается автоматической чисткой переиспользуемой памяти. Принцип решения второй проблемы следующий. Указатели на текущий фрейм процедуры можно сохранять только в текущем фрейме, либо передавать в качестве параметра в вызываемую процедуру (передавать вверх по стеку). Соответственно, указатель не может быть ни записан в глобальные данные, ни передан в качестве возвращаемого значения, ни записан в глубину стека. Примечания
Ссылки
|