Здравствуйте, WolfHound, Вы писали: WH>CAS в правильной системе не нужен. Его сделали мелкософты по тому что не осилили нормальную систему типов.
Тут я не согласен. Совершенно не представляю себе, каким образом можно получить ограничение привилегий для подмножества call stack-ов на основе одной только системы типов.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Pzz, Вы писали: Pzz>Этому я верю, нет проблем. Неочевидным утверждением является то, что это implementable без заметного performance penalty.
Я же тебе сказал: пойди прочитай статью. Там всего пара десятков страниц, и на второй же приведены данные по производительности. Системы с хардварной изоляцией нервно курят в сторонке.
По поводу простых утверждений: пока что всё, чем ты смог обеспокоиться — это дополнительные проверки при доступе к массивам.
Ну вот практика показывает, что в большинстве обращений к массивам современные компиляторы управляемых сред устраняют проверки диапазона. Это понятно? Непонятно почему?
Потому что есть несколько типичных паттернов доступа, для которых очень легко сделать анализ кода и вынести инвариант за цикл.
Для нетипичных паттернов — не удастся, но
а) количество этих нетипичных паттернов не столь велико по сравнению с типичными
б) в полностью управляемой OS компиляцией занимается не JIT в рантайме, а медленный компилятор времени инсталляции, поэтому ему доступны более жесткие методы анализа, что еще сокращает количество неустранимых проверок
в) проверка диапазона — две ассемблерных инструкции на современной архитектуре. При этом предсказывалка переходов работает настолько хорошо, что performance penalty пренебрежимо мал по сравнению с телом цикла.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
C>>сверхбыстрый переключатель контекстов, обычная runtime-система для обычных приложений, и общий разделяемый runtime для управляемого кода. WH>А нафига нам "обычные" приложения?
Понятно нафига — как ты ограничишь доступ к файлам и устройствам? Особенно к файлам. Особенно к бинарным.
Здравствуйте, WolfHound, Вы писали:
НС>>Какая связь между CAS и системой типов? WH>Прямая.
Можно поподробнее?
WH>Тупая система типов .NET не может запретить кому попало лезть куда попало по этому ей нужен CAS.
Как система типов может запретить лезть сборкам имени Петрова на сайты, отличные от www.petrov.ru, при том что сборкам имени Васечкина можно лезть к любым сайтам?
WH>Более умная система типов может.И как следствие ей CAS не нужен.
Здравствуйте, Sinclair, Вы писали:
WH>>CAS в правильной системе не нужен. Его сделали мелкософты по тому что не осилили нормальную систему типов. S>Тут я не согласен. Совершенно не представляю себе, каким образом можно получить ограничение привилегий для подмножества call stack-ов на основе одной только системы типов.
Собственно, большинство задач CAS решается в зависимости от текущего состояния программы (за редкими исключениями вроде LinkDemand), и как их можно решить статически я пока не понимаю.
Здравствуйте, Sinclair, Вы писали:
S>Тут я не согласен. Совершенно не представляю себе, каким образом можно получить ограничение привилегий для подмножества call stack-ов на основе одной только системы типов.
Тотальным запретом глобального состояния.
Те никаких статических переменных. Никаких fopen итп.
Таким образом если код не получит ручку через которую можно получить доступ к файлу то он не получит доступ к файлу.
Никак.
Дынный зпрет позволяет производить не только доказательство системы безопасности но и еще нескольких не тривиальных утверждений типа отсутствия race condition.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, DOOM, Вы писали:
C>>>сверхбыстрый переключатель контекстов, обычная runtime-система для обычных приложений, и общий разделяемый runtime для управляемого кода. WH>>А нафига нам "обычные" приложения? DOO>Понятно нафига — как ты ограничишь доступ к файлам и устройствам? Особенно к файлам. Особенно к бинарным.
Не вижу никаких проблем.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
WH>Те никаких статических переменных. Никаких fopen итп. WH>Таким образом если код не получит ручку через которую можно получить доступ к файлу то он не получит доступ к файлу. WH>Никак.
Если у нас нет разделения на пользовательский код и код ОС, то кто же все-таки напрямую общается с диском и выдергивает файлы? Безо всяких "ручек"?
Здравствуйте, kuj, Вы писали:
kuj>Здравствуйте, Sheridan, Вы писали:
>>> Шеридан, покажи источник утверждающий что .net интерпертируется. Желательно не зависимый от ЛОРа S>>Я первый спросил kuj>Шеридан! Докажи, что не марсианин! Желательно источник не зависимый от тебя!
Истинно говорю, Шеридан не марсианин, он с Альфа-Центавра
Bigger однажды (30 июня 2008 [Понедельник] 16:14) писал в rsdn.flame.comp:
> Истинно говорю, Шеридан не марсианин, он с Альфа-Центавра
Какойже я центаврианин то?
Написано же — Sheridan.
--
...belive in the matrix...
Здравствуйте, Sheridan, Вы писали:
S>Bigger однажды (30 июня 2008 [Понедельник] 16:14) писал в rsdn.flame.comp:
>> Истинно говорю, Шеридан не марсианин, он с Альфа-Центавра S>Какойже я центаврианин то? S>Написано же — Sheridan. S>)
Вобще-то был эпизод в 3-м сезоне, где Вир занимался спасением нарнов от имени некоего центаврианина Авраама Линкольна, портрет у него был: Джон Шеридан в виде центаврианина. Неплохо смотрелся
Здравствуйте, DOOM, Вы писали:
DOO>Если у нас нет разделения на пользовательский код и код ОС, то кто же все-таки напрямую общается с диском и выдергивает файлы? Безо всяких "ручек"?
А как пользовательский код получит "ручку" для драйвера FS, через который можно открыть файл?
На самом деле, WolfHound придумал capability-based security
Здравствуйте, Sinclair, Вы писали:
S>Я же тебе сказал: пойди прочитай статью. Там всего пара десятков страниц, и на второй же приведены данные по производительности. Системы с хардварной изоляцией нервно курят в сторонке.
Но не все: http://linux.slashdot.org/article.pl?sid=06/05/31/0641207
Здравствуйте, DOOM, Вы писали:
DOO>Если у нас нет разделения на пользовательский код и код ОС, то кто же все-таки напрямую общается с диском и выдергивает файлы? Безо всяких "ручек"?
Вобще говоря в такой ОС должно быть 2 уровня кода.
Первый уровень это HAL, микроядро, кодогенератор... все это доказывается какимито внешними проверяльщиками и подписывается ацки стойкими подписями.
И все остальное включая все драйверы проверяется на месте.
Система работает следующем способом (очень грубое описание):
Процесс драйвера винта получает ссылку на HAL и предоставляет интерфейс блочного устройства.
Драйвер файловой системы получает ссылку на блочное устройство и реализует по верх него собственно файловую систему.
Процесс ассоциированный с пользователем получает ссылку на файлувую систему. И реализует фильтрацию в соответствии с правами юзера. Этот процесс запускает процесс пользовательского шелла передав ему уже отвильтрованную файловую систему.
Сам шелл тоже может пофильтровать файловую систему для каждого конкретного приложения.
Приложение тоже может пофильтровать и передать плагинам еще более обкоцанную файловую систему.
...
Благодоря статической типизации мы можем гарантировать что ссылка на HAL не уйдет дальше драйвера винта.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали: S>>Тут я не согласен. Совершенно не представляю себе, каким образом можно получить ограничение привилегий для подмножества call stack-ов на основе одной только системы типов. WH>Тотальным запретом глобального состояния. WH>Те никаких статических переменных.
Это понятно. WH>Никаких fopen итп.
Это — непонятно.
Откуда вообще берутся объекты FileStream? Понятно, что кто-то их создает. WH>Таким образом если код не получит ручку через которую можно получить доступ к файлу то он не получит доступ к файлу. WH>Никак.
Понятно, что по логике для недоверенного кода единственная возможность получить FileStream — это вызвать диалог открытия файла, который сам по себе реализован в доверенном коде и обязательно спросит у пользователя подтверждения.
Непонятно, каким образом конструктор FileStream в одном случае вернет объект, а в другом — выкинет PermissionException. В случае CAS это делается путем проверки Execution Stack. Каким образом система типов поможет этого добиться?
Каким образом система типов поможет мне добиться изменения поведения системы после того, как администратор руками выдал доверие некоторому коду?
Каким образом система типов поможет мне добиться устранения избыточных проверок в коде после того, как администратор руками выдал ему доверие?
WH>Дынный зпрет позволяет производить не только доказательство системы безопасности но и еще нескольких не тривиальных утверждений типа отсутствия race condition.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, DOOM, Вы писали:
DOO>>Если у нас нет разделения на пользовательский код и код ОС, то кто же все-таки напрямую общается с диском и выдергивает файлы? Безо всяких "ручек"? WH>Вобще говоря в такой ОС должно быть 2 уровня кода.
Ага. Все-таки надо "обычные приложения"
Без этого все же никак...
Здравствуйте, DOOM, Вы писали:
DOO>Ага. Все-таки надо "обычные приложения" DOO>Без этого все же никак...
Не надо.
HAL это мягко говоря не обычное приложение.
Да и он может быть вполне себе управляймым.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, DOOM, Вы писали:
DOO>>Ага. Все-таки надо "обычные приложения" DOO>>Без этого все же никак... WH>Не надо. WH>HAL это мягко говоря не обычное приложение.
Если HAL это не обычное приложение, то значит есть и обычные. Т.е. один фиг есть разделение на привилегированные приложения и не очень.
Здравствуйте, WolfHound, Вы писали:
WH>Да и он может быть вполне себе управляймым.
А в собранном виде оно поставляется по тому что без этого систему не забутстрапить.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, DOOM, Вы писали:
DOO>Если HAL это не обычное приложение, то значит есть и обычные.
Ты вобще чего под "обычными" понимаешь?
Тут под этим стовом имелись в виду "нативные" приложения.
DOO>Т.е. один фиг есть разделение на привилегированные приложения и не очень.
Оно есть вобще во всех системах которые претендуют на жизнь.
Разница в том как эти привилегии раздаются и проверяются.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн