Jump to content

Защита памяти

(Перенаправлено с ключа защиты памяти )

Защита памяти — это способ управления правами доступа к памяти на компьютере, который является частью большинства современных архитектур набора команд и операционных систем . Основная цель защиты памяти — предотвратить доступ процесса к памяти, которая ему не была выделена. Это предотвращает влияние ошибки или вредоносного ПО внутри процесса на другие процессы или саму операционную систему. Защита может охватывать все доступы к определенной области памяти, доступы на запись или попытки выполнить содержимое области. Попытка несанкционированного доступа [а] памяти приводит к аппаратному сбою , например, ошибке сегментации , исключению нарушения памяти , что обычно приводит к ненормальному завершению нарушающего процесса. Защита памяти для обеспечения компьютерной безопасности включает в себя дополнительные методы, такие как рандомизация структуры адресного пространства и защита исполняемого пространства .

Сегментация

[ редактировать ]

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

Архитектура x86 имеет несколько функций сегментации, которые полезны для использования защищенной памяти в этой архитектуре. [1] В архитектуре x86 глобальная таблица дескрипторов и локальные таблицы дескрипторов могут использоваться для ссылки на сегменты в памяти компьютера. Указатели на сегменты памяти на процессорах x86 также могут храниться в регистрах сегментов процессора. Первоначально процессоры x86 имели 4 сегментных регистра: CS (сегмент кода), SS (сегмент стека), DS (сегмент данных) и ES (дополнительный сегмент); позже были добавлены еще два сегментных регистра – FS и GS. [1]

Выгружаемая виртуальная память

[ редактировать ]

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

Большинство компьютерных архитектур , поддерживающих подкачку, также используют страницы в качестве основы для защиты памяти.

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

Некоторые операционные системы настраивают отдельное адресное пространство для каждого процесса, что обеспечивает жесткие границы защиты памяти. [2] Это невозможно для непривилегированного [с] приложение может получить доступ к странице, которая не была ему явно выделена, поскольку каждый адрес памяти либо указывает на страницу, выделенную этому приложению, либо генерирует прерывание, называемое ошибкой страницы . Нераспределенные страницы и страницы, выделенные любому другому приложению, не имеют адресов с точки зрения приложения.

Ошибка страницы не обязательно может указывать на ошибку. Страничные ошибки используются не только для защиты памяти. Операционная система может управлять таблицей страниц таким образом, чтобы ссылка на страницу, которая ранее была выгружена во вторичное хранилище, [д] вызывает ошибку страницы. Операционная система перехватывает ошибку страницы, загружает требуемую страницу памяти, и приложение продолжает работу, как будто никакой ошибки не произошло. Эта схема, тип виртуальной памяти , позволяет перемещать данные в памяти, которые в данный момент не используются, во вторичное хранилище и обратно прозрачным для приложений способом, чтобы увеличить общий объем памяти.

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

В некоторых системах механизм ошибок страниц также используется для защиты пространства исполняемых файлов , например W^X .

Ключи защиты

[ редактировать ]

Ключ защиты памяти (MPK) [3] Механизм делит физическую память на блоки определенного размера (например, 4 КиБ), каждому из которых соответствует числовое значение, называемое ключом защиты. С каждым процессом также связано значение ключа защиты. При доступе к памяти аппаратное обеспечение проверяет, соответствует ли ключ защиты текущего процесса значению, связанному с блоком памяти, к которому осуществляется доступ; если нет, возникает исключение. Этот механизм был представлен в архитектуре System/360 . Он доступен на современных мэйнфреймах System z и активно используется операционными системами System z и их подсистемами.

Описанные выше ключи защиты System/360 связаны с физическими адресами. Это отличается от механизма ключей защиты, используемого такими архитектурами, как Hewlett-Packard / Intel IA-64 и Hewlett-Packard PA-RISC , которые связаны с виртуальными адресами и допускают использование нескольких ключей для каждого процесса.

В архитектурах Itanium и PA-RISC с переводами ( записями TLB ) связаны ключи (Itanium) или идентификаторы доступа (PA-RISC). Запущенный процесс имеет несколько регистров ключей защиты (16 для Itanium, [4] 4 для PA-RISC [5] ). Трансляция, выбранная виртуальным адресом, имеет свой ключ по сравнению с каждым из регистров ключа защиты. Если какой-либо из них совпадает (плюс другие возможные проверки), доступ разрешен. Если ни один из них не соответствует, генерируется ошибка или исключение. Обработчик ошибок программного обеспечения может, при желании, сравнить отсутствующий ключ с большим списком ключей, поддерживаемым программным обеспечением; таким образом, регистры ключей защиты внутри процессора можно рассматривать как программно-управляемый кэш большего списка ключей, связанных с процессом.

PA-RISC имеет 15–18 бит ключа; Для Itanium требуется не менее 18. Ключи обычно связаны с доменами защиты , такими как библиотеки, модули и т. д.

В x86 ключи защиты [6] архитектура позволяет помечать виртуальные адреса страниц пользователей любым из 16 ключей защиты. Все страницы, помеченные одним и тем же ключом защиты, составляют домен защиты. Новый реестр содержит разрешения, связанные с каждым доменом защиты. Операции загрузки и сохранения проверяются как по разрешениям таблицы страниц, так и по разрешениям ключа защиты, связанным с доменом защиты виртуального адреса, и разрешены только в том случае, если оба разрешения разрешают доступ. Разрешения ключа защиты можно установить из пользовательского пространства, что позволяет приложениям напрямую ограничивать доступ к данным приложения без вмешательства ОС. Поскольку ключи защиты связаны с виртуальным адресом, домены защиты относятся к каждому адресному пространству, поэтому каждый процесс, работающий в разных адресных пространствах, может использовать все 16 доменов.

Защитные кольца

[ редактировать ]

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

Имитированная сегментация

[ редактировать ]

Моделирование — это использование мониторинга программы для интерпретации инструкций машинного кода некоторых компьютерных архитектур. Такой симулятор набора команд может обеспечить защиту памяти, используя схему, подобную сегментации, и проверяя целевой адрес и длину каждой инструкции в реальном времени перед их фактическим выполнением. Симулятор должен вычислить целевой адрес и длину и сравнить их со списком допустимых диапазонов адресов, которые он хранит относительно среды потока , например, с любыми блоками динамической памяти, полученными с момента создания потока, а также с любыми действительными слотами общей статической памяти. Значение слова «действительный» может меняться на протяжении всего существования темы в зависимости от контекста. Иногда может быть разрешено изменять статический блок памяти, а иногда нет, в зависимости от текущего режима выполнения, который может зависеть или не зависеть от ключа хранилища или состояния супервизора. [ нужна ссылка ]

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

Адресация на основе возможностей

[ редактировать ]

Адресация на основе возможностей — это метод защиты памяти, который не используется в современных коммерческих компьютерах. В этом методе указатели заменяются защищенными объектами (называемыми возможностями ), которые могут быть созданы только с использованием привилегированных инструкций, которые могут выполняться только ядром или каким-либо другим процессом, уполномоченным на это. [ нужна ссылка ] Это эффективно позволяет ядру контролировать, какие процессы к каким объектам в памяти могут обращаться, без необходимости использования отдельных адресных пространств или переключателей контекста . Лишь несколько коммерческих продуктов использовали безопасность на основе возможностей: Plessey System 250 , IBM System/38 , Intel iAPX 432 архитектура и KeyKOS . Подходы, основанные на возможностях, широко используются в исследовательских системах, таких как браузер EROS и Combex DARPA. Концептуально они используются в качестве основы для некоторых виртуальных машин , в первую очередь Smalltalk и Java . В настоящее время финансируемый DARPA проект CHERI в Кембриджском университете работает над созданием современной машины, которая также поддерживает устаревшее программное обеспечение.

Динамическое окрашивание

[ редактировать ]

Динамическое искажение — это метод защиты программ от несанкционированного доступа к памяти. Когда память выделяется во время выполнения, этот метод искажает и память, и соответствующий указатель, используя одну и ту же метку порчи. Метки порчи затем соответствующим образом распространяются во время выполнения программы и проверяются каждый раз, когда к адресу памяти m осуществляется доступ через указатель p ; если метки, связанные с m и p, различаются, выполнение останавливается и сообщается о незаконном доступе. [7] [8]

Процессоры SPARC M7 (и выше) реализуют динамическое искажение аппаратно. Oracle позиционирует эту функцию как Silicon Secured Memory (SSM) (ранее называвшуюся Application Data Integrity (ADI)). [9]

Конструкция процессора lowRISC включает динамическое изменение под названием Tagged Memory. [10]

Уровень защиты конкретной реализации можно измерить по тому, насколько точно она соответствует принципу минимальных привилегий . [11]

Защита памяти в разных операционных системах

[ редактировать ]

В разных операционных системах используются разные формы защиты или разделения памяти. Хотя защита памяти была распространена на большинстве мэйнфреймов и многих миникомпьютерных системах с 1960-х годов, настоящее разделение памяти не использовалось в домашних компьютеров операционных системах до тех пор, пока в 1987 году не была выпущена OS/2 (и в ОС RISC ). В предыдущих системах такое отсутствие защиты даже использовался как форма межпроцессного взаимодействия путем отправки указателя между процессами. Процессы могут получать доступ к системной памяти в операционных системах семейства Windows 9x . [12]

Некоторые операционные системы, реализующие защиту памяти, включают:

В Unix-подобных системах mprotect системный вызов используется для управления защитой памяти. [14]

См. также

[ редактировать ]
  1. ^ Перейти обратно: а б Intel (июль 2008 г.). Руководства для разработчиков программного обеспечения для архитектур Intel 64 и IA-32: Том 3A: Руководство по системному программированию, часть 1 (PDF) . Интел . Проверено 21 августа 2008 г.
  2. ^ Джеффри С. Чейз; Генри М. Леви; Майкл Дж. Фили; и Эдвард Д. Лазовска. «Совместное использование и защита в операционной системе с единым адресным пространством» . два : 10.1145/195792.195795 1993. п. 2.
  3. ^ Ключи защиты памяти , Джонатан Корбет, 13 мая 2015 г., LWN.net
  4. ^ «Ключи в Itanium» (PDF) . Архивировано из оригинала (PDF) 28 ноября 2007 г.
  5. ^ «Защита памяти в HP PA-RISC» (PDF) . Февраль 1994 г. Архивировано из оригинала (PDF) 5 сентября 2015 г. Проверено 29 октября 2018 г.
  6. ^ «Руководство разработчика программного обеспечения Intel» (PDF) . Март 2012 г. Архивировано из оригинала (PDF) 1 июня 2012 г. Проверено 29 октября 2018 г.
  7. ^ Пункт, Джеймс; Дудалис, Иоаннис; Орсо, Алессандро; Првулович, Милош (2007). «Эффективная защита памяти с использованием динамического загрязнения». Материалы двадцать второй международной конференции IEEE/ACM по автоматизированной разработке программного обеспечения (PDF) . стр. 284–292. дои : 10.1145/1321631.1321673 . ISBN  9781595938824 . S2CID   6334541 .
  8. ^ Дудалис, Иоаннис; Пункт, Джеймс; Венкатарамани, Гуру; Првулович, Милош; Орсо, Алессандро (2012). «Эффективная и действенная защита памяти с использованием динамического искажения» (PDF) . Транзакции IEEE на компьютерах . 61 (1): 87–100. дои : 10.1109/TC.2010.215 . ISSN   0018-9340 . S2CID   15913190 .
  9. ^ Дженкинс, Мишель. «Oracle объявляет о революционном проектировании процессоров и систем с помощью SPARC M7» . www.oracle.com . Проверено 18 ноября 2016 г.
  10. ^ «Поддержка тегированной памяти» . www.lowrisc.org . Проверено 24 мая 2018 г.
  11. ^ Кук, DJ Измерение защиты памяти , принято на 3-ю Международную конференцию по разработке программного обеспечения, Атланта, Джорджия, май 1978 г.
  12. ^ «В Windows 9x нет настоящей защиты памяти» . Всё2. 24 июня 2000 г. Проверено 29 апреля 2009 г.
  13. ^ «Фарос» . 16 декабря 2020 г.
  14. ^ "мзащитить" . Базовые спецификации открытой группы, выпуск 6 . Открытая группа.

Примечания

[ редактировать ]
  1. ^ В зависимости от архитектуры это может включать, например, нераспределенные страницы и сегменты, страницы в другом домене защиты, страницы, требующие более высокого уровня привилегий.
  2. ^ Некоторые системы, например z/OS , поддерживают более одного размера страницы.
  3. ^ В некоторых системах существуют привилегированные инструкции для доступа к хранилищу по реальному адресу.
  4. ^ На заре разделения времени пейджинг обычно осуществлялся на магнитном барабане ; в современных системах пейджинг обычно осуществляется на жесткий диск или твердотельное устройство .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 3643af4e720da08f1634573e490f0cc8__1710835860
URL1:https://arc.ask3.ru/arc/aa/36/c8/3643af4e720da08f1634573e490f0cc8.html
Заголовок, (Title) документа по адресу, URL1:
Memory protection - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)