> man operating_systems
Центр информации по операционным системам :: Форумы :: Концепции :: Безопасность
 
<< Предыдущая тема | Следующая тема >>
Математическая модель аппаратных механизмов защиты процессоров с архитектурой IA-32
Переход на страницу  1 2 [3] 4
Модераторы: Roman I Khimov, Wanderer, Dron
Автор Добавил
Freeman
Вторник 06.06.2006 01:51
ID пользователя #3
Зарегистрирован: Четверг 01.07.2004 14:57
Сообщений: 207
gagar написал(а) ...
Господа, о какой безопасности мы говорим???

А вот о той самой. Почитай, например, SecurityLab. Увидишь, сколько уязвимостей каждый день находят. Как ты думаешь, почему?
Наверх
Laco
Понедельник 07.08.2006 01:55
ID пользователя #30
Зарегистрирован: Понедельник 26.07.2004 03:49
Сообщений: 5
gagar написал(а) ...
2. Достаточны ли механизмы защиты, предложенные в IA-32 для того, чтобы построить защищенную ОС?
В принципе защиты вполне достаточно, если использовать в полном обьёме. Но, из личного опыта, процессоры Intel, поставляемые для широкого пользования, не совсем соответствуют...

Что касается термина "защита",имхо, каждый разработчик подразумевает что-то своё. Я прочитал Ваши послания в предыдущей ветке и мне кажется - как только Вам удастся четко обосновать , что Вы понимаете под термином "защита" - сразу появится четкие и однозначные требования к ОС. На основании заявленных требований можно будет попытаться описать конечный автомат. Остальное уже дело техники (или математики)
Наверх
Vadim Ushakov
Понедельник 07.08.2006 10:12

ID пользователя #409
Зарегистрирован: Четверг 18.08.2005 04:25
Местонахождение: Красноярск
Сообщений: 85
Во всех ядрах, о которыя я что-либо знаю, используются фиксированные серменты и одна на всю систему TSS. Т.е. можно сказать, что они не используются вовсе. Более, того для ПОЛНОЙ защиты всего, чего угодно, вполне достаточно микроядра. Каждый модуль затолкаем в свое адресное пространство, сделаем взаимодействие модулей через микроядро, которое проверяет все обращения модулей на предмет соответствия политикам безопасности - вся защита. Вот только торм-о-о-о-о-о-о-о-о-зить бу-у-у-у-у-у-дет.
Альтернативный подход - писать ВСЁ на языке, безопасность которого математически доказана (все дружно смотрим на Синюю Бутылку ) . Осталось дело за малым - доказать, что транслятор Оберона реализует точно тот язык, который заявлен в спецификации, т.е. не содержит дыр.

Далее. Можно скрестить микроядро и подход, применяемый в NT для работы прикладных подсистем. Поскольку у нас будет микроядро, это значит, что управляющая программа подсистемы будет не частью ядра, а отдельным процессом. Попросту - одни программы исполняются "в песочнице" под полным контролем других программ. IA-32 имеет страничную адресацию и защиту привелигированных команд - этого достаточно, чтобы осуществить контроль исполнения на уровне машинного кода. Мы можем эмулировать интерфейс ядра Linux и запускать программы из ОС GNU, мы можем эмулировать интерфейс ядра NT и запускать программы из WinNT, мы можем организовать в такой песочнице виртуализатор, подобный VMWare... Да много еще чего можем.

Это все, что касается МЕХАНИЗМОВ. Они есть, и они довольно легко реализуемы. Я бы даже сказал, что аппаратные возможности IA-32 несколько избыточны.
Что касается ПОЛИТИКИ защиты, то вам, gagar, виднее - это как раз ваша область.


Freeman написал(а) ...
Почитай, например, SecurityLab. Увидишь, сколько уязвимостей каждый день находят. Как ты думаешь, почему?
Потому что святая троица: Assembler, C, C++. И ныне, и присно, и вовеки веков... Аминь.
Ах, да. Еще потому, что все сходят с ума по монолитным ядрам...


Падает тот, кто бежит; тот, кто лежит – уже не падает.
Наверх
Hmmm
Среда 09.08.2006 14:01

ID пользователя #719
Зарегистрирован: Среда 09.08.2006 11:29
Местонахождение: Москва
Сообщений: 108
Vadim Ushakov написал(а) ...
Во всех ядрах, о которыя я что-либо знаю, используются фиксированные серменты и одна на всю систему TSS.


По большому счету Вы правы, однако (речь идет о IA32) в ядрах линукса, которые мне довелось поковырять (где то начания с 2.2.x ) TSS строго говоря не одна. Просто для всех пользовательских задач создается одна TSS, но само ядро этим не ограничивается.

Vadim Ushakov написал(а) ...
Т.е. можно сказать, что они не используются вовсе.


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

Vadim Ushakov написал(а) ...
Более, того для ПОЛНОЙ защиты всего, чего угодно, вполне достаточно микроядра. Каждый модуль затолкаем в свое адресное пространство, сделаем взаимодействие модулей через микроядро, которое проверяет все обращения модулей на предмет соответствия политикам безопасности - вся защита. Вот только торм-о-о-о-о-о-о-о-о-зить бу-у-у-у-у-у-дет.


Да не так чтобы и тормозить. Посмотрите на DTrace в Solaris 10. Штука чумовая, позволяет не только логировать все события в системе, но и писать свои обработчики на каждое такое событие и даже добавлять собственные.

Vadim Ushakov написал(а) ...
Альтернативный подход - писать ВСЁ на языке, безопасность которого математически доказана (все дружно смотрим на Синюю Бутылку ) . Осталось дело за малым - доказать, что транслятор Оберона реализует точно тот язык, который заявлен в спецификации, т.е. не содержит дыр.


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


Vadim Ushakov написал(а) ...
Далее. Можно скрестить микроядро и подход, применяемый в NT для работы прикладных подсистем. Поскольку у нас будет микроядро, это значит, что управляющая программа подсистемы будет не частью ядра, а отдельным процессом. Попросту - одни программы исполняются "в песочнице" под полным контролем других программ.


Фактически это то о чем Вы говорили выше про затолкать все по отдельным модулям и мониторить микроядром.

В процессе чтения ветки наткнулся на интересную мысль про то что адресное пространство в IA32 ограничено 4Г. На самом деле может использоваться расширенная 36 разрядная адресация, предел в этом случае можете подсчитать сами.
Наверх
Hmmm
Среда 09.08.2006 14:48

ID пользователя #719
Зарегистрирован: Среда 09.08.2006 11:29
Местонахождение: Москва
Сообщений: 108
Прошу прощения, я дебил. В линуксе по одной "пользовательской" TSS на каждый процессор, естественно
Наверх
Vadim Ushakov
Среда 09.08.2006 15:43

ID пользователя #409
Зарегистрирован: Четверг 18.08.2005 04:25
Местонахождение: Красноярск
Сообщений: 85
Тогда, прошу прощения, я тоже дебил - по той же самой причине. Вдвоем не скучно...
<span class='smallblacktext'>[ Редактирование среда 09.08.2006 16:09 ]</span>

Падает тот, кто бежит; тот, кто лежит – уже не падает.
Наверх
Dron
Четверг 10.08.2006 14:07


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


Физической памяти может быть и больше... 8-16-32-64Гб, в зависимости от моделей, но линейная память в любом случае ограничивается 4-мя гигабайтами.

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

Андрей Валяев
Наверх
Сайт
gagar
Вторник 21.11.2006 12:06

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

Возьмем ОС windows. В неи используется плоская модель памяти. т.е. существует, положим, четыре сегмента, два на уровне ядра, два на уровне пользователя... Когды мы "запускаем" две пользовательские программы, то что происходит? Имеющие сегменты уровня пользователя разделяются на два - по одному для каждой программы? Но тогда это будет мультисегментная модель... Если нет, то получается, что сегменты двух программ совпадают... "Несовпадение" адресов в данном случае обеспечивается страничной адресацией... Если я что пишу не так, исправляйте ) Воторой момент, как запущенный процесс определяет его это страница или нет? Ведь у свойств страницы есть только бит чтения\записи и бит пользователя\ядра. Где же реализуется защита страниц одного процесса от воздействия на них страниц другого процесса? Получается что не на аппаратном уровне? Но где же?

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

Жду ваши комментарии по этому поводу!

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

ID пользователя #12
Зарегистрирован: Воскресенье 04.07.2004 21:44
Местонахождение: /ru/perm
Сообщений: 144
gagar написал(а) ...
У каждого процесса есть своя таблица страниц
Да.
Адресное пространство 4Г делится на две части: 2Г ядро + 2Г пользователь. Ядро одно на всех, а пользовательское пространство у каждого процесса своё. В таблицах страниц для одного процесса вообще нет страниц другого процесса. Соответственно, никакой логический адрес невозможно странично преобразовать в физический адрес памяти, принадлежащей другому процессу.

bluebottle.ethz.ch - Bluebottle. Швейцария. Сделано с умом.
Наверх
Сайт
Dron
Вторник 21.11.2006 22:47


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

веер процессов с центром в ядре.

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

Андрей Валяев
Наверх
Сайт
Переход на страницу  1 2 [3] 4  

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

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

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