| 
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.  | 
 | 
 
 
 
 |