captain cobalt
|
Wednesday 16.02.2005 17:27
|
|
|
Зарегистрирован: Sunday 15.02.2004 03:47
Сообщений - 49
|
Vadim Ushakov писал(а): ... Загляните на сайт http://www.wasm.ru/ - там рассказывают, как написать Windows-приложение в hex-редакторе
Yes.
Vadim Ushakov писал(а): ... captain cobalt писал(а): ... Каким образом handles защищены от подделки? Не требует ли их защита дополнительных ресурсов во время исполнения? Естественно, требует. Точно также и runtime ОО-среды требует дополнительных ресурсов, поскольку должен проверять права доступа и корректность данных при обращении к методам и членам.
Так ведь нет.
Всё проверки происходят во время компиляции.
Если подделать указатель невозможно, то пока его не передадут в явном виде, до данных просто "не дотянутся".
Vadim Ushakov писал(а): ... Все это взломать гораздо труднее, чем систему вида "все объекты в нулевом кольце".
Что вы скажете о такой модели?
Не скажу, что "против".
Однако идея "полностью отладить" trusted компилятор выглядит очень привлекательной.
Организация нескольких адресных пространств на разных уровнях привилегий требует накладных расходов памяти на системные таблицы, и дополнительный код (а значит дополнительные возможности для ошибок) для их обработки. Причем код по определению работающий в Ring0.
А Oбероны специально проектировались для максимального упрощения их компиляторов.
Поэтому не всё однозначно.
czarker писал(а): ... А если использован trusted compiler для сборки заведомо разрушительного модуля?
Как мы уже выяснили, такой модуль не сможет "дотянуться" до чужих данных.
P. S. Вот ещё одна ссылка "про разработку ОС":
http:/qnx.org.ru/viewthread15n3109.html
Там и про Bluebottle упоминается. [ Редактирование Thursday 17.02.2005 11:01 ]
|
Наверх
|
|
Vadim Ushakov
|
Thursday 17.02.2005 11:20
|
|
|
Зарегистрирован: Monday 07.02.2005 04:57
Местоположение: Россия, Красноярск
Сообщений - 35
|
captain cobalt писал(а): ... Так ведь нет.
Всё проверки происходят во время компиляции. Динамических проверок не требуется? Насколько я знаю, Оберон использует процедурно-параметрическую модель, а не механизм v-таблиц. Разве не нужна проверка принадлежности объекта данному типу (или одному из нескольких типов) при любом вызове такой функции? Или я что-то пропустил?
captain cobalt писал(а): ... Однако идея "полностью отладить" trusted компилятор выглядит очень привлекательной. Не верю я в "полность отлаженные" программы... Наверное, я пессимист...
Конечно хорошо было бы доказывать правильность программы так же, как доказывают правильность математической теоремы, но пока что такие доказательства остаются фантастикой.
captain cobalt писал(а): ... А Oбероны специально проектировались для максимального упрощения их компиляторов. Не спорю, Оберон очень логично и качественно спроектирован, но все же некоторые особенности синтаксиса вызывают сомнение: Документация Oberon-2 писал(а): ... Операторы with выполняют последовательность операторов в зависимости от результата проверки типа и применяют охрану типа к каждому вхождению проверяемой переменной внутри этой последовательности операторов...
...
Если ни одна проверка типа не удовлетворена, а ELSE отсутствует, программа прерывается. У меня вопрос: что это за "программа", которая перывается? Все объекты, классы, методы и прочее, что находится в едином пространстве образуют одну большую "программу". Если бы были процессы, то прерывался бы процесс, в котором произошла ошибка, но процессов нет. Так что же прерывается?
Кстати, приведенная цитата означает, что runtime Оберона все-таки выполняет динамические проверки типов.
Также у меня появились вопросы:
1. Может быть все-таки стоит использовать Оберон в качестве языка и среды разработки, а не .NET?
2. Имеет ли смысл развивать 3ОС поверх какой-либо существующей single-address-space системы, или лучше все писать с нуля?
|
Наверх
|
|
czarker
|
Thursday 17.02.2005 12:17
|
|
|
Зарегистрирован: Monday 10.01.2005 17:26
Местоположение: Москва, т.д.
Сообщений - 48
|
AlexanderK AlexanderK писал(а): ... Как это? Trusted подразумевает гарантированную безопастность. Т.е. принципиальную невозможность нанаесения вреда. Это как? Такого компилятора не может быть вообще. AlexanderK писал(а): ... И атаке подвергаются не объекты, а сама система безопасности. Нет, атака может быть направлена на объекты.
captain cobalt
captain cobalt писал(а): ... Как мы уже выяснили, такой модуль не сможет "дотянуться" до чужих данных. А ему не обязательно. Достаточно вызвать сбой в пэйджере. Или вызвать побочные эффекты.
Нельзя полностью отладить компилятор - он слишком сложный. И путь слепой веры - тупиковый.
Но это всё, конечно, моё сугубо личное мнение.
|
Наверх
|
|
AlexanderK
|
Thursday 17.02.2005 13:46
|
|
|
Зарегистрирован: Tuesday 05.10.2004 13:47
Местоположение: 2:5020/829.5
Сообщений - 49
|
Такие ЯП есть. Любые, где нет прямых ссылок.
Атака на объекты может быть связана только с поиском неправильного поведения при нарушении инварианта. Это зависит от кривизны только самого объекта, и влияет на безопастность только его собственных данных. А про польностью отлаженные компиляторы, и про безопасные компиляторы (безопасные языки программирования) - это разные темы, поэтому не надо смешивать.
|
Наверх
|
|
czarker
|
Thursday 17.02.2005 15:56
|
|
|
Зарегистрирован: Monday 10.01.2005 17:26
Местоположение: Москва, т.д.
Сообщений - 48
|
AlexanderK
Про Trusted вообще - ссылочку, если можно. А то мы как-то о разных вещах говорим.
А безопасность концепции сама по себе никому не нужна!
Но это всё, конечно, моё сугубо личное мнение.
|
Наверх
|
|
captain cobalt
|
Thursday 17.02.2005 16:17
|
|
|
Зарегистрирован: Sunday 15.02.2004 03:47
Сообщений - 49
|
Vadim Ushakov писал(а): ... У меня вопрос: что это за "программа", которая перывается? Все объекты, классы, методы и прочее, что находится в едином пространстве образуют одну большую "программу". Если бы были процессы, то прерывался бы процесс, в котором произошла ошибка, но процессов нет. Так что же прерывается?
За Оберон-2 сейчас не скажу, однако в Active Oberon Активные Объекты действительно могут "завершаться" и оставаться в таком состоянии пока их не соберёт сборщик мусора. Кроме того, есть модификатор SAFE, который означает повторный рестарт Активного Объекта в случае исключительной ситуации.
Vadim Ushakov писал(а): ... Кстати, приведенная цитата означает, что runtime Оберона все-таки выполняет динамические проверки типов.
Да, это так.
Vadim Ushakov писал(а): ... Также у меня появились вопросы:
1. Может быть все-таки стоит использовать Оберон в качестве языка и среды разработки, а не .NET?
2. Имеет ли смысл развивать 3ОС поверх какой-либо существующей single-address-space системы, или лучше все писать с нуля?
Это к разработчикам 3OS.
Тем более, что они уже здесь, но пока молчат.
czarker писал(а): ... Достаточно вызвать сбой в пэйджере.
Если имеется такая возможность, то это смертельно независимо от архитектуры всего остального. Действительно, известны случаи, когда "особенности" пейджера создавали брешь в безопасности.
Что касается именно Bluebottle, то там пейджера пока нет. И предвидится нескоро. Насколько я понимаю, вообще страничное преобразование не используется. Лишь сегменты установлены так, чтобы логический адрес=физический адрес.
czarker писал(а): ... Или вызвать побочные эффекты.
Модель активных объектов достаточно радикально отличается от модели "процессы+средства синхронизации". Зачастую ситуации race condition становятся "более очевидными".
czarker писал(а): ... Нельзя полностью отладить компилятор - он слишком сложный. И путь слепой веры - тупиковый.
"А шо делать?" (с) еврей из анекдота.
Вряд ли кто-то из программистов на CC++ после каждой компиляции вручную убеждается в корректности полученного конечного кода. Если компилятор ненадёжный, то ничто не поможет с помощью него разработать надёжную систему. Можно приделывать снаружи "радиолюбительские" "перделки и свистелки". Они действительно могут повысить надёжность. Но не до максимума - так как основа ненадёжна. Это подход "good enough software", который всё шире порицается.
Поэтому неочевидно, что лучше тратить время на приделывание "радиолюбительских перделок и свистелок", чем на повышение надёжности trusted компилятора. Тем более что существует гипотетическая возможность построить "полностью отлаженный" компилятор, и существует развитая и продолжающая развиваться теория для этого.
AlexanderK писал(а): ... А про польностью отлаженные компиляторы, и про безопасные компиляторы (безопасные языки программирования) - это разные темы, поэтому не надо смешивать.
Оппоненты упирают на то, что если компилятор ненадёжный, то безопасность компилируемого им языка уже не имеет значения. [ Редактирование Saturday 26.02.2005 23:37 ]
|
Наверх
|
|
AlexanderK
|
Thursday 17.02.2005 17:15
|
|
|
Зарегистрирован: Tuesday 05.10.2004 13:47
Местоположение: 2:5020/829.5
Сообщений - 49
|
Безопасность концепции первична, остальное - дело техники.
|
Наверх
|
|
captain cobalt
|
Thursday 17.02.2005 18:01
|
|
|
Зарегистрирован: Sunday 15.02.2004 03:47
Сообщений - 49
|
czarker писал(а): ... Про Trusted вообще - ссылочку, если можно. А то мы как-то о разных вещах говорим.
Обыкновенно "trusted" - это некоторая часть trusted computing base. Ссылочку не знаю, но вот цитата из Таненбаума:
Таненбаум писал(а): ... ВЫСОКОНАДЁЖНАЯ ВЫЧИСЛИТЕЛЬНАЯ БАЗА
Люди, занимающиеся компьютерной безопасностью, чаще употребляют термин надёжная ситема (trusted system), чем "защищённая система" (secure system). Надёжная система - это система, в которой формально установлены требования безопасности и которая удовлетворяет этим требованиям. В сердце каждой надёжной системы находится минимальная база TCB (Trusted Computing Base -- высоконадёжная вычислительная база), систоящая из аппаратного программного обеспечения, необходимого для проведения в жизнь всех правил безопасности. Если высоконадёжная вычислительная база работает в соответствии с техническими условиями, безопасность системы не может быть нарушена независимо от любых других обстоятельств.
Высоконадёжная вычислительная база TCB, как правило, состоит из большей части аппаратного обеспечения (кроме устройств ввода-вывода, не влияющих на безопасность), части ядра операционной системы и большей части или всех пользовательских программ, обладающих полномочиями суперпользователя (например root в системе UNIX). К функциям операционной системы, которые должны быть частью TCB, относятся создание процесса, переключение процессов, управление картой памяти, а также часть файлового управления и управления вводом-выводом. В надёжных системах TCB часто представляет собой совершенно отдельную ото всей остальной операционной системы часть, что позволяет уменьшить её размеры и проверить корректность работы.
Важную часть высоконадёжной вычислительной базы составляет монитор обращений. Монитор обращений принимает все системные вызовы, имеющие отношение к безопасности, такие как открытие файлов, и принимает решение, следует их выполнять или нет. Таким образом, монитор обращений позволяет все решения о безопасности поместить в одном месте, не предоставляя возможности обойти их. Организация большинства операционных систем отличается от данной схемы, в чём заключается одна из причин их ненадёжности.
czarker писал(а): ... А безопасность концепции сама по себе никому не нужна!
Что же теперь, закладывать в основу небезопасную модель?
Так такая ОС уже есть.
Ах так!
Ну тогда http:/refal.net/
AlexanderK писал(а): ... Безопасность концепции первична, остальное - дело техники.
Yes. [ Редактирование Thursday 17.02.2005 18:03 ]
|
Наверх
|
|
AlexanderK
|
Thursday 17.02.2005 19:16
|
|
|
Зарегистрирован: Tuesday 05.10.2004 13:47
Местоположение: 2:5020/829.5
Сообщений - 49
|
<captain cobalt> Ах так!
Ну тогда http:/refal.net/
Да в общем-то главное отсутствие прямого доступа к памяти, значит и VB тоже за безопасный язык сойдёт
|
Наверх
|
|
Модераторы: Roman I Khimov, netwizard. |
|
|