Введение
В
соответствии с Доктриной информационной
безопасности Российской Федерации, утвержденной
Президентом Российской Федерации
9 сентября 2000 года № Пр-1895, одна из составляющих
национальных интересов Российской
Федерации в информационной сфере
включает в себя «развитие современных
информационных технологий, отечественной
индустрии информации, в том числе
индустрии средств информатизации,
телекоммуникации и связи, обеспечение
потребностей внутреннего рынка
ее продукцией и выход этой продукции
на мировой рынок, а также обеспечение
накопления, сохранности и эффективного
использования отечественных информационных
ресурсов». При этом отмечается, что к
основным направлениям обеспечения информационной
безопасности Российской Федерации в
общегосударственных информационных
и телекоммуникационных системах относится
«создание и применение информационных
и автоматизированных систем управления
в защищенном исполнении».
Как
следствие указанных положений
Доктрины информационной безопасности,
Президентом Российской Федерации
21 мая 2006 года № Пр-843 утверждены Приоритетные
направления развития науки, технологий
и техники в Российской Федерации,
в которые включены информационно-телекоммуникационные
системы.
Анализ
указанных, а также других нормативно-правовых
документов позволяет утверждать, что
разработка современных, высоконадежных
программных средств является важной
государственной задачей, позволяющей
обеспечить технологическую независимость
и, как следствие, информационную безопасность
Российской Федерации.
Особое
место среди программных средств,
использующихся во всех без исключения
автоматизированных системах государственного,
военного, коммерческого и иного
назначения, занимают операционные системы
(ОС), под которыми, в общем случае понимают
комплекс программ, которые обеспечивают
управление аппаратурой ЭВМ, планирование
эффективного использования её ресурсов
и решение задач по заданиям пользователей.
На
современном этапе развития ОС на
передний план вышли средства обеспечения
безопасности. Это связано с возросшей
ценностью информации, обрабатываемой
в автоматизированных системах, а также
с повышенным уровнем угроз, существующих
при передаче данных по сетям, особенно
по публичным, таким как Интернет. Многие
ОС обладают сегодня развитыми средствами
защиты информации, основанными на шифрации
данных, аутентификации и авторизации.
Вместе с тем, несмотря на достигнутые
успехи, проблему обеспечения безопасности
на уровне операционных систем на текущий
момент нельзя считать решенной по ряду
причин.
- Интенсивное
развитие аппаратной составляющей современных
ЭВМ требует постоянного совершенствования
программного обеспечения, включая ОС.
При этом выпускаемые обновления должны
быть не только совместимы с существующим
программно-аппаратным обеспечением,
но и не ухудшать характеристики по безопасности
всего комплекса.
- Использование
ОС иностранного производства требует
проведения их проверки на соответствие
требованиям по информационной безопасности
и, как правило, соответствующей доработки.
В условиях постоянного выпуска новых
ОС или их версий длительность разработки
сравнима с длительностью процедуры доработки
и сертификации, что заведомо ставит страны,
использующие данную стратегию, в ряды
технологически отсталых стран.
- Современные
ОС представляют собой сложные программные
комплексы со значительным объемом кода.
Как следствие, сертификация по требованиям
информационной безопасности, при условии
производства ОС сторонними разработчиками,
носит вероятностный характер.
Осознавая
ключевую роль операционных систем, ведущие
промышленно развитые государства
организуют их собственную разработку.
В качестве примера можно отметить, что
в начале сентября 2010 года о создании собственной
операционной системы на базе ПО с открытым
кодом заявила Украина. Ранее об аналогичных
проектах, по имеющимся сведениям, заявили
Германия, Франция, Китай и др. страны.
Российская Федерация
также имеет опыт по разработке собственных
операционных систем, как оригинальных,
так и на базе ПО с открытым кодом.
Наиболее известным проектом является
ОС МСВС, внедряемая в настоящее время
в Вооруженных силах. Также можно отметить
«Феникс» - разработку СПбГТУ, распространяемую
под коммерческим названием «Фебос» и
другие системы. В целом указанные ОС не
получили достаточно широкого распространения,
что обусловлено не только необходимостью
разработки для них соответствующего
совместимого программного обеспечения.
На наш взгляд
основное противоречие носит системный
характер: с одной стороны пользователи
привыкли к функциональности и удобству
операционных систем домашних компьютеров,
с другой стороны требования к
защищенным системам не только накладывают
ограничения на аппаратно-программный
комплекс в целом, но и заставляют пользователей
подчиняться организационно-режимным
мерам. Указанное противоречие, судя по
наметившейся тенденции существенного
удешевления аппаратной базы, будет разрешаться
за счет создания специализированных
устройств типа Blackberry. В этом случае вынужденная
по экономическим причинам унификация
на уровне программных и аппаратных компонент
«бытовых» и «специализированных» автоматизированных
систем будет де-факто отменена разработкой
узконаправленных комплексов.
Вместе с тем, если
для разработки аппаратных компонент
и прикладного программного обеспечения
существуют отработанные подходы и
методики, то для операционных систем,
в силу определенной уникальности и
специфичности этого вида программного
продукта, в общем виде не существует методов,
позволяющий обеспечивать заданные требования
по надежности и безопасности.
Таким
образом, разработка методов создания
безопасных операционных систем является
актуальной научной и перспективной практической
задачей.
Основные
понятия и определения
Основная
цель ОС, обеспечивающей работу ЭВМ
в любом из описанных режимов,
- динамическое распределение ресурсов
и управление ими в соответствии
с требованиями вычислительных процессов
(задач).
Ресурсом
является всякий объект, который может
распределяться операционной системой
между вычислительными процессами
в ЭВМ. Различают аппаратные и
программные ресурсы ЭВМ. К аппаратным
ресурсам относятся микропроцессор
(процессорное время), оперативная память
и периферийные устройства; к программным
ресурсам – доступные пользователю
программные средства для управления
вычислительными процессами и данными.
Важнейшими программными ресурсами
являются программы, входящие в систему
программирования; средства программного
управления периферийными устройствами
и файлами; библиотеки системных
и прикладных программ; средства, обеспечивающие
контроль и взаимодействие вычислительных
процессов (задач).
Операционная
система распределяет ресурсы в
соответствии с запросами пользователей
и возможностями ЭВМ и с
учетом взаимодействия вычислительных
процессов. Функции ОС также реализуются
рядом вычислительных процессов, которые
сами потребляют ресурсы (память, процессорное
время и др.) Вычислительные процессы,
относящиеся к ОС, управляют вычислительными
процессами, созданными по запросу пользователей.
Считается,
что ресурс работает в режиме разделения,
если каждый из вычислительных процессов
занимает его в течение некоторого
интервала времени. Например, два
процесса могут разделять процессорное
время поровну, если каждому процессу
дается возможность использовать процессор
в течение одной секунды из
каждых двух секунд. Аналогично происходит
разделение всех аппаратурных ресурсов,
но интервалы использования ресурсов
процессами могут быть неодинаковыми.
Например, процесс может получить
в своё распоряжение часть оперативной
памяти на весь период своего существования,
но микропроцессор может быть доступен
процессу только в течение одной
секунды из каждых четырёх. [3,стр.56]
Операционные
системы (ОС) классифицируют:
- по особенностям
алгоритмов управления ресурсами –
локальные и сетевые
ОС. Локальные ОС управляют ресурсами
отдельного компьютера. Сетевые ОС участвуют
в управлении ресурсами сети;
- по числу
одновременно выполняемых задач – однозадачные
и многозадачные. Однозадачные ОС
выполняют функцию предоставления пользователю
виртуальной вычислительной машины, обеспечивая
его простым и удобным интерфейсом взаимодействия
с компьютером, средствами управления
периферийными устройствами и файлами.
Многозадачные ОС, кроме вышеперечисленных
функций, управляют разделением совместно
используемых ресурсов, таких как процессор,
оперативная память, файлы и внешние устройства;
- по числу
одновременно работающих пользователей
– однопользовательские и многопользовательские.
Основным отличием многопользовательских
систем от однопользовательских является
наличие средств защиты информации каждого
пользователя от несанкционированного
доступа других пользователей;
- по возможности
распараллеливания вычислений в рамках
одной задачи – поддержка
многонитевости. Многонитевая ОС разделяет
процессорное время не между задачами,
а между их отдельными ветвями – нитями;
- по способу
распределения процессорного времени
между несколькими одновременно существующими
в системе процессами или нитями – невытесняющая
многозадачность и вытесняющая
многозадачность. В невытесняющей многозадачности
механизм планирования процессов целиком
сосредоточен в операционной системе,
а в вытесняющей распределен между системой
и прикладными программами. При невытесняющей
многозадачности активный процесс выполняется
до тех пор, пока он сам по собственной
инициативе не передаст управление операционной
системе для выбора из очереди другого
готового к выполнению процесса. При вытесняющей
многозадачности решение о переключении
процессора с одного процесса на другой
принимается операционной системой, а
не самим активным процессом;
- по отсутствию
или наличию в ней средств поддержки
многопроцессорной
обработки. Многопроцессорные ОС, в
свою очередь, могут классифицироваться
по способу организации вычислительного
процесса в системе с многопроцессорной
архитектурой: асимметричные
ОС и симметричные
ОС. Асимметричная ОС целиком выполняется
только на одном из процессоров системы,
распределяя прикладные задачи по остальным
процессорам. Симметричная ОС полностью
децентрализована и использует весь набор
процессоров, разделяя их между системными
и прикладными задачами;
- по ориентации
на аппаратные средства – операционные
системы персональных
компьютеров, серверов, мейнфреймов,
кластеров;
- по зависимости
от аппаратных платформ – зависимые
и мобильные. В мобильных ОС аппаратно
зависимые места локализованы так, что
при переносе системы на новую платформу
переписываются только они. Средством,
облегчающим перенос ОС на другой тип
компьютера является написание ее на машиннонезависимом
языке, например, на С;
- по особенностям
областей использования – ОС пакетной
обработки, разделения
времени, реального
времени. Системы пакетной обработки
предназначены для решения задач вычислительного
характера, не требующих быстрого получения
результатов. Главной целью и критерием
эффективности систем пакетной обработки
является максимальная пропускная способность,
то есть решение максимального числа задач
в единицу времени. В системах с разделением
времени каждому пользователю предоставляется
терминал, с которого он может вести диалог
со своей программой. Каждой задаче выделяется
некоторый квант процессорного времени,
так что ни одна задача не занимает процессор
надолго. Если квант времени выбран небольшим,
то у всех пользователей, одновременно
работающих на одном компьютере, создается
впечатление, что каждый из них единолично
использует машину. Системы реального
времени применяются для управления различными
техническими объектами, когда существует
предельно допустимое время, в течение
которого должна быть выполнена та или
иная программа управления объектом. Невыполнение
программы в срок может привести к аварийной
ситуации. Таким образом, критерием эффективности
систем реального времени является их
способность выдерживать заранее заданные
интервалы времени между запуском программы
и получением результата – управляющего
воздействия;
- по структурной
организации и концепциям, положенным
в основу:
- по способу
построения ядра системы – монолитное
ядро или микроядерный
подход. ОС использующие монолитное
ядро, компонуются как одна программа,
работающая в привилегированном режиме
и использующая быстрые переходы с одной
процедуры на другую, не требующие переключения
из привилегированного режима в пользовательский
и наоборот. При построении ОС на базе
микроядра, работающего в привилегированном
режиме и выполняющего только минимум
функций по управлению аппаратурой, функции
более высокого уровня выполняют специализированные
компоненты ОС – программные серверы,
работающие в пользовательском режиме.
При таком построении ОС работает более
медленно, так как часто выполняются переходы
между привилегированным режимом и пользовательским,
но система получается более гибкой и
ее функции можно модифицировать, добавляя
или исключая серверы пользовательского
режима;
- по построению
на базе объектно-ориентированного
подхода;
- по наличию
нескольких прикладных
сред в рамках одной ОС, позволяющих
выполнять приложения, разработанные
для нескольких операционных систем. Концепция
множественных прикладных сред наиболее
просто реализуется в ОС на базе микроядра,
над которым работают различные серверы,
часть которых реализуют прикладную среду
той или иной операционной системы;
- по распределению
функций операционной
системы среди компьютеров сети. В распределенной
ОС реализованы механизмы, обеспечивающие
пользователя возможностью представлять
и воспринимать сеть в виде однопроцессорного
компьютера. Признаками распределенной
ОС является наличие единой справочной
службы разделяемых ресурсов и службы
времени, использование механизма вызова
удаленных процедур для распределения
программных процедур по машинам, многонитевой
обработки, позволяющей распараллеливать
вычисления в рамках одной задачи и выполнять
эту задачу одновременно на нескольких
компьютерах сети, а также наличие других
распределенных служб
Основные
подходы к обеспечению
качества программного
обеспечения
В
современных условиях, при создании
критического программного обеспечения,
к которому без сомнения относятся
операционные системы, одним из ключевых
моментов программной или программно-аппаратной
реализации алгоритма является обеспечение
его качества или, как еще принято
говорить, надежности.
В
общем случае под надёжностью
понимается свойство объекта сохранять
во времени значения всех параметров,
характеризующих способность выполнять
требуемые функции в заданных
режимах и условиях применения, технического
обслуживания, ремонта, хранения и транспортировки.
Несмотря
на определенный универсализм приведенного
определения, между надёжностью
аппаратных средств и программного
обеспечения имеется принципиальное
различие. Программа в большинстве
случаев не может отказать случайно.
Ошибки в программном обеспечении,
допущенные при его создании, зависят
от технологии, от организации и
квалификации исполнителей и, в принципе,
не являются функцией времени. Причиной
отказов, возникающих из-за этих ошибок
и фиксируемых как случайный
процесс, является не время функционирования
системы (как это бывает в случае
аппаратных средств), а набор входных
данных и значений внутренних переменных,
сложившихся к моменту отказа
или сбоя.
На
современном уровне развития информационных
технологий уже недостаточно просто
реализовать какой-либо вычислительный
алгоритм. Имеющийся опыт разработки
операционных систем показывает, что
любые, даже самые несущественные на
первый взгляд ошибки, приводят к нежелательным
последствиям. Например, данные, зашифрованные
одной программой, не могут быть
расшифрованы другой программой, реализующей
тот же алгоритм. «Оптимизационные
усовершенствования», внесенные при
программной реализации в алгоритм,
приводят к резкому ослаблению стойкости
шифрования, в результате чего становится
возможным автоматическое дешифрование
данных. Список подобных нежелательных
последствий можно продолжать и дальше.
Поэтому,
для современных программных
систем обязательным требованием становится
не просто реализация технического задания,
или, в частном случае, алгоритма,
а его реализация с надлежащим
качеством. На сегодняшний день нельзя
утверждать, что проблема обеспечения
качества программной реализации решена
полностью. Вместе с тем уже наработан
и апробирован ряд подходов, накоплен
необходимый, в том числе и
отрицательный опыт, позволивший
сформулировать методологию разработки
качественных программных средств,
с основами которой и знакомит
настоящий раздел.