www.raaar.ru

Концепция операционной системы и привилегии.


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

      В религиозной войне Linux vs Windows (по факту Unix vs Windows ) часто приводится аргумент излишнего самоограничения пользователя. При этом мало задумываются о том, что и Windows сервера исключают получение рядовым пользователем административных полномочий. Так что по сути, правила безопасности везде схожи. Однако очередной лу-юзер "плачет над разбитым корытом" своего распахнутого для всех входящих "окна". Иногда в собственное оправдание он приводит тезис, что вход у него в систему только по паролю (типа 1234 или 1973 ), однако забывает, что всякий входящий тут-же обретает права Администратора ( пусть он и называется Вася ).

    Я пишу не о банальном пренебрежении сетевой безопасностью, а подвожу к пониманию прихода новой концепции операционной системы. Сейчас много разнокалиберных гаджетов создают тот самый простор для вирусов, на котором "работы непочатый край". Именно присутствие в каждом из них той или иной операционной системы порождает новую концепцию. И эта концепция вовсе не клиент-серверная и не платформенная стезя Microsoft. Компьютер перестал для большинства пользователей быть локальным инструментом для вычислений, а превратился в элемент глобальной информационной среды. Да, да, уважаемый читатель, Web.2.0 поглотил пространство вокруг тебя, как поглощает один сезон года другой, принося свои радости и проблемы. Новая концепция: система-элемент одного большого вычислительного пространства.

    А теперь снова о разграничении прав пользователей. Это серверная технология безопасности. Подходит ли она на самом деле рядовому пользователю, который является полноправным хозяином своего собственного карманного гаджета? В условиях ограничения времени, когда каждая секунда дорога, а иногда и в полной прострации ( вероятно, вследствие употребления колдовских снадобий и напитков ), кому не лень вспоминать пароль мифического "Админа"?

    Есть у меня знакомый пользователь. В принципе - дотошный человек, готовый колупаться в тонкостях и в цифрах часы напролёт. Примерно 40% времени он вместе с родственниками живёт в сети ( в секте одноклассники ). Предпочитают входить туда сразу, путём клика на иконке браузера. Ноутбук и компьютер работают сутками, обслуживая флэш и .NET в открытом браузере. При том, чтобы не приходилось вводить пароль, им требуется каждому свой браузер со своей стартовой страницей. В принципе, если задуматься, то какое-никакое, а разграничение прав соблюдено ( некоторое подобие песочницы ). Правда - всё это делается на одной машине. А вот сама машина принципиально впускает автоматически. После очередного падения окна на ноги клиента, я его кое-как уговорил на примитивный пароль. Продолжаю упорствовать в прежнем направлении и ввести понятие обычного пользователя.

    Вернёмся к нашей концепции.  По сути описываемая ситуация на сегодняшний день распространена повсеместно. Если раньше пользователь сурового ДОС вынужден был изучать примитивный набор команд и буквы дисков, то теперь он занимается изучением браузерного интерфейса, а если учесть дизайн Chrome, то фактически - изучением интерфейсов Web.2.0 . Машина для него - это некая отдалённая реальность, типа почвы для ячменя из которого изготовленное пиво потребляется на очередной ступени мастерства освоения нового интерфейса. Виртуализация машины достигла невиданных доселе высот абстракции и продолжает увеличиваться нарастающими темпами. Как гром среди ясного неба в этой абстракции поражает физическое изменение какого-нибудь важного файла системы типа UIXinit.dll вирусом досовского уровня, заглянувшим на огонёк в распахнутое окошко из послания одноклассника.  Что в это время делает пользователь? Он "работает" в сети, в принципе войдя в запароленную зону на сервер. Впрочем, это не всегда так, поскольку довольно большая часть кода исполняется на стороне браузера. Однако, основное условие соцсети - вход только по паролю - пользователь выполнил ( пусть и переложив это на программу-браузер ). На этом его беспокойство о безопасности растворилось в делегированном полномочии админам сервера и разработчикам браузера. Оставим же на совести владельцев сетевых компаний и поисковиков потери личных данных пользователей ( тем более, что цели соцсетей прямо противоположны безопасности и конфиденциальности ). Ощутимые проблемы возникают у пользователя тогда, когда портится его рабочий инструмент - гаджет.

    Вы когда-нибудь обращались в раздел "Учётные записи пользователей" системы Windows ? Тем, кто устанавливал эту систему, знакомо обращение Microsoft, в котором настоятельно предлагается установить пароль Администратора, а при создании пользователя - предлагается сделать его обычным, - то есть без высоких полномочий, и также установить пароль. Мне интересно, сколько людей игнорировали это усилие разработчиков по рисованию полей ввода, текста и созданию ступеней установки системы?  В большинстве Linux-систем вход администратора вообще запрещён в графическом режиме. Однако, покупатели Windows - щедрые люди, нежалеющие денег на никчёмные усилия разработчиков...

    Чтож, оставим благородный риск пользователей на их право выбора. Обратите внимание на то, что никому не хочется вспоминать о машине за исключением недолгого времени, пока её мощью и дизайном можно похвалиться перед знакомыми или в той-же сети, где она закономерно потом будет унижена ( вследствие устаревания по закону Мура ). Исходя из главного принципа бизнеса: следует производить только то, что нужно потребителю, предположим, какая система требуется для гаджета. Ответ лежит на поверхности, хотя открывает всю глубину представления о специализации. Пользователь не хочет знать в принципе о какой-нибудь системе ничего, кроме названия. То есть: система должна быть невидима. Её интерфейс - это функциональное нечто, как предвидение Билла Гейтса, как его Окно в абстрактную вселенную, как продолжение человека  Стива Джобса, как очки Google.

    И вот, на фоне такой потребности в невидимости вдруг говорить о том, что требуется повышение полномочий для какой-либо операции с системой, - это плохой тон. Следовательно, сама система должна в принципе быть несокрушима и исключать какое-либо администрирование. Напоминает наручные часы или калькулятор? Такая система должна быть намертво записана в гаджет. По крайней мере её перезапись обязана быть аппаратной, то есть - при помощи стационарного оборудования, исключающего возможность перезаписи программного кода посредством самой системы на этом гаджете. При этом канал передачи кода должен основываться на физическом принципе, отличном от физического принципа обычной передачи данных. Это исключит взлом системы вопреки желанию пользователя ( то есть обрекает взломщика на необходимость физического доступа к гаджету ).

   Исходя из предыдущего абзаца, предполагаю, что проблема кроется не столько в отсутствии блоков постоянной энергонезависимой памяти достаточного объёма ( подошли бы флэш-карты с защитой от записи ), сколько в желаниях компаний владеть данными пользователя и продавать программные продукты, интегрированные с системой. Хотя портабельные разработки существуют давно, большинство всё-таки использует в большом объёме системные вызовы низкого уровня, а часто - откровенно привязывают продукт к машинной основе и к данным других продуктов. Стандартизация систем ( типа POSIX ) - дело вялое и поддерживаемое гигантами лишь внешне, поскольку противоположное - их хлеб.

   Однако, давайте взглянем на перспективу таких вшитых систем. Во первых, - переустановка системы может занимать секунды: ведь для замены блока постоянной памяти достаточно вынуть блок и вставить на его место другой. Никакому вирусу невозможно изменить хранимую на недоступном для записи устройстве информацию. Пользователь отключен в принципе от администрирования системы ( конечно, исключая личные настройки типа: обои рабочего стола, внешний вид, подключение к сети и прочее ). Введение паролей не требуется, хотя возможно, если нужна многопользовательская система - но храниться они могут в домашней директории в зашифрованном односторонним алгоритмом виде. То есть, - покупатель приобретает тот самый идеальный сервер, становясь его пользователем.

«Но стоп!» - скажет проницательный читатель, - «разве описываемое выше не представляет из себя типичную встраиваемую систему реального времени?». И будет прав. Именно так, или очень близко к этому устроены ОСРВ. Безопасны ли они? - Да, решения на их основе могут быть в известной мере безопасными — в той мере, которой пользуются компании-производители конкретных встраиваемых систем. Но такая система остаётся уязвимой на уровне пользовательского интерфейса (например — интернет-браузера), который формируют самовольно устанавливаемые пользовательские приложения, имеющие отличную от изготовителя ОС политику безопасности. Даже при отсутствии опасных системных вызовов, такие приложения занимаются ничем иным, как трансляцией вводимой информации по каналам связи.

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

Теперь, продолжая думать о хорошем, обратимся к … Plan 9. Есть такая система, малознакомая типичному пользователю локального гаджета. (Сразу обращаю внимание, что эта система является перспективной разработкой и находится далеко ДО стадии промышленного применения ). Философия Plan 9 — это Unix нового поколения, лишённый старых атрибутов телетайпа и прочих устройств. (См. описание системы Plan 9.pdf) В этой системе нет устройств в принципе. Получая доступ к пользовательскому пространству, получаешь доступ только к файлам. Таким образом, входя в систему, пользователь получает авторизацию фактически на всех устройствах с установленной Plan9, но самих устройств, кроме интерфейса своего личного гаджета, он не видит.(Plan 9 Wiki Rus) Реализация воспроизведения или чтения требуемого файла осуществляется самим гаджетом и по факту является стандартной функцией системы низкого уровня, скрытой от пользователя. Все устройства с Plan9 представляют собой часть этой системы и образуют одно общее пользовательское пространство для любого пользователя любого из этих устройств. В составе таких устройств предполагается наличие файл-сервера, сервера CPU (вычислительного компьютера), сервера печати и множество клиентов. Всё это многообразие аппаратуры открывается для каждого пользователя, независимо от места вхождения в систему и от типа его машины-гаджета. Plan 9  - это UNIX следующего поколения, свободный от наследия аппаратного ограничения.

Вероятно это сложно понять простому пользователю, тем более, что понимать в данном случае гораздо сложнее, чем пользоваться. Это как интерфейс «одноклассников», - неважно с какого устройства входишь, - он для всех однотипен, хотя устроен весьма непросто с технической точки зрения. Есть твои файлы и есть чужие. А где они находятся... разве кто это знает?

На точно такой-же концепции основана ещё одна система. По утверждению разработчиков, самым главным из которых является Эндрю Танненбаум, - она по прежнему экспериментальна, но доступна и обставлена самым необходимым Unix-софтом. Точно отражая специфику и архитектуру, Эндрю называет эту систему Amoeba (Амёба). Рабочий вариант для программистов  - система Amoeba - Fireball.

Видимо не следует обходить вниманием разного рода облачные системы, которые ныне популярны у крупнейших разработчиков - таких, как например Oracle ( в последней реинкарнации Solaris 11), Google и даже некогда амбициозная linux-овая Canonical LTD с разработкой Ubuntu Cloud.
Однако технология "один сервер + много клиентов" претерпевает изменение главным образом из-за множества высокопроизводительных пользовательских устройств, основной проблемой в которых является теперь не скорость обработки данных, а доступ к большим объёмам информации и к сервисам специализированных устройств в сети. Сам же, растущий как снежный ком, объём информации, всё более становится значим не в виде архивного хранения, а в виде мультимедийных информационных потоков. К тому же давно стало ясно, что специализация серверов и распределение потоковых нагрузок значительно повышают производительность сети в целом. В сетевой инфраструктуре всегда было значимо самое узкое место - сетевой интерфейс. В традиционной клиент-серверной модели весь поток так или иначе приходилось обрабатывать одиночному устройству (пусть даже и распараллеленному на несколько каналов), принимающему множество запросов. В распределённой системе (Distributed Operating System) реализуется возможность специализации запросов к устройству и к суммарному уменьшению потока, что положительно сказывается на быстродействии и качестве обработки запросов. Локализация пользователя в виртуальном рабочем пространстве обеспечивает высокую безопасность и надёжность системы в целом. В такой системе существует чёткое разделение между  механизмом реализации вычисления и пользовательской политикой. Одновременно с этим, каждый вычислительный элемент ограничивается в специализированном наборе базовых функций, что тоже повышает производительность и безопасность вследствие её объёмного уменьшения и сокращения количества взаимодействующих противоречивых процессов на уровне ядра. Несомненным превосходством распределённой операционной системы будет также её широчайшая масштабируемость - как на уровне файловой системы, так и в уровне специализированной поддержки аппаратного уровня, ведь даже самое экзотическое устройство становится доступно любому пользователю как только хотя бы в единичном экземпляре оно появится в аппаратном составе независимо от своего географического положения.

Первые попытки разработки распределённой операционной системы были предприняты ещё в 1954 году в США в проекте DYSEAC (как это традиционно было тогда принято - в качестве военного заказа). Изначальным отличием в такой системе явился отход от разделения клиента и сервера в виде чёткого определения мастера и ведомого компьютеров. Была принята противоположная концепция равноправного взаимодействия устройств. Система прошла испытания довольно успешно, но не была востребована по причине массово-габаритной. На следующем проекте Linkoln TX-2 отрабатывалось создание  вычислительных процессов одиночного и многопоточного параллельного типа - мультипрограммирование.

Следующим значительным шагом было создание и исследование в последующие годы ячеек объёмной электронной памяти, позволивших получить объекту хранения сразу несколько атрибутов, а не только порядковый счётчик. Тогда каждый объект хранения приобрёл имя и набор параметров, а с ними - возможности прямого и перекрёстного (косвенного) поиска. Тогда же начали отрабатываться транзакционность, контроль доступа к памяти, динамические объёмы, снимки файловой системы и прочие, знакомые сегодня каждому айтишнику возможности современных систем.

Распределённые операционные системы не возникли внезапно и одномоментно, а являются следствием целенаправленного, долговременного и планомерного исследования. Считать их воплощением чьих-то личностных амбиций исследователя было бы ошибкой. В основу таких систем была положена практика распределённых вычислений и наработки в области многоядерных и многопроцессорных аппаратных реализаций. Немалый вклад в это вносят гиганты IT-бизнеса, осуществляя громадные объёмы разработок и вычислений. Вспомните особенности направлений основной деятельности этих компаний. Например, Microsoft - интенсивное внедрение объектно-ориентированных программных технологий. Oracle (и бывшая SUN)  - технология хранения обширных баз данных и файловые хранилища неограниченных размеров. Google -  эффективная обработка запросов клиентов со всего мира о чём угодно. Intel и AMD - создание сложнейших и эффективнейших аппаратных реализаций вычислительных систем. Распределённая операционная система должна была появиться также неизбежно, как неизбежен рост дерева при наличии живых корней.

Одним из самых важных качеств распределённой операционной системы считается её прозрачность. Именно в том понимании, которое Вы можете применить к оконному стеклу. Пользователь видит устройства своего пространства и абсолютно лишён каких-либо представлений о сложности, удалённости, величине или стоимости аппаратной реализации этого устройства. Ему предоставляется только интерфейс, стеклянная плоскость с объектами управления, виртуальная реальность. Несмотря на простоту реализации, Plan9 и Amoeba представляют собой очень мощные концептуальные системы. Наверное следует упомянуть Inferno  , но это по сути - воплощение идей Plan9 и Oberon.

Здесь я хочу заметить, что исходя из совершенно различных стремлений разработчики из разных точек зрения сходятся в общем к одной структурной реализации. Так, например, если Plan 9 преследует цели получения "концептуально чистого Unix с моделью всё есть файл", то Amoeba - наоборот, использует Unix-программы лишь по причине отсутствия собственных наработок и в режиме эмуляции. Та и другая системы базируются на теории множества серверов, как интерфейсов взаимодействия процессов и файлов. Эндрю Танненбаум по прежнему, будучи преподавателем и архитектором систем, стремится к наиболее понятному и наглядному построению на микроядерном основании. Обе эти системы, на мой взгдяд, представляют будущее вычислительное пространство, объединяющее разрозненные сущности одиноких гаджетов с вычислительными кластерами.

    Когда-то компьютер стал персональным благодаря наличию программ, помогающих в жизни и в работе. Его стали покупать, несмотря на бешенную стоимость и энергетическую неэффективность. Теперь у него невысокая стоимость, необычайная экономичность и избыток программ. Теперь у него недостаток - подверженность внешней угрозе и проблема ограниченной интеграции в информационное пространство мощнейших вычислительных комплексов. Так может быть следует пересмотреть подход к гаджету, как к вечно обновляемому неизвестно с какими целями персональному жучку и используя распределённую операционную систему изменить саму суть устройства? Ведь не человек создан для машины, но машина - для порабощения человеков :-)

Для интересующихся:

Документация операционной системы Plan 9 в формате .pdf на русском языке:

Общее описание Plan 9 от Bell Labs и описание системы для знакомых с UNIX
Использование пространства имён и сетевая организация в Plan9
APE - среда ANSI/POSIX
8½ - оконная система Plan 9
RC - командная оболочка Plan 9
Строковый редактор ed
Прикладная поддержка новой архитектуры в Plan 9
Файловый сервер Plan9 и протокол 9P
Протокол IL
Лексические имена файлов в Plan 9 и правильная точка-точка
Процессы sleep и wakeup на мультипроцессоре с памятью совместного использования
Руководство по спулеру печати LP
Различные порты
Factotum и secstore
Первоисточник

Wiki Plan 9 на русском языке (внешняя сетевая ссылка )
Интересный обзор ОС Plan 9