Национальный исследовательский ядерный университет «МИФИ»
Опубликован: 03.03.2010 | Доступ: свободный | Студентов: 5352 / 1318 | Оценка: 4.35 / 3.96 | Длительность: 24:14:00
ISBN: 978-5-9963-0267-3
Специальности: Разработчик аппаратуры
Лекция 5:

Аппаратные средства защиты информации в микропроцессоре

< Лекция 4 || Лекция 5: 12 || Лекция 6 >
Аннотация: Цель лекции: рассмотреть основные механизмы защиты памяти, поддерживаемые аппаратурой микропроцессора.

Аппаратные средства защиты информации в микропроцессоре

Если в памяти одновременно могут находиться несколько независимых программ, необходимы специальные меры по предотвращению или ограничению обращений одной программы к областям памяти, используемым другими программами. Программы могут содержать такие ошибки, которые, если этому не воспрепятствовать, приводят к искажению информации, принадлежащей другим программам. Последствия таких ошибок особенно опасны, если разрушению подвергнутся программы операционной системы. Другими словами, надо исключить несанкционированное воздействие программы пользователя на работу программ других пользователей и программ операционной системы.

Чтобы воспрепятствовать разрушению одних программ другими, достаточно защитить область памяти данной программы от попыток записи в нее со стороны других программ, а в некоторых случаях и своей программы (защита от записи), при этом допускается обращение других программ к этой области памяти для считывания данных.

В других случаях, например, при ограничениях на доступ к информации, хранящейся в системе, необходимо иметь возможность запрещать другим программам производить как запись, так и считывание в данной области памяти. Такая защита от записи и считывания помогает отладке программы, при этом осуществляется контроль каждого случая выхода за область памяти своей программы.

Для облегчения отладки программ желательно выявлять и такие характерные ошибки в программах, как попытки использования данных вместо команд или команд вместо данных в собственной программе, хотя эти ошибки могут и не разрушать информацию.

Средства защиты памяти должны предотвращать:

  • неразрешенное взаимодействие пользователей друг с другом;
  • несанкционированный доступ пользователей к данным;
  • повреждение программ и данных из-за ошибок в программах;
  • намеренные попытки разрушить целостность системы;
  • случайные искажения данных.

Средства защиты микропроцессора делятся на 2 группы:

  • защиту при управлении памятью и
  • защиту по привилегиям.

Средства управления памятью обнаруживают большинство программных ошибок.

До загрузки селектора в сегментный регистр и кэширования дескриптора осуществляется несколько контро-льных проверок:процессор проверяет, что поле Index селектора находится в пределах таблицы, определяемой его битом TI ;

  • при загрузке селектора в сегментный регистр данных ( DS, ES, FS, GS ) тип дескриптора должен разрешать считывание из сегмента.

    Только выполняемые сегменты для этих регистров не допускаются, но сегменты с разрешенными операциями выполнения/считывания допустимы;

  • в случае сегментного регистра стека ( SS ) в сегменте должны быть разрешены операции считывания и записи;
  • при загрузке регистра CS сегмент должен быть обязательно исполняемым;
  • в регистр LDTR можно загружать только селектор, указывающий на дескриптор сегмента типа LDT ;
  • в регистр TR можно загружать только селектор, указывающий на дескриптор сегмента состояния задачи.

Если хотя бы одна проверка дала отрицательный результат, то формируется особый случай и загрузка селектора не производится.

После загрузки селектора при фактическом обращении к памяти процессор контролирует, чтобы запрашиваемая операция (чтение/запись)для этого сегмента была разрешена. На этом этапе обнаруживаются и отвергаются попытки записи в сегмент кода или в только считываемые сегменты данных, а также считывание из сегмента кода, для которого разрешено только выполнение. Здесь же проводится проверка превышения сформированного смещения в сегменте длины сегмента, указанной в поле предела дескриптора. Такие ситуации невозможно выявить при загрузке селектора.

Защита по привилегиям фиксирует более тонкие ошибки и намеренные попытки нарушить целостность системы.

Под привилегиями понимается свойство, определяющее, какие операции и обращения к памяти разрешается производить процессору при выполнении текущей задачи.

На аппаратном уровне в процессоре поддерживаются 4 уровня привилегий. Распознаваемым процессором объектам назначается значение от 0 до 3, причем 0 соответствует высшему, а 3 - низшему уровню привилегий. С помощью указания уровня привилегий и правил защиты обеспечивается управляемый доступ к процедурам и данным операционной системы и других задач.

Привилегии устанавливаются значениями соответствующих полей в следующих основных системных объектах микропроцессора:

  • DPL - уровень привилегий сегмента (находится в байте доступа дескриптора сегмента);
  • RPL - биты <0,1> селектора, хранящегося в сегментном регистре;

    текущий уровень привилегий программы CPL задается полем RPL селектора, хранящегося в сегментном регистре CS ;

  • IOPL - поле регистра флагов, которое указывает, на каком уровне привилегий разрешено выполнять операции ввода/вывода, а также в некоторых других объектах, используемых, например, при переключении задач и обработке прерываний.

Так как число программ, которые могут выполняться на более высоком уровне привилегий, уменьшается к уровню 0 и так как программы уровня 0 действуют как ядро системы, уровни привилегий обычно изображаются в виде четырех колец защиты (Protection Rings) (рис. 5.1).

"Кольца защиты"

Рис. 5.1. "Кольца защиты"

Типовое распределение программ по кольцам защиты выглядит следующим образом:

  • уровень 0: ядро ОС, обеспечивающее инициализацию работы, управление доступом к памяти, защиту и ряд других жизненно важных функций, нарушение которых полностью выводит из строя процессор;
  • уровень 1: основная часть программ ОС (утилиты);
  • уровень 2: служебные программы ОС (драйверы, СУБД, специализированные подсистемы программирования и т. д.);
  • уровень 3: прикладные программы пользователя.

Аппаратные средства процессора, работающего в защищенном режиме, постоянно контролируют, что текущая программа достаточно привилегированна для того, чтобы:

  • выполнять некоторые команды, называемые привилегированными;
  • выполнять операции ввода/вывода на том или ином внешнем устройстве;
  • обращаться к данным других программ;
  • передавать управление внешнему (по отношению к самой программе) коду командами межсегментной передачи управления.

Привилегированные команды - это те команды, которые влияют на механизмы управления памятью, защиты и некоторые другие жизненно важные функции. Это, например, команды загрузки таблиц дескрипторов GDT, IDT, LDT, команды обмена с регистрами управления CRi. Они могут выполняться только программами, имеющими наивысший (нулевой)

уровень привилегий. Это приводит к тому, что простую незащищенную систему можно целиком реализовать только в кольце 0, так как в других кольцах защиты не будут доступны все команды.

Операции ввода/вывода разрешено выполнять программам, уровень привилегий которых не ниже значения, установленного в поле IOPL регистра флагов. То есть должно выполняться соотношение: CPL \le IOPL.

Обращение к данным других программ разрешается только на своем и менее привилегированном уровнях защиты (рис. 5.2).

Порядок взаимодействия программ и данных на разных уровнях привилегий

Рис. 5.2. Порядок взаимодействия программ и данных на разных уровнях привилегий

Передачи управления между программами ограничиваются только текущим кольцом защиты. В то же время в процессе выполнения любой программы необходимо обращаться к программам, находящимся на более высоком уровне привилегий, например, к драйверам или СУБД. Для этих целей используются специально установленные точки входа в эти программы (шлюзы). Передача управления на более низкий уровень привилегий осуществляется с помощью механизма подчиненных сегментов.

При передаче управления подчиненному сегменту действует правило: DPL>=max (CPL, RPL). Однако при этом подчиненный код будет выполняться на том же уровне привилегий, что и вызвавший его код ( CPL не изменится). Ограничивая передачу управления в пределах одного кольца защиты, процессор предотвращает произвольное изменение уровней привилегий. Ели бы значение CPL можно было легко изменить, все остальные средства защиты по привилегиям потеряли бы смысл.

< Лекция 4 || Лекция 5: 12 || Лекция 6 >
Владислав Салангин
Владислав Салангин

приветствую создателей курса и благодарю за доступ к информации! понимаю, что это уже никто не исправит, но, возможно, будут следующие версии и было бы неплохо дать расшифровку сокращений имен регистров итд, дабы закрепить понимание их роли в общем процессе. 

Михаил Королёв
Михаил Королёв