Выпуск #9/2023
С. Назаров, А. Барсуков
НАДЕЖНОСТЬ И БЕЗОПАСНОСТЬ ОПЕРАЦИОННЫХ СИСТЕМ РАЗЛИЧНОЙ АРХИТЕКТУРЫ. Часть 2
НАДЕЖНОСТЬ И БЕЗОПАСНОСТЬ ОПЕРАЦИОННЫХ СИСТЕМ РАЗЛИЧНОЙ АРХИТЕКТУРЫ. Часть 2
Просмотры: 596
DOI: 10.22184/1992-4178.2023.230.9.144.150
Представлены модели двух основных архитектур операционных систем – ОС с многоуровневым модульным ядром, мультисерверной микроядерной ОС. Дана информация по принципу кибериммунного построения ОС Касперского.
Представлены модели двух основных архитектур операционных систем – ОС с многоуровневым модульным ядром, мультисерверной микроядерной ОС. Дана информация по принципу кибериммунного построения ОС Касперского.
Теги: kaspersky os model multi-level modular kernel os multi-server microkernel os os касперского модель мультисерверная микроядерная ос с многоуровневым модульным ядром
Надежность и безопасность операционных систем различной архитектуры
Часть 2
С. Назаров, д. т. н.1, А. Барсуков, к. т. н.2
Во второй части статьи представлены модели двух основных архитектур операционных систем, которые наиболее широко распространены в реальных системах различных производителей. Приведены их представления в форме графов состояний и переходов, позволяющие определить основные параметры надежности функционирования систем по правилам составления систем алгебраических уравнений для установившегося состояния системы. Дана информация по принципу кибериммунного построения системы, положенного в основу операционной системы Касперского.
Модель операционной системы с многоуровневым модульным ядром
Граф состояний и переходов компьютерной системы с многоуровневой модульной операционной системой (типа Linux) представлен на рис. 2. Перечислим состояния и соответственно вероятности нахождения системы в этих состояниях: P1 – вероятность работы ядра операционной системы ОСЯ в привилегированном режиме; P2 – вероятность работы модулей операционной системы ОСП в пользовательском режиме; P3 – вероятность работы пользовательских приложений ПП; P4 – вероятность отказа системы.
Определим интенсивности переходов системы из одного состояния в другое (здесь и далее параметры моделей выбраны на основе измерений в реальных операционных системах [2]): λ1 – интенсивность системных вызовов со стороны прикладных программ, примем значение λ1 = 10 000 1 / c; λ2 – интенсивность системных вызовов со стороны прикладных программ, в выполнении которых участвуют устройства системы с соответствующими драйверами; пусть каждый 200‑й системный вызов требует участия драйверов устройств, тогда значение λ2 = 50 1 / c; λ3 – интенсивность выполнения системных вызовов драйверами устройств. Пусть на выполнение одного вызова требуется 5 мс, тогда λ3 = 200 1 / c; λ4 – интенсивность передачи выполненных системных вызовов в прикладные программы. Эти вызовы выполняются только ОСЯ (назовем их короткими) или совместно с ОСП или ОСЯ передает результат работы ОСП (назовем их длинными). Примем среднее время передачи выполненных системных вызовов 0,1 мс. Тогда значение λ4 = 10 000 1 / c; λ5 – интенсивность отказов ОСЯ. Выше была принята интенсивность отказов ядра Minix равной 100 000 ч при 6 программных ошибках. Размер ОСЯ был принят равным 10 млн строк. Число программных ошибок в данном случае следует принять равным не менее 3 ошибок на 1 000 строк. Таким образом, ОСЯ содержит не менее 30 000 ошибок. Считая, что наработка на отказ обратно пропорциональна числу ошибок, получаем наработку на отказ для ОСЯ, равную 20 ч. При таких допущениях λ5 = 0,000014 1 / c.
λ6 – интенсивность отказов ОСП. Размер ОСП был принят равным 20 млн строк. Число программных ошибок в данном случае следует принять равным не менее 10 на 1 000 строк кода (как отмечено выше, число ошибок в драйверах в три и более раз превышает число ошибок в программах ядра. Число ошибок в ОСП при принятых допущениях не менее 300 000. Однако следует заметить, реально используется в работе не более 1 / 10 возможностей ОСП. С учетом этого допущения можно принять λ6 = 0,000014 1 / c. λ7 – интенсивность отказов ПП. Считая средний размер пользовательского приложения 20 000 строк, можно считать, что в нем (при 20 ошибках на 1 000 строк) порядка 400 ошибок. Отсюда λ7 = 0,0000047 1 / c. λ8 – интенсивность перезагрузки операционной системы. Примем время перезагрузки равным 3 мин, тогда λ8 = 0,0055 1 / c.
По графу состояний и переходов системы, представленному на рис. 2, можно составить систему уравнений, руководствуясь следующим правилом: слева в уравнениях стоит предельная вероятность данного состояния Pi, умноженная на суммарную интенсивность всех потоков, ведущих из данного состояния, а справа – сумма произведений интенсивностей всех потоков, входящих в i-е состояние, на вероятности тех состояний, из которых эти потоки исходят.
Полученная система уравнений имеет следующий вид:
(λ2 + λ4 + λ5) P1 = λ1P3 + λ3P2 + λ8P4;
(λ3 + λ6)P2 = λ2P1;
(λ1 + λ7)P3 = λ4P1;
λ8P4 = λ5P1 + λ6P2 + λ7P3. (1)
В данном случае имеем четыре уравнения в системе (1) при четырех неизвестных. Уравнения однородны (не имеют свободного члена) и определяют неизвестные только с точностью до произвольного множителя. Но можно воспользоваться так называемым нормировочным условием и с его помощью решить систему. При этом одно (любое) из уравнений можно отбросить (оно вытекает как следствие из остальных). Отбросим первое уравнение и, таким образом, получаем следующую систему уравнений:
(λ3 + λ6)P2 = λ2P1;
(λ1 + λ7)P3 = λ4P1;
λ8P4 = λ5P1 + λ6P2 + λ7P3;
P1 + P2 + P3 + P4 = 1. (2)
Подставив определенные выше значения коэффициентов при переменных и записав систему уравнений в матричной форме, удобной для решения средствами Excel, получим систему (2) в следующем виде:
50P1 − 200,000014P2 + 0P3 + 0P4 = 0;
10 000P1 + 0P2 − 10000,0000047P3 + 0P4 = 0;
0,000014P1 + 0,000014P2 + 0,0000047P3 − 0,0055P4 = 0; 1P1 + 1P2 + 1P3 + 1P4 = 1. (3)
На решении этой системы уравнений остановимся позже, после построения всех предлагаемых в статье моделей.
Модель мультисерверной
микроядерной операционной системы
В качестве примера такой операционной системы возьмем Unix-подобную структуру MINIX 3, предложенную Э. Таненбаумом более 15 лет назад [12]. В данном случае предлагается иметь несколько небольших модулей (микроядро – МЯ и сервер реинкарнации – СР), работающих в режиме ядра, остальная часть операционной системы представляет собой набор полностью изолированных серверов (серверных процессы – СП) и драйверов (ДР), работающих в режиме пользователя. В операционной системе MINIX 3 микроядро обрабатывает прерывания, обеспечивает основные механизмы для управления процессами, реализует межпроцессные взаимодействия и производит планирование процессов. Оно также предоставляет небольшой набор вызовов ядра для авторизованных драйверов и серверов, например, для чтения части заданного пользовательского адресного пространства или записи в авторизованные порты ввода-вывода. В адресном пространстве микроядра работает драйвер таймера, но он планируется как отдельный процесс. Никакие другие драйверы в режиме ядра не работают. Над уровнем микроядра находится уровень драйверов устройств. Для каждого устройства ввода-вывода имеется собственный драйвер, выполняемый в виде отдельного процесса в собственном адресном пространстве, защищенном аппаратурой устройства управления памятью.
Драйверы работают в пользовательском режиме и не могут исполнять привилегированные команды, а также читать из портов компьютера или писать в них. Для получения последней возможности они должны производить вызовы ядра. Такая конструкция повышает надежность, хотя и порождает небольшие дополнительные расходы. Поверх уровня драйверов устройств располагается уровень серверов. Файловый сервер является небольшой (4 500 строк исполняемого кода) программой, которая принимает запросы от пользовательских процессов по обработке Posix-совместимых вызовов, относящихся к файлам read, write, lseek и stat, и выполняет их. На этом уровне находится и менеджер процессов, который поддерживает управление процессами и памятью и выполняет Posix-совместимые и другие системные вызовы, такие как fork, exec и brk. Сервер реинкарнации является родительским процессом всех других серверов и всех драйверов. Если драйвер или сервер аварийно или по собственной инициативе завершается, либо не отвечает на периодические запросы отклика, то сервер реинкарнации принудительно завершает его, если это требуется, и перезапускает из копии на диске или в основной памяти. В число других серверов входит сервер сети, поддерживающий весь стек TCP / IP; простой сервер имен, используемый всеми остальными серверами; и информационный сервер, способствующий отладке. Наконец, над уровнем серверов находятся пользовательские процессы (ПП). Для пользователей единственным отличием мультисерверной системы от других Unix-систем является то, что библиотечные процедуры для системных вызовов выполняют свою работу путем посылки сообщений серверам. Во всем остальном это обычные пользовательские процессы, в которых может использоваться API Posix. Межпроцессные взаимодействия (IPC) в MINIX 3 поддерживаются на основе передачи сообщений фиксированной длины с использованием принципа рандеву: система копирует сообщение напрямую от отправителя к получателю, когда оба они к этому готовы.
Кроме того, поддерживается механизм асинхронного уведомления о событиях. С системой передачи сообщений интегрирована обработка прерываний. Обработчики прерываний используют механизм уведомлений для сигнализации о завершении ввода-вывода. Этот механизм позволяет обработчику установить бит в битовой шкале «необработанных прерываний» драйвера и продолжить выполнение без блокировки. Когда драйвер становится готовым к получению прерывания, ядро преобразует его в обычное сообщение. Среди других особенностей, способствующих повышению надежности, наиболее важным является свойство самовосстановления. Если драйвер производит запись по неверному указателю, впадает в бесконечный цикл или неправильно ведет себя каким-либо другим образом, то сервер реинкарнации автоматически заменит его, часто без влияния на другие процессы. В соответствии с рассмотренной архитектурой микроядерной мультисерверной операционной системой ее граф состояний и переходов может быть представлен, как показано на рис. 3.
Перечислим состояния и соответственно вероятности нахождения системы в этих состояниях: P1 – вероятность работы микроядра операционной системы МЯ в привилегированном режиме; P2 – вероятность работы модулей сервисных процессов (СП) в пользовательском режиме; P3 – вероятность работы драйверов (ДР) в пользовательском режиме; P4 – вероятность работы сервера реинкарнации (СР) в пользовательском режиме; P5 – вероятность работы пользовательских приложений (ПП); P6 – вероятность отказа системы.
Аналогично тому, как это было сделано в предыдущей модели, определим интенсивности переходов системы из одного состояния в другое, сохраняя при этом характеристики выполняемых в системе программ пользователей ПП: λ1 – интенсивность системных вызовов со стороны прикладных программ, примем значение λ1 = 10 000 1 / c; λ2 – интенсивность системных вызовов со стороны прикладных программ, в выполнении которых участвуют сервисные процессы (СП) без устройств компьютерной системы и, следовательно, без драйверов. Учитывая (как принято в модели 1), что каждый 200‑й системный вызов требует участия драйверов устройств, тогда значение λ2 = 50 1 / c; λ3 – интенсивность системных вызовов со стороны прикладных программ, требующих участия в их выполнении драйверов устройств; λ3 = 50 1/c; λ4 – интенсивность выполнения системных вызовов драйверами устройств; пусть на выполнение одного вызова требуется 5 мс, тогда λ4 = 200 1 / c; λ5 – интенсивность передачи результатов системных вызовов, выполненных самим микроядром МЯ и драйверами совместно с сервисными процессами, в прикладную программу ПП. Примем среднее время передачи 0,01 мс. Тогда значение λ5 = 100 000 1 / c; λ6 – интенсивность передачи результатов завершения выполнения системных вызовов драйверами совместно с сервисными процессами, в пользовательские процессы ПП (по сути, это разблокировка процессов). Примем среднее время передачи 0,01 мс. Тогда значение λ6 = 100 000 1 / c.
Выше была принята наработка на отказ ядра Minix, равная 100 000 ч при шести программных ошибках. Примем размер драйверов 1 млн строк. Число программных ошибок в данном случае следует принять равным не менее 20 на 1 000 строк кода. Таким образом, драйверы содержат не менее 20 000 ошибок. Считая, что наработка на отказ обратно пропорциональна числу ошибок, получаем наработку на отказ для ДР, равную 30 ч. При таких допущениях λ7 = 0,00000923 1 / c. λ8 – интенсивность перезапуска драйверов сервером реинкарнации. Перезапуск может происходить из оперативной памяти или (если в данный момент там есть его копия) или с диска (в противном случае). Примем среднее значение времени перезапуска драйвера 0,01 мс. Таким образом, λ8 = 100 000 1 / c; λ9 – интенсивность отказов серверных процессов (СП). Будем считать, надежность работы СП примерно такая же, как и драйверов. В этом случае λ9 = 0,00000923 1 / c. λ10 – интенсивность перезапуска серверных процессов сервером реинкарнации. Можно считать это действие аналогичным действию перезапуска драйверов. Тогда λ10 = 100 000 1 / c; λ11 – интенсивность отказов сервера реинкарнации (СР). Следует считать, что СР также надежен, как и микроядро. В противном случае пропадает сама суть микроядерной операционной системы. Следовательно, наработка на отказ СР равна 100 000 ч и λ11 = 0,0000000028 1 / c; λ12 – интенсивность перезапуска сервера реинкарнации.
Предполагая, что этот процесс аналогичен перезапуску ДР и СП, будем считать, что λ12 = 100 000 1 / c; λ13 – интенсивность фатальных отказов СР (восстановление СР с помощью МЯ невозможно). Примем, что интенсивность таких отказов на порядок ниже интенсивности отказов СР, когда восстановление возможно, тогда λ13 = 0,0000000028 1 / c; λ14 – интенсивность фатальных отказов МЯ. Считая, что надежности СР и МЯ эквивалентны, λ14 = 0,0000000028 1 / c; λ15 – интенсивность фатальных отказов пользовательских приложений. Примем это значение, равным соответствующему значению в модели 1, то есть λ15 = 0,0000047 1 / c. λ16 – интенсивность перезагрузки операционной системы. Примем время перезагрузки равное трем минутам, тогда λ16 = 0,0055 1 / c. Аналогично тому, как это сделано в модели по рис. 2, составляем систему уравнений для модели по рис. 3:
(λ2 + λ6 + λ12 + λ14)P1 = λ5P2 + λ11P4 + λ1P5 + λ16P6;
(λ3 + λ5 + λ9)P2 = λ2P1 + λ4P3 + λ10P4;
(λ4 + λ7)P3 = λ3P2 + λ8P4;
(λ8 + λ10 + λ11 + λ13)P4 = λ12P1 + λ9P2 + λ7P3;
(λ1 + λ15)P5 = λ6P1;
λ16P6 = λ14P1 + λ13P4 + λ15P5;
P1 + P2 + P3 + P4 + P5 + P6 = 1. (4)
Исключаем из системы (4) первое уравнение. Учитывая установленные выше значения коэффициентов при переменных и записав систему уравнений в матричной форме, удобной для решения средствами Excel, получим систему (4) в следующем виде:
950P1 − 100 050P2 + 200P3 + 100000P4 + 0P5 + 0P6 = 0;
0P1 + 50P2 − 200P3 + 100 000P4 + 0P5 + 0P6 = 0;
100 000P1 + 0,00000923P2 + 0,00000923P3 −
− 200 000P4 + 0P5 + 0P6 = 0;
100 000P1 + 0P2 + 0P3 + 0P4 − 10 000P5 + 0P6 = 0;
0,0000000028P1 + 0P2 + 0P3 + 0,0000000028P4 +
+ 0,0000047P5 − 0,0055P6 = 0;
P1 + P2 + P3 + P4 + P5 + P6 = 1. (5)
Также как и после системы уравнений, описывающих первую модель ОС, на решении этой системы уравнений остановимся позже, после построения всех предлагаемых в статье моделей.
Модель операционной системы Касперского
По словам главы «Лаборатории Касперского» Евгения Касперского [17], сегодня существуют три глобальные проблемы безопасности, с которыми государствам и бизнесу приходится сталкиваться и которые «Лаборатория Касперского» решает, благодаря разработанной концепции кибериммунности и собственной операционной системе. Первая проблема – массовая киберпреступность. Успехи лаборатории в этой области широко известны. Свыше 400 млн пользователей и 270 тыс. корпоративных клиентов во всем мире уже доверяют свою защиту продуктам «Лаборатории Касперского». Вторая проблема – профессиональная киберпреступность, которая становится все более подготовленной, консолидированной и технически обеспеченной. Бороться с ней можно с помощью многофакторной эшелонированной защиты, включающей в себя защиту периметра, сети, трафика и др. Третья проблема – атаки на промышленную и критическую инфраструктуру, которые характеризуются наивысшей степенью риска и в случае успеха наносят наиболее сильный ущерб.
В критической инфраструктуре риски зашкаливают, и решить эту проблему только добавленными средствами безопасности невозможно. Именно поэтому лаборатория разработала концепцию кибериммунитета. Кибериммунной Е. Касперский называет такую систему, стоимость организации атаки на которую выше, чем возможный ущерб. Достичь этого позволяет операционная система Kaspersky OS с микроядерной архитектурой, где все связи и взаимодействия проходят уровень безопасности. Причем это разрешительная система безопасности, а не запретительная. Если какой-то ее элемент будет поражен, вредоносное ПО не проникнет дальше. В этом главное отличие Kaspersky OS от традиционных операционных систем. Важно, что этот принцип может быть реализован не только в операционных системах для ПК. На рынке уже представлено несколько устройств и комплексных решений, работающих на Kaspersky OS.
Понятие кибериммунитета основано на концепции Secure by Design (безопасность при разработке), ключевой принцип которой состоит в том, что безопасность должна являться неотъемлемой частью любой разрабатываемой системы, присутствовать в каждом ее компоненте и сопровождать весь цикл разработки, начиная с этапа проектирования. Таким образом, у системы как бы появляется «врожденный иммунитет» к различного рода киберугрозам – как существующим, так и новым. Kaspersky OS – это инструмент, который помогает сторонним разработчикам быстрее создавать более безопасные программные и аппаратные решения. В этом смысле можно определить кибериммунитет как инновационную комбинацию инструментов, методологий и способов разработки программного обеспечения по принципу Secure by Design.
Дальнейшее рассмотрение принципов, положенных в основу построения операционной системы Касперского, и особенностей архитектуры этой системы, базирующейся на кибериммунном подходе, будет дано в заключительной части статьи. В этой же части статьи будут приведены результаты расчета систем уравнений по всем рассмотренным моделям и обсуждены полученные результаты моделирования.
Литература
Назаров С. В. Эффективность и оптимизация компьютерных систем. Монография / 2‑е изд. М.: РУСАЙНС, 2021. 294 с.
Назаров С. В. Эффективность современных операционных систем // Современные информационные технологии и ИТ-образование. 2017. Т. 13 № 2. С. 9–24.
Назаров С. В., Вилкова Н. Н. Эффективность систем отображения информации коллективного пользования // Электросвязь. 2015. № 9. С. 29–33.
Назаров С. В., Вилкова Н. Н. Выбор оптимального варианта системы отображения информации коллективного пользования // Электросвязь. 2017. № 1. С. 60–65.
Таненбаум Э., Вудхалл А. Операционные системы. Разработка и реализация / 3‑е изд. СПб: Питер, 2007. 704 с.
Назаров С. В. Архитектура и проектирование программных систем: монография / 2‑е изд., перераб. и доп. М.: ИНФРА-М, 2016. 376 с.
Таненбаум Э., Хердер Дж., Бос Х. Построение надежных операционных систем, допускающих наличие ненадежных драйверов устройств. [Электронный ресурс]. URL: http://citforum.ru/operating_systems/microkernel_tanenbaum/
Назаров С. В., Широков А. И. Технологии многопользовательских операционных систем. М.: Изд. дом МИСиС, 2012. 296 с.
Назаров С. В., Вилкова Н. Н. Структурный рефакторинг многослойных программных систем // Информационные технологии и вычислительные системы. 2016. № 4. С. 13–23.
Tanenbaum Andrew S., Herder Jorrit N., Bos Herbert. Vrije Universiteit, Amsterdam. Can We Make Operating Systems Reliable and Secure? Computer (IEEE Computer Society, V. 39, No 5, May 2006).
Хердер Й., Бос Х., Таненбаум Э. Построение надежных операционных систем, допускающих наличие ненадежных драйверов устройств, 2006. [Электронный ресурс]. URL: http://citforum.ru/operating_systems/reliable_os/
Tanenbaum A. Introduction to MINIX 3 // OS News is Exploring the Future of Computing. 2006. [Электронный ресурс]. URL: http://www.osnews.com/story/15960/
Игнатов Р. MINIX 3 – реинкарнация? [Электронный ресурс]. URL: http://www.minix3.ru/articles/Ignatov-_minix_reincarnation.pdf
Таненбаум Э., Бос Э. Современные операционные системы // 4‑е изд. СПб: Питер, 2015. 1120 с.
Кельберт М. Я., Сухов Ю. М. Вероятность и статистика в примерах и задачах. Т. 2. Марковские цепи как отправная точка теории случайных процессов и их приложения. М.: МЦНМО, 2009. 476 с.
Кемени Дж., Снелл Дж. Конечные цепи Маркова. М.: Наука, 1970. 273 с.
Блинов А. Лаборатория Касперского – об основах кибериммунитета и концепции KasperskyOS. [Электронный ресурс]. URL: https://spbit.ru/news/Laboratoriya-Kasperskogo-ob-osnovakh-kiberimmuniteta
Архитектура KasperskyOS [Электронный ресурс]. URL: https://support.kaspersky.ru/help/KCE/1.1/ru-RU/overview_architecture.htm
Микроядро KasperskyOS. [Электронный ресурс]. URL: https://os.kaspersky.ru/technologies/microkernel/?ysclid=ll3ego7wh4870216945
Часть 2
С. Назаров, д. т. н.1, А. Барсуков, к. т. н.2
Во второй части статьи представлены модели двух основных архитектур операционных систем, которые наиболее широко распространены в реальных системах различных производителей. Приведены их представления в форме графов состояний и переходов, позволяющие определить основные параметры надежности функционирования систем по правилам составления систем алгебраических уравнений для установившегося состояния системы. Дана информация по принципу кибериммунного построения системы, положенного в основу операционной системы Касперского.
Модель операционной системы с многоуровневым модульным ядром
Граф состояний и переходов компьютерной системы с многоуровневой модульной операционной системой (типа Linux) представлен на рис. 2. Перечислим состояния и соответственно вероятности нахождения системы в этих состояниях: P1 – вероятность работы ядра операционной системы ОСЯ в привилегированном режиме; P2 – вероятность работы модулей операционной системы ОСП в пользовательском режиме; P3 – вероятность работы пользовательских приложений ПП; P4 – вероятность отказа системы.
Определим интенсивности переходов системы из одного состояния в другое (здесь и далее параметры моделей выбраны на основе измерений в реальных операционных системах [2]): λ1 – интенсивность системных вызовов со стороны прикладных программ, примем значение λ1 = 10 000 1 / c; λ2 – интенсивность системных вызовов со стороны прикладных программ, в выполнении которых участвуют устройства системы с соответствующими драйверами; пусть каждый 200‑й системный вызов требует участия драйверов устройств, тогда значение λ2 = 50 1 / c; λ3 – интенсивность выполнения системных вызовов драйверами устройств. Пусть на выполнение одного вызова требуется 5 мс, тогда λ3 = 200 1 / c; λ4 – интенсивность передачи выполненных системных вызовов в прикладные программы. Эти вызовы выполняются только ОСЯ (назовем их короткими) или совместно с ОСП или ОСЯ передает результат работы ОСП (назовем их длинными). Примем среднее время передачи выполненных системных вызовов 0,1 мс. Тогда значение λ4 = 10 000 1 / c; λ5 – интенсивность отказов ОСЯ. Выше была принята интенсивность отказов ядра Minix равной 100 000 ч при 6 программных ошибках. Размер ОСЯ был принят равным 10 млн строк. Число программных ошибок в данном случае следует принять равным не менее 3 ошибок на 1 000 строк. Таким образом, ОСЯ содержит не менее 30 000 ошибок. Считая, что наработка на отказ обратно пропорциональна числу ошибок, получаем наработку на отказ для ОСЯ, равную 20 ч. При таких допущениях λ5 = 0,000014 1 / c.
λ6 – интенсивность отказов ОСП. Размер ОСП был принят равным 20 млн строк. Число программных ошибок в данном случае следует принять равным не менее 10 на 1 000 строк кода (как отмечено выше, число ошибок в драйверах в три и более раз превышает число ошибок в программах ядра. Число ошибок в ОСП при принятых допущениях не менее 300 000. Однако следует заметить, реально используется в работе не более 1 / 10 возможностей ОСП. С учетом этого допущения можно принять λ6 = 0,000014 1 / c. λ7 – интенсивность отказов ПП. Считая средний размер пользовательского приложения 20 000 строк, можно считать, что в нем (при 20 ошибках на 1 000 строк) порядка 400 ошибок. Отсюда λ7 = 0,0000047 1 / c. λ8 – интенсивность перезагрузки операционной системы. Примем время перезагрузки равным 3 мин, тогда λ8 = 0,0055 1 / c.
По графу состояний и переходов системы, представленному на рис. 2, можно составить систему уравнений, руководствуясь следующим правилом: слева в уравнениях стоит предельная вероятность данного состояния Pi, умноженная на суммарную интенсивность всех потоков, ведущих из данного состояния, а справа – сумма произведений интенсивностей всех потоков, входящих в i-е состояние, на вероятности тех состояний, из которых эти потоки исходят.
Полученная система уравнений имеет следующий вид:
(λ2 + λ4 + λ5) P1 = λ1P3 + λ3P2 + λ8P4;
(λ3 + λ6)P2 = λ2P1;
(λ1 + λ7)P3 = λ4P1;
λ8P4 = λ5P1 + λ6P2 + λ7P3. (1)
В данном случае имеем четыре уравнения в системе (1) при четырех неизвестных. Уравнения однородны (не имеют свободного члена) и определяют неизвестные только с точностью до произвольного множителя. Но можно воспользоваться так называемым нормировочным условием и с его помощью решить систему. При этом одно (любое) из уравнений можно отбросить (оно вытекает как следствие из остальных). Отбросим первое уравнение и, таким образом, получаем следующую систему уравнений:
(λ3 + λ6)P2 = λ2P1;
(λ1 + λ7)P3 = λ4P1;
λ8P4 = λ5P1 + λ6P2 + λ7P3;
P1 + P2 + P3 + P4 = 1. (2)
Подставив определенные выше значения коэффициентов при переменных и записав систему уравнений в матричной форме, удобной для решения средствами Excel, получим систему (2) в следующем виде:
50P1 − 200,000014P2 + 0P3 + 0P4 = 0;
10 000P1 + 0P2 − 10000,0000047P3 + 0P4 = 0;
0,000014P1 + 0,000014P2 + 0,0000047P3 − 0,0055P4 = 0; 1P1 + 1P2 + 1P3 + 1P4 = 1. (3)
На решении этой системы уравнений остановимся позже, после построения всех предлагаемых в статье моделей.
Модель мультисерверной
микроядерной операционной системы
В качестве примера такой операционной системы возьмем Unix-подобную структуру MINIX 3, предложенную Э. Таненбаумом более 15 лет назад [12]. В данном случае предлагается иметь несколько небольших модулей (микроядро – МЯ и сервер реинкарнации – СР), работающих в режиме ядра, остальная часть операционной системы представляет собой набор полностью изолированных серверов (серверных процессы – СП) и драйверов (ДР), работающих в режиме пользователя. В операционной системе MINIX 3 микроядро обрабатывает прерывания, обеспечивает основные механизмы для управления процессами, реализует межпроцессные взаимодействия и производит планирование процессов. Оно также предоставляет небольшой набор вызовов ядра для авторизованных драйверов и серверов, например, для чтения части заданного пользовательского адресного пространства или записи в авторизованные порты ввода-вывода. В адресном пространстве микроядра работает драйвер таймера, но он планируется как отдельный процесс. Никакие другие драйверы в режиме ядра не работают. Над уровнем микроядра находится уровень драйверов устройств. Для каждого устройства ввода-вывода имеется собственный драйвер, выполняемый в виде отдельного процесса в собственном адресном пространстве, защищенном аппаратурой устройства управления памятью.
Драйверы работают в пользовательском режиме и не могут исполнять привилегированные команды, а также читать из портов компьютера или писать в них. Для получения последней возможности они должны производить вызовы ядра. Такая конструкция повышает надежность, хотя и порождает небольшие дополнительные расходы. Поверх уровня драйверов устройств располагается уровень серверов. Файловый сервер является небольшой (4 500 строк исполняемого кода) программой, которая принимает запросы от пользовательских процессов по обработке Posix-совместимых вызовов, относящихся к файлам read, write, lseek и stat, и выполняет их. На этом уровне находится и менеджер процессов, который поддерживает управление процессами и памятью и выполняет Posix-совместимые и другие системные вызовы, такие как fork, exec и brk. Сервер реинкарнации является родительским процессом всех других серверов и всех драйверов. Если драйвер или сервер аварийно или по собственной инициативе завершается, либо не отвечает на периодические запросы отклика, то сервер реинкарнации принудительно завершает его, если это требуется, и перезапускает из копии на диске или в основной памяти. В число других серверов входит сервер сети, поддерживающий весь стек TCP / IP; простой сервер имен, используемый всеми остальными серверами; и информационный сервер, способствующий отладке. Наконец, над уровнем серверов находятся пользовательские процессы (ПП). Для пользователей единственным отличием мультисерверной системы от других Unix-систем является то, что библиотечные процедуры для системных вызовов выполняют свою работу путем посылки сообщений серверам. Во всем остальном это обычные пользовательские процессы, в которых может использоваться API Posix. Межпроцессные взаимодействия (IPC) в MINIX 3 поддерживаются на основе передачи сообщений фиксированной длины с использованием принципа рандеву: система копирует сообщение напрямую от отправителя к получателю, когда оба они к этому готовы.
Кроме того, поддерживается механизм асинхронного уведомления о событиях. С системой передачи сообщений интегрирована обработка прерываний. Обработчики прерываний используют механизм уведомлений для сигнализации о завершении ввода-вывода. Этот механизм позволяет обработчику установить бит в битовой шкале «необработанных прерываний» драйвера и продолжить выполнение без блокировки. Когда драйвер становится готовым к получению прерывания, ядро преобразует его в обычное сообщение. Среди других особенностей, способствующих повышению надежности, наиболее важным является свойство самовосстановления. Если драйвер производит запись по неверному указателю, впадает в бесконечный цикл или неправильно ведет себя каким-либо другим образом, то сервер реинкарнации автоматически заменит его, часто без влияния на другие процессы. В соответствии с рассмотренной архитектурой микроядерной мультисерверной операционной системой ее граф состояний и переходов может быть представлен, как показано на рис. 3.
Перечислим состояния и соответственно вероятности нахождения системы в этих состояниях: P1 – вероятность работы микроядра операционной системы МЯ в привилегированном режиме; P2 – вероятность работы модулей сервисных процессов (СП) в пользовательском режиме; P3 – вероятность работы драйверов (ДР) в пользовательском режиме; P4 – вероятность работы сервера реинкарнации (СР) в пользовательском режиме; P5 – вероятность работы пользовательских приложений (ПП); P6 – вероятность отказа системы.
Аналогично тому, как это было сделано в предыдущей модели, определим интенсивности переходов системы из одного состояния в другое, сохраняя при этом характеристики выполняемых в системе программ пользователей ПП: λ1 – интенсивность системных вызовов со стороны прикладных программ, примем значение λ1 = 10 000 1 / c; λ2 – интенсивность системных вызовов со стороны прикладных программ, в выполнении которых участвуют сервисные процессы (СП) без устройств компьютерной системы и, следовательно, без драйверов. Учитывая (как принято в модели 1), что каждый 200‑й системный вызов требует участия драйверов устройств, тогда значение λ2 = 50 1 / c; λ3 – интенсивность системных вызовов со стороны прикладных программ, требующих участия в их выполнении драйверов устройств; λ3 = 50 1/c; λ4 – интенсивность выполнения системных вызовов драйверами устройств; пусть на выполнение одного вызова требуется 5 мс, тогда λ4 = 200 1 / c; λ5 – интенсивность передачи результатов системных вызовов, выполненных самим микроядром МЯ и драйверами совместно с сервисными процессами, в прикладную программу ПП. Примем среднее время передачи 0,01 мс. Тогда значение λ5 = 100 000 1 / c; λ6 – интенсивность передачи результатов завершения выполнения системных вызовов драйверами совместно с сервисными процессами, в пользовательские процессы ПП (по сути, это разблокировка процессов). Примем среднее время передачи 0,01 мс. Тогда значение λ6 = 100 000 1 / c.
Выше была принята наработка на отказ ядра Minix, равная 100 000 ч при шести программных ошибках. Примем размер драйверов 1 млн строк. Число программных ошибок в данном случае следует принять равным не менее 20 на 1 000 строк кода. Таким образом, драйверы содержат не менее 20 000 ошибок. Считая, что наработка на отказ обратно пропорциональна числу ошибок, получаем наработку на отказ для ДР, равную 30 ч. При таких допущениях λ7 = 0,00000923 1 / c. λ8 – интенсивность перезапуска драйверов сервером реинкарнации. Перезапуск может происходить из оперативной памяти или (если в данный момент там есть его копия) или с диска (в противном случае). Примем среднее значение времени перезапуска драйвера 0,01 мс. Таким образом, λ8 = 100 000 1 / c; λ9 – интенсивность отказов серверных процессов (СП). Будем считать, надежность работы СП примерно такая же, как и драйверов. В этом случае λ9 = 0,00000923 1 / c. λ10 – интенсивность перезапуска серверных процессов сервером реинкарнации. Можно считать это действие аналогичным действию перезапуска драйверов. Тогда λ10 = 100 000 1 / c; λ11 – интенсивность отказов сервера реинкарнации (СР). Следует считать, что СР также надежен, как и микроядро. В противном случае пропадает сама суть микроядерной операционной системы. Следовательно, наработка на отказ СР равна 100 000 ч и λ11 = 0,0000000028 1 / c; λ12 – интенсивность перезапуска сервера реинкарнации.
Предполагая, что этот процесс аналогичен перезапуску ДР и СП, будем считать, что λ12 = 100 000 1 / c; λ13 – интенсивность фатальных отказов СР (восстановление СР с помощью МЯ невозможно). Примем, что интенсивность таких отказов на порядок ниже интенсивности отказов СР, когда восстановление возможно, тогда λ13 = 0,0000000028 1 / c; λ14 – интенсивность фатальных отказов МЯ. Считая, что надежности СР и МЯ эквивалентны, λ14 = 0,0000000028 1 / c; λ15 – интенсивность фатальных отказов пользовательских приложений. Примем это значение, равным соответствующему значению в модели 1, то есть λ15 = 0,0000047 1 / c. λ16 – интенсивность перезагрузки операционной системы. Примем время перезагрузки равное трем минутам, тогда λ16 = 0,0055 1 / c. Аналогично тому, как это сделано в модели по рис. 2, составляем систему уравнений для модели по рис. 3:
(λ2 + λ6 + λ12 + λ14)P1 = λ5P2 + λ11P4 + λ1P5 + λ16P6;
(λ3 + λ5 + λ9)P2 = λ2P1 + λ4P3 + λ10P4;
(λ4 + λ7)P3 = λ3P2 + λ8P4;
(λ8 + λ10 + λ11 + λ13)P4 = λ12P1 + λ9P2 + λ7P3;
(λ1 + λ15)P5 = λ6P1;
λ16P6 = λ14P1 + λ13P4 + λ15P5;
P1 + P2 + P3 + P4 + P5 + P6 = 1. (4)
Исключаем из системы (4) первое уравнение. Учитывая установленные выше значения коэффициентов при переменных и записав систему уравнений в матричной форме, удобной для решения средствами Excel, получим систему (4) в следующем виде:
950P1 − 100 050P2 + 200P3 + 100000P4 + 0P5 + 0P6 = 0;
0P1 + 50P2 − 200P3 + 100 000P4 + 0P5 + 0P6 = 0;
100 000P1 + 0,00000923P2 + 0,00000923P3 −
− 200 000P4 + 0P5 + 0P6 = 0;
100 000P1 + 0P2 + 0P3 + 0P4 − 10 000P5 + 0P6 = 0;
0,0000000028P1 + 0P2 + 0P3 + 0,0000000028P4 +
+ 0,0000047P5 − 0,0055P6 = 0;
P1 + P2 + P3 + P4 + P5 + P6 = 1. (5)
Также как и после системы уравнений, описывающих первую модель ОС, на решении этой системы уравнений остановимся позже, после построения всех предлагаемых в статье моделей.
Модель операционной системы Касперского
По словам главы «Лаборатории Касперского» Евгения Касперского [17], сегодня существуют три глобальные проблемы безопасности, с которыми государствам и бизнесу приходится сталкиваться и которые «Лаборатория Касперского» решает, благодаря разработанной концепции кибериммунности и собственной операционной системе. Первая проблема – массовая киберпреступность. Успехи лаборатории в этой области широко известны. Свыше 400 млн пользователей и 270 тыс. корпоративных клиентов во всем мире уже доверяют свою защиту продуктам «Лаборатории Касперского». Вторая проблема – профессиональная киберпреступность, которая становится все более подготовленной, консолидированной и технически обеспеченной. Бороться с ней можно с помощью многофакторной эшелонированной защиты, включающей в себя защиту периметра, сети, трафика и др. Третья проблема – атаки на промышленную и критическую инфраструктуру, которые характеризуются наивысшей степенью риска и в случае успеха наносят наиболее сильный ущерб.
В критической инфраструктуре риски зашкаливают, и решить эту проблему только добавленными средствами безопасности невозможно. Именно поэтому лаборатория разработала концепцию кибериммунитета. Кибериммунной Е. Касперский называет такую систему, стоимость организации атаки на которую выше, чем возможный ущерб. Достичь этого позволяет операционная система Kaspersky OS с микроядерной архитектурой, где все связи и взаимодействия проходят уровень безопасности. Причем это разрешительная система безопасности, а не запретительная. Если какой-то ее элемент будет поражен, вредоносное ПО не проникнет дальше. В этом главное отличие Kaspersky OS от традиционных операционных систем. Важно, что этот принцип может быть реализован не только в операционных системах для ПК. На рынке уже представлено несколько устройств и комплексных решений, работающих на Kaspersky OS.
Понятие кибериммунитета основано на концепции Secure by Design (безопасность при разработке), ключевой принцип которой состоит в том, что безопасность должна являться неотъемлемой частью любой разрабатываемой системы, присутствовать в каждом ее компоненте и сопровождать весь цикл разработки, начиная с этапа проектирования. Таким образом, у системы как бы появляется «врожденный иммунитет» к различного рода киберугрозам – как существующим, так и новым. Kaspersky OS – это инструмент, который помогает сторонним разработчикам быстрее создавать более безопасные программные и аппаратные решения. В этом смысле можно определить кибериммунитет как инновационную комбинацию инструментов, методологий и способов разработки программного обеспечения по принципу Secure by Design.
Дальнейшее рассмотрение принципов, положенных в основу построения операционной системы Касперского, и особенностей архитектуры этой системы, базирующейся на кибериммунном подходе, будет дано в заключительной части статьи. В этой же части статьи будут приведены результаты расчета систем уравнений по всем рассмотренным моделям и обсуждены полученные результаты моделирования.
Литература
Назаров С. В. Эффективность и оптимизация компьютерных систем. Монография / 2‑е изд. М.: РУСАЙНС, 2021. 294 с.
Назаров С. В. Эффективность современных операционных систем // Современные информационные технологии и ИТ-образование. 2017. Т. 13 № 2. С. 9–24.
Назаров С. В., Вилкова Н. Н. Эффективность систем отображения информации коллективного пользования // Электросвязь. 2015. № 9. С. 29–33.
Назаров С. В., Вилкова Н. Н. Выбор оптимального варианта системы отображения информации коллективного пользования // Электросвязь. 2017. № 1. С. 60–65.
Таненбаум Э., Вудхалл А. Операционные системы. Разработка и реализация / 3‑е изд. СПб: Питер, 2007. 704 с.
Назаров С. В. Архитектура и проектирование программных систем: монография / 2‑е изд., перераб. и доп. М.: ИНФРА-М, 2016. 376 с.
Таненбаум Э., Хердер Дж., Бос Х. Построение надежных операционных систем, допускающих наличие ненадежных драйверов устройств. [Электронный ресурс]. URL: http://citforum.ru/operating_systems/microkernel_tanenbaum/
Назаров С. В., Широков А. И. Технологии многопользовательских операционных систем. М.: Изд. дом МИСиС, 2012. 296 с.
Назаров С. В., Вилкова Н. Н. Структурный рефакторинг многослойных программных систем // Информационные технологии и вычислительные системы. 2016. № 4. С. 13–23.
Tanenbaum Andrew S., Herder Jorrit N., Bos Herbert. Vrije Universiteit, Amsterdam. Can We Make Operating Systems Reliable and Secure? Computer (IEEE Computer Society, V. 39, No 5, May 2006).
Хердер Й., Бос Х., Таненбаум Э. Построение надежных операционных систем, допускающих наличие ненадежных драйверов устройств, 2006. [Электронный ресурс]. URL: http://citforum.ru/operating_systems/reliable_os/
Tanenbaum A. Introduction to MINIX 3 // OS News is Exploring the Future of Computing. 2006. [Электронный ресурс]. URL: http://www.osnews.com/story/15960/
Игнатов Р. MINIX 3 – реинкарнация? [Электронный ресурс]. URL: http://www.minix3.ru/articles/Ignatov-_minix_reincarnation.pdf
Таненбаум Э., Бос Э. Современные операционные системы // 4‑е изд. СПб: Питер, 2015. 1120 с.
Кельберт М. Я., Сухов Ю. М. Вероятность и статистика в примерах и задачах. Т. 2. Марковские цепи как отправная точка теории случайных процессов и их приложения. М.: МЦНМО, 2009. 476 с.
Кемени Дж., Снелл Дж. Конечные цепи Маркова. М.: Наука, 1970. 273 с.
Блинов А. Лаборатория Касперского – об основах кибериммунитета и концепции KasperskyOS. [Электронный ресурс]. URL: https://spbit.ru/news/Laboratoriya-Kasperskogo-ob-osnovakh-kiberimmuniteta
Архитектура KasperskyOS [Электронный ресурс]. URL: https://support.kaspersky.ru/help/KCE/1.1/ru-RU/overview_architecture.htm
Микроядро KasperskyOS. [Электронный ресурс]. URL: https://os.kaspersky.ru/technologies/microkernel/?ysclid=ll3ego7wh4870216945
Отзывы читателей