> man operating_systems
Центр информации по операционным системам :: Форумы :: Концепции :: Безопасность
 
<< Предыдущая тема | Следующая тема >>
Математическая модель аппаратных механизмов защиты процессоров с архитектурой IA-32
Переход на страницу  [1] 2 3 4
Модераторы: Roman I Khimov, Wanderer, Dron
Автор Добавил
gagar
Воскресенье 21.05.2006 00:05

ID пользователя #515
Зарегистрирован: Вторник 20.12.2005 22:43
Местонахождение: Тверь
Сообщений: 72
Здравствуйте, господа! И снова я. Надеюсь не соскучились

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

Я прошу Вас, как экспертов, мне помочь.

Суть вопросов:

1. Для построения математической модели защиты мне необходимо описать слово состояния процессора (и ОС, естественно).

Вот что у меня получилось:

слово состояния С есть множество, состоящее из следующих элементов:
- все регистры процессора;
- системные структуры ОС:
- GDT;
- LDT;
- таблица векторов прерываний;
- страничные структуры ОС:
- PDE;
- PTE;

Все ли это, или нужно что-то еще???

P.S. Речь, естественно идет о защищенном режиме

2. Подтвердите или опровергните правильность следующего предположения:
а) комманды ассемблера делятся на два вида: команды, меняющие слово состояния системы, или команды, меняющие данные в памяти.
б) При этом одна и та же команда может входить в обе группы в зависимости от варианта ее использования. Например:
- mov eax,addr - меняет слово состояния системы (при заданном условии, что регистр eax входит в состав слова состояния).
- mov addr,eax - меняет данные в памяти не меняя слово состояния.
в) Невозможно изменение одной командой слова состояния системы и данных в памяти.

3. В незаконченом цикле статей Broken Sword'a приводится 6 типов проверки на безопасность:

1. проверка границ.
2. проверка типов.
3. проверка уровней привелегий.
4. ограничения на адресацию.
5. ограничения на использование инструкций.
6. ограничения на точки входа в процедуры.

Вопрос: где обо всем этом можно подробно почитать? Желательно на русском

4. Ламерский вопрос: Я могу каким-либо образом считать данные из сегмента, принадлежащего другой программе?

Ух... Вроде все. Жду ответов, критики и пожеланий.

С уважением, Горячев Игорь Александрович.
Наверх
Roman I Khimov
Воскресенье 21.05.2006 00:27

ID пользователя #1
Зарегистрирован: Воскресенье 27.06.2004 12:37
Местонахождение: Санкт-Петербург
Сообщений: 601
gagar написал(а) ...
Я прошу Вас, как экспертов, мне помочь.

Это "Вы" меня преследует уже вторую неделю, это какое-то сумасшествие. Я даже не могу не уделить ему внимание здесь, настолько все серьезно...

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

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

Вся проблема в том, что такое слово вместится для понимания разве что в лошадиную голову, где места много. Поскольку числом состояний системы здесь является декартово произведение числа состояний ее компонент. И компонент этих много. И состояний у них тоже. Поэтому полностью детерминированную систему здесь соорудить практически нереально. Необходимо выделять "важные" состояния.
gagar написал(а) ...
а) комманды ассемблера делятся на два вида: команды, меняющие слово состояния системы, или команды, меняющие данные в памяти.

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

Но иногда эти данные принадлежат ОС и меняют ее состояние. Иногда нет, это данные приложений и на них ОС глубоко наплевать. Но это все уже счастливые случайности.


Греби и улыбайся!
Наверх
Сайт
captain cobalt
Воскресенье 21.05.2006 09:59

ID пользователя #12
Зарегистрирован: Воскресенье 04.07.2004 21:44
Местонахождение: /ru/perm
Сообщений: 144
gagar написал(а) ...
- все регистры процессора;
Какие регистры?
gagar написал(а) ...
- системные структуры ОС:
Непонятно.
gagar написал(а) ...
- GDT;
GDT - это глобальная таблица дескрипторов, адресуется регистром GDTR.
gagar написал(а) ...
- LDT;
LDT - это локальная таблица дескрипторов, адресуется через регистр LDTR.
gagar написал(а) ...
- таблица векторов прерываний;
Это тоже таблица дескрипторов ... IDTR.
gagar написал(а) ...
- страничные структуры ОС:
Непонятно.
gagar написал(а) ...
- PDE;
PDE - это элемент каталога страниц. Каталог состоит из таких элементов. Каталог адресуется регистром CR3.
gagar написал(а) ...
- PTE;
PTE - это элемент таблицы страниц. Каждая таблица страниц состоит из таких элементов. Каждая такая таблица адресуется через один из PDE.
gagar написал(а) ...
а) комманды ассемблера делятся на два вида: команды, меняющие слово состояния системы, или команды, меняющие данные в памяти.
Многие перечисленные выше системные структуры находятся в памяти. Непонятно.

Команда HLT останавливает процессор, после чего все изменения состояния прекращаются. После этого изменить состояние можно только внешним сигналом прерывания.
gagar написал(а) ...
б) При этом одна и та же команда может входить в обе группы в зависимости от варианта ее использования. Например:
Непонятно что такое "команда", а что такое "вариант".
gagar написал(а) ...
в) Невозможно изменение одной командой слова состояния системы и данных в памяти.
Вот некоторые примеры:

-- примитивы синхронизации могут быть построены только с использованием именно таких команд; наиболее полезные команды: XCHG reg, mem; XADD; CMPXCHG
-- PUSH помещает данные в память и одновременно уменьшает eSP
-- CALL к тому же изменяет eIP.
-- Команда вообще может привести к аппаратному переключению задач. При этом регистры будут сохранены в TSS выходящей задачи (в память) а затем загружены из TSS входящей задачи.
gagar написал(а) ...
3. В незаконченом цикле статей Broken Sword'a приводится 6 типов проверки на безопасность:

1. проверка границ.
2. проверка типов.
3. проверка уровней привелегий.
4. ограничения на адресацию.
5. ограничения на использование инструкций.
6. ограничения на точки входа в процедуры.

Вопрос: где обо всем этом можно подробно почитать? Желательно на русском
Не всё из перечисленного аппаратно поддерживается в IA32.

Наиболее полезной может оказаться глава "4 Protection" третьего тома (мануала интела на английском).
gagar написал(а) ...
Ламерский вопрос: Я могу каким-либо образом считать данные из сегмента, принадлежащего другой программе?
В IA32 нет таких понятий "программа" и "принадлежать" (как динамическое отображение).

Ламерский ответ: почти наверняка да.

bluebottle.ethz.ch - Bluebottle. Швейцария. Сделано с умом.
Наверх
Сайт
gagar
Воскресенье 28.05.2006 12:06

ID пользователя #515
Зарегистрирован: Вторник 20.12.2005 22:43
Местонахождение: Тверь
Сообщений: 72
Cпасибо за предыдущие ответы. Они натолкнули меня на размышления.

Опять вопрос: про память.

Правильно ли я понял организацию памяти в защищенном режиме: есть 4 Гб виртуальной памяти, которые кромсаются ОСью на множество сегментов для себя и для программ. После этого каждый сегмент опять "расширяется" благодаря страничной адресации до 4 Гб. В итоге получается N сегментов по 4 Гб.

Если я понял неправильно, то объясните парой фраз без всяких дескрипторов и селекторов.

С уважением, Горячев Игорь Александрович.
Наверх
captain cobalt
Воскресенье 28.05.2006 18:35

ID пользователя #12
Зарегистрирован: Воскресенье 04.07.2004 21:44
Местонахождение: /ru/perm
Сообщений: 144
Неправильно.

Линейные адреса - 32 бит.
Физические адреса - могут быть больше 32 бит.

Получить доступ к более чем 4G можно только перезагружая CR3 или модифицируя каталог/таблицы страниц.

bluebottle.ethz.ch - Bluebottle. Швейцария. Сделано с умом.
Наверх
Сайт
Dron
Понедельник 29.05.2006 10:21


ID пользователя #13
Зарегистрирован: Понедельник 05.07.2004 11:16
Местонахождение: Москва
Сообщений: 651
есть 4 Гб виртуальной памяти, которые кромсаются ОСью на множество сегментов для себя и для программ. После этого каждый сегмент опять "расширяется" благодаря страничной адресации до 4 Гб. В итоге получается N сегментов по 4 Гб.


Че-то бред какой-то... все гораздо проще...

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

а так получается типа веер миров... перемещаться между мирами может только (как там у Головачева то... забыл.. .. rкороче ядро.

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

Андрей Валяев
Наверх
Сайт
gagar
Понедельник 29.05.2006 22:05

ID пользователя #515
Зарегистрирован: Вторник 20.12.2005 22:43
Местонахождение: Тверь
Сообщений: 72
Dron: Но сегменты-то по любому используются! Как ими не пользоваться? А вот страницы как раз можем неиспользовать!

В любом случае каждая программа "живет" в своем сегменте кода, данных и стека. Или у всех программ один сегмент данных на всех???
<span class='smallblacktext'>[ Редактирование понедельник 29.05.2006 22:08 ]</span>
Наверх
fedukoff
Вторник 30.05.2006 10:09

ID пользователя #248
Зарегистрирован: Четверг 24.03.2005 17:32
Местонахождение: London, UK
Сообщений: 46
написал(а) ...
каждая программа "живет" в своем сегменте кода, данных и стека


Каждая программа живет в своем пространстве адресов. И считает, что она одна-единственная на всем белом свете. Даже если их привеликое множество.
А как там будут комбинироваться сегменты-страницы или страницы-сегменты это уже другой вопрос.
<span class='smallblacktext'>[ Редактирование вторник 30.05.2006 10:09 ]</span>
Наверх
Dron
Вторник 30.05.2006 11:38


ID пользователя #13
Зарегистрирован: Понедельник 05.07.2004 11:16
Местонахождение: Москва
Сообщений: 651
Когда я говорю что сегоменты не используются - я не имею ввиду что они вообще не используются... их естественно нельзя отключить, но можно настроить так, чтобы не мешались. вот так щас все и живут.

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

Андрей Валяев
Наверх
Сайт
Chizh
Вторник 30.05.2006 17:39
ID пользователя #90
Зарегистрирован: Понедельник 13.09.2004 18:42
Сообщений: 170
Аппаратные механизмы защиты процессоров вполне перечислымое множество. Что бы узнать их состав - достаточно прочитать описание процессора, книжек по этой теме существует не мало. Если коротко, то всё заключено в уровне привилегий текущего исполняемого кода, возможности которого на самом низшем уровне не отличаются от возможностей какого-нибудь 8086. По сути организуется хорошо огороженная от всего песочница, в которой исполняется пользовательский код.
Наверх
Сайт
Переход на страницу  [1] 2 3 4  

Перейти:     Наверх

Транслировать сообщения этой темы: rss 0.92 Транслировать сообщения этой темы: rss 2.0 Транслировать сообщения этой темы: RDF
Powered by e107 Forum System

© OSRC.info, 2004-2010.
Авторские права на любые материалы, авторы которых явно указаны, принадлежат их авторам. По вопросам публикации таких материалов обращайтесь к авторам.
Авторские права на любые другие материалы принадлежат OSRC.info.
Сайт является помещением библиотеки. Копирование, сохранение на жестком диске или иной способ сохранения произведений осуществляются пользователями на свой риск.
При использовании материалов сайта ссылка на OSRC.info обязательна.