Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Защита операционных систем

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 5.6.2024

PAGE  2

Тема 7.

Защита операционных систем.  Механизмы защиты.

7.1. Основные аспекты защиты операционных систем.

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

Операционная система есть специально организованная совокупность программ, которая управляет ресурсами системы (ЭВМ, вычислительной системы, других компонентов ИВС) с целью наиболее эффективного их использования и обеспечивает интерфейс пользователя с ресурсами.

Операционные системы, подобно аппаратуре ЭВМ, на пути своего развития прошли несколько поколений [3].

Цель ОС первого поколения состояла в ускорении и упрощении перехода с одной задачи пользователя на другую задачу (возможно, другого пользователя), что поставило проблему обеспечения безопасности данных, принадлежащих разным задачам.

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

К концу 60-х годов начал осуществляться переход к мультипроцессорной организации средств вычислительной техники, поэтому проблемы распределения ресурсов и их защиты стали более острыми и трудноразрешимыми. Решение этих проблем привело к соответствующей организации ОС и широкому применению аппаратных средств защиты (защита памяти, аппаратный контроль, диагностика и т.п.).

Основной тенденцией развития вычислительной техники была и остается идея максимальной доступности ее для пользователей, что входит в противоречие с требованием обеспечения безопасности данных. Поэтому практически наибольшие усилия по обеспечению безопасности данных предпринимались при разработке ОС.

Под механизмами защиты ОС будем понимать все средства и механизмы защиты данных, функционирующие в составе ОС. Операционные системы, в составе которых функционируют средства и механизмы защиты данных, в литературе часто называют защищенными системами [5,8].

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

Укажем следующие особенности ОС, которые позволяют выделить вопросы обеспечения безопасности ОС в особую категорию:

- управление всеми ресурсами системы;

- наличие встроенных механизмов, которые прямо или косвенно влияют на безопасность программ и данных, работающих в среде ОС;

- обеспечение интерфейса пользователя с ресурсами системы;

- размеры и сложность ОС.

В силу этих особенностей обеспечение безопасности ОС играло и продолжает играть важную роль в процессе развития вычислительной техники.

Большинство ОС обладают дефектами с точки зрения обеспечения безопасности данных в системе, что, как уже отмечалось, обусловлено выполнением задачи обеспечения максимальной доступности системы для пользователя.

Рассмотрим типовые функциональные дефекты ОС, которые могут привести к созданию каналов утечки данных [3].

1. Идентификация. Каждому ресурсу в системе должно быть присвоено уникальное имя - идентификатор. Во многих системах пользователи не имеют возможности удостовериться в том, что используемые ими ресурсы действительно принадлежат системе.

2. Пароли. Большинство пользователей выбирают простейшие пароли, которые легко подобрать или угадать.

3. Список паролей. При хранении списка паролей в незашифрованном виде возникает возможность его компрометации с последующим НСД к данным.

4. Пороговые значения. Для предотвращения попыток не санкционированного входа в систему с помощью подбора пароля необходимо ограничить число таких попыток, что в некоторых ОС не предусмотрено.

5. Подразумеваемое доверие. Во многих случаях программы ОС считают, что другие программы работают правильно.

6. Общая память. При использовании общей памяти не всегда после выполнения программ очищаются участки оперативной памяти (ОП).

7. Разрыв связи. В случае разрыва связи ОС должна немедленно закончить сеанс работы с пользователем или повторно установить подлинность субъекта.

   8. Передача параметров по ссылке, а не по значению. В связи с тем, что при передаче параметров по ссылке возможно оставление параметров в ОП после проверки их корректности, нарушитель может изменить эти параметры до начала их использования системой.

9. Привилегии. Система может содержать много элементов (например, программ), имеющих различные привилегии.

       Одним  из  эффективных  направлений противодействия вирусам является повышение вирусозащищенности операционных систем. В свою очередь, последнее представляет собой лишь один из путей решения общей проблемы, обычно называемой защитой ОС. Существует несколько аспектов этой проблемы, имеющих значение как для операционных систем автономно функционирующих ЭВМ, так и для сетевых ОС: предотвращение возможности несанкционированного использования и искажения (разрушения) системных ресурсов (областей памяти, программ и данных самой ОС) пользовательскими (прикладными) программами (в частности, вирусами); обеспечение корректности выполнения пользовательских программ, параллельно функционирующих на одной ЭВМ и использующих общие ресурсы; исключение возможности несанкционированного использования прикладными программами одних пользователей ресурсов, принадлежащих другим, и т.п. Строго говоря, в сетевой ОС и аппаратных средствах ИВС должны быть так или иначе реализованы механизмы безопасности, о которых шла речь ранее. В этом случае можно считать, что операционная система обеспечивает защиту ресурсов ИВС, одним из которых является сама ОС, то есть входящие в нее программы и используемая ею системная информация. Специфические вопросы создания  систем  управления  средствами  обеспечения  безопасности  рассматриваются  в последующих параграфах. В настоящем разделе мы остановимся на общих механизмах, реализуемых операционными системами и СУБД в интересах решения проблемы защиты.

В рамках указанной проблемы принято различать пассивные объекты защиты (файлы, прикладные программы, терминалы, области оперативной памяти и т. п.) и активные субъекты (процессы), которые могут выполнять над объектами определенные операции. Защита объектов реализуется операционной системой посредством  контроля за  выполнением субъектами совокупности правил, регламентирующих указанные операции. Указанную совокупность иногда называют статусом защиты.

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

В качестве формальной модели статуса защиты в ОС чаще всего используется так называемая матрица доступа (в некоторых работах она именуется матрицей контроля доступа, что, впрочем, не приводит к двусмысленности). Эта матрица содержит m строк (по числу субъектов) и n столбцов (по числу объектов), причем элемент, находящийся на пересечении i-й строки и j-ro столбца, представляет собой множество возможностей i-го субъекта по отношению к j-му объекту. С учетом того обстоятельства, что числа m и n на практике весьма велики, а число непустых элементов матрицы доступа мало, в реализациях ОС применяют различные способы сокращения объема памяти, занимаемой этой матрицей, без существенного увеличения времени,  затрачиваемого операционной системой на работу с нею.  

Тремя наиболее распространенными способами являются: списки возможностей, списки управления доступом и механизмом типа "замок-ключ". В первом случае с каждым субъектом связывается список его возможностей по отношению к различным объектам, причем, естественно, в список включаются только такие пары <объект, права доступа>, в которых множество прав доступа не пусто. Во втором случае с каждым объектом связывается список пар <субъект, права доступа>, в которых, как и ранее, множество пар доступа не пусто. В третьем случае каждый субъект обладает множеством битовых последовательностей, каждая из которых является "ключом" к "замку", защищающему некоторый объект. В свою очередь, "замок" объекта представляет собой аналогичную битовую последовательность, причем имеется корректный алгоритм установления соответствия между "ключом" и "замком" (например посредством шифрования). В общем случае объект может "охраняться" несколькими "замками", каждому из которых соответствует свое множество прав доступа. Субъект, запрашивающий выполнение некоторой операции над объектом, ''предъявляет" ОС свой "ключ", а ОС пытается "открыть" им один из "замков". Если это удается, и "открытое" множество прав доступа содержит запрашиваемую операцию, субъект получает разрешение на ее выполнение. При условии, что система "ключей-замков" является имитостойкой, то есть исключает "подделку" одними субъектами "ключей" других субъектов, этот способ свертки матрицы является весьма гибким и надежным, поскольку позволяет обновлять информацию о доступе независимо для субъектов и объектов.

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

Еще одним, достаточно простым в реализации, средством разграничения доступа к защищаемым  объектам  является  механизм  колец  безопасности.   Кольцо  безопасности характеризуется своим уникальным номером, причем нумерация идет по принципу "изнутри -наружу", и внутренние кольца являются привилегированными по отношению к внешним. При этом субъекту (домену), оперирующему в пределах кольца с номером i, доступны все объекты в пределах колец с номерами j >=i.

Исходя из приведенных сведений общего характера, кратко рассмотрим особенности защиты ОС применительно к наиболее распространенным операционным системам UNIX, MULTICS, AOS/VS и VAX/VMS.

ОС UNIX, разработанная сотрудниками фирмы AT&T, представляет собой многоцелевую мультизадачную операционную систему, предназначенную для использования в пределах широкого спектра типов ЭВМ: Amdahl, Cray, IBM, Sperry, VAX, PDP, Hewlett -Packard, Perkin-Elener и т.п. Адаптация UNIX к персональным ЭВМ типа IBM PC выполнена AT&T совместно с Microsoft в соответствии с соглашением между этими двумя фирмами, относящимся к январю 1985 г. Результатом этой адаптации стала операционная система XENIX, достаточно широко распространенная на 32-разрядных ПЭВМ IBM PC.

Защита файлов в ОС UNIX организована следующим образом. С каждым файлом связывается множество прав доступа: чтение, обновление и/или выполнение (для исполняемых файлов). Владелец файла, то есть создавшее его лицо, пользуется по отношению к файлу всеми правами. Часть этих прав он может передать так называемым членам группы - лицам, которым он доверяет сведения, имеющиеся в файле. Все остальные пользователи, не входящие в группу, также могут получить доступ к файлу с разрешения его владельца.

Доступ к ресурсам ОС ограничен средствами защиты по паролям. Пароль может быть использован в качестве ключа для шифрования-дешифрования информации в пользовательских файлах. Сами пароли также храняться в зашифрованном виде, что затрудняет их выявление и использование злоумышленниками. Пароль может быть изменен пользователем, администратором системы либо самой системой по истечении установленного интервала времени.

В целом UNIX традиционно считалась одной из наиболее простых в обращении и

надежно защищенных операционных систем, однако известный репликатор Морриса  разрушил это устоявшееся мнение и показал необходимость дальнейшего совершенствования механизмов и средств защиты этой ОС.

Операционная система MULTICS, разработанная фирмой Honeywekk, представляет собой многоцелевую ОС, поддерживающую механизм виртуальной памяти и обеспечивающую одновременную работу до 500 пользователей в интерактивном режиме. Средства защиты, реализованные в версии MRII.O ОС MULTICS, в течение 28 месяцев глубоко и всесторонне анализировались специалистами Национального центра компьютерной безопасности США, после чего в августе 1985 г. система получила высшую оценку из всех ОС, представленных к рассмотрению.

В операционной системе MULTICS наряду с кольцами безопасности реализованы механизмы так называемых дискреционного и мандатного управления доступом. Последний позволяет администрации ОС контролировать обмен информацией между различными категориями пользователей, тогда как механизм дискреционного управления позволяет владельцу объекта ограничить доступ к нему других пользователей.

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

1) сведения более высокого уровня не должны поступать на нижние по отношению к нему уровни;

2) сведения одной категории не должны поступать в файлы, содержащие информацию другой категории.

Мультизадачная операционная система AOS/VS (Advanced Operating System/Virtual Storage) разработана фирмой Data General для семейства 32-разрядных ЭВМ типа Eclipse MV, выпускаемых этой фирмой. Система может поддерживать одновременную работу порядка нескольких сотен пользователей в интерактивном режиме как с локальных, так и с удаленных терминалов.

Контроль доступа в AOS/VS основывается на кольцах безопасности. Логическое адресное пространство, управляемое AOS/ VS, имеет объем 4 Гбайт и разделяется по восьми уровням иерархии по возрастанию адресов. Каждому уровню соответствует свое кольцо безопасности. При обращении программы из внешнего кольца безопасности во внутреннее ОС обеспечивает идентификацию пользователя, терминала, запрашиваемых данных и оповещение администрации ИВС о нарушении.

Для контроля доступа к файлам в AOS/VS используются списки возможностей. Существуют пять таких возможностей: владение файлом, запись в файл, создание файла, чтение файла и выполнение файла.

Мультизадачная операционная система VAX/VMS разработана фирмой DEC для семейства многопользовательских мини-ЭВМ VAX. Считается, что средства защиты этой ОС практически столь же эффективны, сколь аналогичные средства ОС AOS/VS, однако предпочтительнее последних вследствие лучшей документированности. Кроме того, фирма DEC обеспечивает более широкий спектр услуг по обеспечению безопасности, включая консалтинг и устранение последствий возможных нарушений.

   Основной проблемой обеспечения безопасности ОС является проблема создания механизмов контроля доступа к ресурсам системы [3]. Процедура контроля доступа заключается в проверке соответствия запроса субъекта предоставленным ему правам доступа к ресурсам. Кроме того, ОС содержит вспомогательные средства защиты. К этим средствам относятся средства надзора, профилактического контроля и ревизии [3]. 

В совокупности механизмы контроля доступа и вспомогательные средства защиты образуют механизмы управления доступом.

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

Средства профилактического контроля необходимы для отстранения пользователя от непосредственного выполнения критичных с точки зрения безопасности данных операций и передачи этих операций под контроль ОС.

Для обеспечения безопасности данных работа с ресурсами системы осуществляется с помощью специальных программ ОС, так называемых безопасных программ, доступ к которым ограничивается.

Средства ревизии осуществляют постоянное ведение регистрационного журнала, в который заносятся записи о всех событиях в системе.

В ОС также могут использоваться средства сигнализации о НСД, которые используются при обнаружении нарушения безопасности данных или попыток такого нарушения.

Состав и структура вспомогательных средств защиты ОС зависят от архитектуры системы, ее ОС и СОБД и используемого программного обеспечения, механизмов контроля доступа, которые разрабатываются для реализации в ОС.

Механизмы контроля доступа создаются на основе моделей доступа к данным, имеют важное теоретическое и практическое значение  для решения проблемы безопасности и защиты ОС и требуют отдельного рассмотрения.

7.2.  Контроль доступа к данным (ОС). Модели доступа.

При создании механизмов контроля доступа необходимо, прежде всего, определить множества субъектов и объектов доступа. Субъектами могут быть, например, пользователи, задания, процессы и процедуры. Объектами - файлы, программы, семафоры, директории, терминалы, каналы связи, устройства, блоки ОП и т.д. Субъекты могут одновременно рассматриваться и как объекты, поэтому у субъекта могут быть права на доступ к другому субъекту. В конкретном процессе в данный момент времени субъекты являются активными элементами, а объекты - пассивными.

Для осуществления доступа к объекту субъект должен обладать соответствующими полномочиями. 

Полномочие есть некий символ, обладание которым дает субъекту определенные права доступа по отношению к объекту. 

Область защиты определяет права доступа некоторого субъекта ко множеству защищаемых объектов и представляет собой совокупность всех полномочий данного субъекта.

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

Непосредственная реализация контроля прав доступа обычно выполняется с помощью матриц доступа.

Матричная модель доступа

При использовании матричной модели доступа, условия доступа каждого субъекта S к каждому объекту O  определяются содержимым элемента матрицы доступа или матрицы установления полномочий М. Каждый элемент mij матрицы доступа М определяет права доступа i-го субъекта к j-му объекту (читать, писать, выполнять, нельзя использовать и т.п.). Пример матрицы доступа приведен на рис. 7.1.

О1

О2

ОNO

 S,

  r

 w

 …

 w

 S2

 rw

  rw

 …

 

 

  …

  …

 …

 …

 SNS

  e

 erw 

 …

 ew

Рис. 7.1. Пример матрицы доступа

Элементы в матрице доступа (рис.7.1) имеют следующие значения: r - чтение, w - запись, е - выполнение,   - нельзя использовать.

Элементы матрицы доступа могут содержать указатели на специальные процедуры, которые должны выполняться при обращении субъекта к объекту. Решение о доступе в этом случае осуществляется на основании результатов выполнения процедур [5], например:

- решение о доступе в данный момент времени основывается на анализе предыдущих доступов к другим объектам;

- решение о доступе основывается на динамике состояния системы (права доступа субъекта зависят от текущих прав доступа других субъектов);

- решение о доступе основывается на значении определенных переменных, например, на значении таймера. Отметим, что строка М [s, *] содержит список разрешенных операций субъекта s по отношению ко всем объектам (список возможностей), а столбец М [*, о]- определяет, какие субъекты имеют права доступа к объекту о и какие именно права доступа (список доступа).

Размерность матрицы доступа зависит от количества субъектов и объектов в системе и может быть достаточно большой. Для уменьшения размерности матрицы доступа могут применяться различные методы [7]:

-установление групп субъектов, называемых кликами, каждая из которых представляет собой группу субъектов с одинаковыми правами;

- установление групп терминалов по классам полномочий (клики терминалов);

- группировка объектов по уровням категорий (например, по уровням секретности);

-хранение списка пар вида (о, f), где о защищаемый объект, а f - разрешение на использование его субъектом.

 Перечисленные методы и другие, им подобные, могут применяться как по отдельности, так и в совокупности.

Как уже отмечалось, в процессе функционирования системы множества субъектов и объектов могут динамически изменяться. Такие изменения могут происходить, например, в результате появления новых субъектов и объектов, уничтожения субъектов и объектов и изменения прав доступа субъектов к объектам. Соответствен

но в процессе функционирования системы должна изменяться и матрица доступа. Динамика изменения множеств субъектов и объектов, а также матрицы доступа при выполнении некоторых операций представлена в таблице 7.1. В таблице 7.1:

S - множество субъектов;

О - множество объектов, причем S    О;

М [s, о]- матрица доступа.

Элементами матрицы М являются права доступа g G. Изменившиеся множества помечены штрихом.

Динамику изменения множеств S и О, а также матрицы М, представленной в таблице 7.1, поясним на примере создания субъекта s'.

При создании субъекта s' этот субъект вводится в состав элементов множеств S и О. В матрице доступа появляется новая строка, соответствующая новому субъекту: 

М' [s, о] = М [s, о].

М' [s', о1 = ;    М' [s', s] = , так как субъект создан, но его права по отношению к существующим субъектам и объектам не определены.

                                                            Таблица 7.1

Исходное состояние

Операция

     Результирующее                    

          состояние

   S,O,M

  s'  O

Создание субъекта        

      s'

S'=SU{s'}, OU{s'}.

M'=[s, o]=M[s, o], sS, о0. M'[s', o]= , o 0'.

 M'[s', s]= , s S'.

  S,0,M

  o'O

 Создание     

 объекта

     о'

S'=S, O'=OU{o'}.

M'[s, o]==M[s, o], sS, oO. M'[s', o]= , s S'.

  S,O,M

   s S

Уничтожение       

  субъекта

        s

S =S \ {s'}, O = O\{s'}. M'[s, o]=M[s, o], sS, oO'.

  S,O,M

o'O, oS

Уничтожение

  объекта

       о'

S= S, O= O\ {о}.

M'[s,o]=M[s,o],sS, oO

o0'.

   S,O,M

SS, оO

 Введение

  права g

  в M[s, o]

   S'=S,  O= O.

M[s, o]=M[s, o]U{g}.

M[s', o']=M[s', o'],

если (s, o')  (s, o).

   S,O,M

sS,  oO

  Удаление

  права g

   из M[s, o]

      S=S, O= O.

M'[s, o]=M[s, o] \ {g}.

M'[s', o']=M[s', o'],

если ( s', o')  (s, o).

Матрицы доступа в той или иной степени используются во многих защищенных системах.

Многоуровневая модель доступа

Расширением матричной модели доступа является многоуровневая модель доступа. Объекты в многоуровневой модели имеют различные уровни доступа (например, уровни секретности), а субъекты степени допуска. Разрешение допуска субъекта к объекту является функцией от степени допуска конкретного субъекта и уровня допуска конкретного объекта.

Многоуровневая модель доступа создана на основе теории алгебраических решеток [2]. Данные могут передаваться между субъектами, если выполняются следующие правила (здесь буквами а, b и с будем обозначать идентификаторы субъектов, а буквами х, у и z, соответственно, их уровни доступа).

  1.  Данные могут передаваться субъектом самому себе:   x x
  2.  Данные могут передаваться от субъекта а к субъекту с, если они могут передаваться от субъекта а к субъекту Ь и от субъекта b к субъекту с:

если ху и yz, то xz.

   3.Если ху и ух, то х = у.

Отметим, что рассмотренные правила представляют, соответственно свойства рефлексивности, транзитивности и антисимметричности.

Примером использования многоуровневой модели доступа является система контроля доступа, принятая в военном ведомстве США [7]. Уровнями доступа выступают уровни секретности: несекретно, конфиденциально, секретно, совершенно секретно. Внутри отдельных уровней секретности для выделения разделов данных, требующих специального разрешения на доступ к ним, определены категории: атомный, НАТО и другие. Для получения доступа к данным определенной категории субъект должен иметь не только доступ к данным соответствующего уровня (по секретности), но и разрешение на доступ по категории. Например, субъект, имеющий доступ к данным с уровнем совершенно секретно и категории НАТО, не может получить доступ к данным с категориями атомный и другие уровня совершенно секретно (Рис..7.2).

              СС- совершенно секретно; С- секретно:

              К- конфиденциально; НС- несекретно.                                                         

                                       

                       Рис. 7.2. Пример многоуровневой модели доступа

                    

                     Модель Белла-Лападулы

Рассмотрим модель доступа Белла и Лападулы [5], схема которой приведена

на рис.7.3.

                           

                              

                        

         

Рис.7.З. Схема модели Белла-Лападулы.

Модель Белла и Лападулы состоит из следующих элементов:

- множества субъектов S;

- множества объектов О;

- множества уровней защиты L;

- множества прав доступа G;

- списка текущего доступа Ь;

- списка запросов Z

Каждому субъекту si  S сопоставляются два уровня защиты: базовый IB(si)  L, задаваемый в начале работы и остающийся неизменным, и текущий lT(sI)  L, зависящий от уровней защиты тех объектов, к которым субъект s имеет доступ в настоящий момент времени.

Множество объектов О наделяется структурой дерева таким образом, что каждому объекту о. соответствует список объектов, непосредственно следующих за ним (объектов-сыновей) и, если о. отличен от корня дерева, то существует единственный объект оj . , непосредственно предшествующий ему (отец объекта oj.). Каждому объекту оj. приписывается уровень защитыj)  L.

Множество L является конечным частично упорядоченным множеством, обладающим свойством алгебраической решетки. Возможно представление каждого уровня защиты Ir  L в виде вектора из двух компонент: классификации и множества категорий. Будем говорить, что уровень защиты I1 больше уровня защиты I2, если классификация I1 больше или равна классификации I2 и множество категорий I1 содержит множество категорий I2 ( в формализованном виде: I1  I2).

        Множество прав доступа G имеет вид:  G = {г, a, w, е},

где r - чтение объектом субъекта (получение субъектом данных. содержащихся в объекте);

   а - модификация данных объекта субъектом без их предварительного прочтения;

     w - запись-модификация данных объекта после их предварительного прочтения субъектом;

      е - исполнение субъектом объекта (действие, не связанное ни с чтением, ни с модификацией данных).

Расширения модели допускают использование права  С - управления, при котором субъект si может передать права доступа, которыми он владеет по отношению к объекту оj , другому субъекту sk .

При описании модели будем рассматривать следующую схему управления передачей прав доступа: передача прав доступа к объекту оj субъектом si субъекту sk связана с наличием у субъекта si права w к "отцу" объекта оj.

Матрицу доступа М =  mij  не содержит пустых столбцов. Однако наличие элемента mij  0 является необходимым, но не достаточным условием разрешения доступа.

Список текущего доступа b содержит записи вида (si, оi, х), если субъекту si разрешен доступ х  G к объекту оj и это разрешение к настоящему моменту времени не отменено. Разрешение доступа действительно до тех пор, пока субъект не обратился с запросом на отказ от доступа к монитору.

Список запросов Z описывает возможности доступа субъекта к объекту, передачи прав доступа другим субъектам, создания или уничтожения объекта. В модели Белла-Лападулы рассматриваются 11 следующих запросов:

1. запрос на чтение (г) объекта;

2. запрос на запись (w) в объект;

3. запрос на модификацию ) объекта;

4. запрос на исполнение (е) объекта;

5. запрос на отказ от доступа;

6. запрос на передачу права на доступ субъекта субъекту к объекту

7. запрос на лишение права доступа другого субъекта;

8. запрос на создание объекта без сохранения согласованности;

9. запрос на создание объекта с сохранением согласованности;

           10. запрос на уничтожение объекта;

           11. запрос на изменение своего текущего уровня защиты.

Белл и Лападула сформулировали два условия защиты для модели:

1. простое условие защиты;

2. * - условие.

Простое условие защиты предложено для исключения прямой утечки секретных данных и состоит в следующем. Если субъекту sj запрещен доступ:

а) по чтению r объекта оJ , тогда IB (sJ )  IJ);

 6) по записи w в объект оJ , тогда IB (sJ)  IJ).

 Простое условие защиты накладывает ограничения на базовые уровни защищенных объектов.

*-условие защиты (*-свойство) предназначено для предотвращения косвенной утечки данных. Это условие накладывает ограничения на уровни защиты тех объектов, к которым субъект мажет иметь доступ одновременно. Если субъект s имеет доступ х1 к объекту о1 и доступ х2 к объекту о2, то в зависимости от вида доступа должны выполняться соотношения между уровнями защиты, приведенные в таблице 7.2.

Введение *-условия предназначено для предотвращения потока данных вида "чтение объекта для переписи данных в объект с 1 меньшим либо несравнимым уровнем защиты" (напомним, что , доступ w предполагает предварительное чтение).

Состояние системы считается безопасным, если соотношения между уровнями защиты объектов и субъектов удовлетворяют как простому условию защиты, так и

* - условию.

                                                                     Таблица 7.2

   Доступ к 01 

   Доступ к 02

  Соотношение

Чтение - r Чтение - r 

Запись - w Запись - w

Дополнение - а Запись - w Дополнение - а Запись - w

I(s1) I(02)

I(s1)  I(02)

I(s1) I(02)

I(s1) I(02)

Система защиты должна обеспечивать безопасность данных, если она не допускает перехода из безопасного состояния в состояние, не являющееся безопасным.

Для обеспечения безопасности данных необходимо и достаточно, чтобы изменение состояний системы приводило только к безопасным состояниям, если исходное состояние было безопасным.

Белл и Лападула описали правила разрешения каждого из 11 возможных запросов. Эти правила используют понятие текущего уровня защиты субъекта, которое определяется следующим образом. Пусть оr, оw , оa - множества тех объектов, к которым субъект s имеет доступ: г, w, а  соответственно. Если  оw   , то

IT (s) = max I (оJ) = min l(oj).

                           oj  оw          oj o w     

Если оw = , то IT (s) может иметь уровень защиты в пределах:

max I (оJ) IT (s)   min I (оJ)

                   оJ оr                    оJ  оa 

В случае, если нижняя граница в этом неравенстве берется по пустому множеству, она полагается равной            min IJ) ,          а верхняя   -  IB (s). 

                                          oJ  оW

Рассмотрим правила выполнения каждого из 11 возможных запросов в модели Белла-Лападулы.

1. Запрос на чтение субъектом si объекта oj разрешается, если выполняется условие:

r mIJ   IB (sI)  I (оJ) IT (sI)  I (oJ)     (7.1)

При невыполнении условия (5.1) запрос отвергается.

   2. Запрос на запись субъектом sI в объект оJ разрешается, если выполняется условие:

 w mIJ   IB (sI) I (оJ) IT (sI) =I (oJ)     (7.2.)

При невыполнении условия (5.2) запрос отвергается.

    3. Запрос на дополнение субъектом s объекта о. разрешается если выполняется условие:

a mIJ  IT (sI) I (oJ)           (7.3)

При невыполнении условия (5.3) запрос отвергается.

4. Запрос на исполнение субъектом si объекта оj разрешается, если е  mij , и отвергается в противном случае.

5. Отказ субъекта si от доступа х  G  к объекту оj  разрешается безусловно. При этом происходит изменение состояния системы:

b = b\ {si, оj, х}.

6. Передача субъекту sk субъектом si права на доступ х к объекту оj разрешается, если субъект sk имеет доступ  w  к "отцу"  оs(j)   объекта оj , то есть если

                                                    

                                                        {s k , os (j ), w }  b,

и отвергается в противном случае. При этом происходит изменение состояния системы:

                                 m'ij = mij U {х}, х  G.

7. Лишение субъекта sk субъектом si права на доступ х к объекту разрешается, если субъект sk имеет доступ w к "отцу" оs (j )  объекта оj , то есть если

                                                        {s k , os (j ), w }  b,

    и отвергается в противном случае. При этом происходит изменение состояния системы:

mij' = mij \ {х}, х     G.

 

8. Создание субъектом si объекта оt (j) . с уровнем защиты, являющегося "сыном" объекта оj , разрешается, если список текущего доступа b содержит записи:

{si, oj , w}  {si, oj , a},

и отвергается - в противном случае. При этом происходит изменение состояния системы:

O= OU {ot (j)}; M = M U Мt (j),

 

где столбец  Мt (j)   содержит один ненулевой элемент mit (j), значение которого зависит от дополнительного параметра, указываемого при запросе. Оно может принимать значения либо {г, а, w}, либо {г, а, w, е}.

9. Создание субъектом si объекта оt (j) с уровнем защиты I, являющегося "сыном" объекта оj, с сохранением согласованности разрешается, если список текущего доступа Ь содержит записи:

                                       {si, oj, w }    {si, oj, a }  I  >  (oj ),

и отвергается - в противном случае. Изменение состояния системы происходит аналогично восьмому запросу.

 10.  Уничтожение субъектом si объекта oj (и всех объектов oj1, оj2,...,оjJ , являющихся «последователями» по структуре дерева) разрешается, если субъект sI имеет доступ w к "отцу" оs (j) . объекта оj, и отвергается - в противном случае. Изменение состояния системы происходит следующим образом: из списка текущего доступа Ь удаляются все записи, содержащие объекты оj, оj1, ,оj2,...,оjJ; из матрицы М удаляются столбцы с номерами j1 , j2 , ..., jJ' .

 11.    Изменение субъектом sI своего текущего уровня защиты IT(si) на IT ' разрешается, если выполняются условия

   a)  IB (si)  IT и

6)  IT'  Ij), если субъект si имеет доступ а к какому-либо объекту оj   и

в)  IT' =1 (оj), если субъект si. имеет доступ w к какому-либо объекту оj   и 

г)  IT'  Ij), если субъект si имеет доступ г к какому-либо объекту оj.

В противном случае запрос отвергается.

Монитор обработки рассмотренных 11  запросов, созданный на основе модели Белла и Лападулы, был реализован в виде программно-аппаратного ядра защиты ОС MULTICS [7].

Модель Харрисона-Руззо-Ульмана 

  Разработка и практическая реализация различных защищенных ОС привела Харрисона, Руззо и Ульмана [8] к построению формальной модели защищенных систем. Схема модели Харрисона, Руззо и Ульмана (XRU- модели) приведена на рис.7.4.

                    Рис. 7.4. Схема модели Харрисона, Руззо и Ульмана.

В XRU- модели на ОС возлагаются функции обращений (монитора обращений) к защищаемым ресурсам (данным). Защищенная система состоит из следующих компонентов.

1. Конечное множество общих прав G:

G = {g1, g2,…, gN}.

2. Конечное множество команд С, представленных в форме:

command с (X1, Х2 ,..., XK)

 if   g1, in (Xs1, XoJ)  and

            .

            .

            .

g M in (Xsp , Xop )

then 

     op1

                   .

            .

            .

 opN 

 end.

Если M = ,  то множество команд  С   представлено   в форме:

command с (X, X, ..., X)

оp1,

      .

      .

      .

opN

end.

Здесь  С - имя;  X1, X2, ..., ХK - формальные параметры.

Каждая операция opI есть одна из следующих простейших операций:

Enter g into (Xs, Хo) - введение права g в соответствующий элемент М [Xs, X o] матрицы доступа;

Delete g from (Xs, X o)- удаление права g из элемента М [X, X] матрицы доступа;

create subject Xs - создание субъекта Хs; 

destroy subject Xs - удаление субъекта Хs;

create object Xs - создание объекта Хs;

destroy object Xs - удаление объекта Хs ,

g G, 1  s, s1,… , sp , о, o1,… , op   k.

Для данной системы предоставления прав (G, С) конфигурация защищенной системы есть тройка

<S, О, М>,

где S - множество текущих субъектов;

     О - множество текущих объектов, SHO;

     М - матрица доступа.

   Матрица доступа М содержит строку для каждого субъекта s  S и столбец для каждого объекта о  O. Элемент матрицы доступа М [s, о] есть подмножество множества прав доступа G, которое субъект s имеет по отношению к объекту о:

М [s, о]   G.

  Пусть Q состояние системы. Будем говорить, что состояние Q' выводится из состояния Q после выполнения команды С.

    Переход системы из состояния Q в состояние Q' будем записывать в следующем виде:

                                      Q  Q'    или    Q  Q'

                              С(Х1, ....XK)                         

    

     Состояние Q определяется следующим образом.

1) Если условия в команде  С не выполняются (то есть существует некоторое i   {1, … , p}, такое, что  g i =  M [xsi , xoi], то Q  =  Q.

2) Если условия в команде С выполняются, тогда должны существовать

состояния Q0, Q1, ..., QN , такие, что

Q = Qo  Q1  …   QN

               op1*                    op2*              opN*

где ор* - простейшая операция орi с параметрами Х1,...,ХK, подставляемыми в аналогичные формальные параметры Х1, Х2,…, ХK соответственно,

тогда Q' = QN .

Перейдем к проблеме безопасности защищенных систем. Пусть система находится в состоянии Q0 . Необходимо определить, будет ли последовательность команд

С1, С2 , ..., СK , применяемая к состоянию Q0, приводить к такому состоянию Q, что выполнение еще одной команды в состоянии Q приведет к появлению права g в ячейке матрицы доступа, которая этого права не содержала.

Формально поставленную задачу можно записать следующим образом. Команда 

С 1, ..., ХK ) высвобождает право g из состояния Q = (S, О, М), если при некоторых значениях параметров Х1 , ..., XK, удовлетворяются условия в команде С, и команда С   включает простейшие операции ор1 , ор2 , ..., орN такие, что существуют m  {1, ..., М} и состояния  

                       Q =  Q0, Q1, , QM-1 = (S', 0', M');   QM = (S", О", М"),

Причем

                       Q o    Q1     .  .  .     QM   g M [S,O],

                             op1*             op2*                        opM*

  но g [s, o] для некоторых s  S' и о О'. Всегда можно предположить, что орi есть enter g  in to(s, о). Таким образом, для данных Q, С и g всегда можно определить: будет высвобождено право g или нет. Определим безопасность системы следующим образом. Для данной системы предоставления прав (G, С) и общего права g  G  состояние Qo   небезопасно, если существует состояние Q, такое, что  

Qo   Q       ,и команда С высвобождает g из Q. Если состояние Q o 

не является небезопасным для g, то Q  безопасно для права g.

Рассмотрим простейший пример, иллюстрирующий опасность высвобождения определенного права.

Пример 7.1. Пусть мы имеем систему предоставления прав (G,C), которая в некоторый момент времени имеет три субъекта и два объекта. Субъектами системы являются ОС, ДВМ (менеджер базы данных) и PR (программист). Объекты системы –О1, и О2 (файлы данных).  В  G  имеются  следующие права: г (читать), w (писать), е (выполнять), и (изменять) и d (уничтожать).  Матрица доступа приведена на рис.7.5.

ОС

ДВМ

PR

 O1

 O2

OC

All

 All

All

 All

 All

ДВМ

 e

er

rwud

rwud

PR

          r

rwud

Рис.7.5. Матрица доступа для примера 7.1.

Отметим, что согласно матрице доступа, приведенной на рис.7.5, ОС имеет все возможные права доступа (All) ко всем объектам, включая себя. Пусть команда имеет вид:

command С(Х1, X2, Х3 , X4)

if e in М[Х1, Х2

 and e in М[Х1, X2]

 and г in М[Х1, X2]

then

enter  е  in to М[Х1, X2]

end.

Тогда при выполнении команды С (ОС, ДВМ, PR, О1) программист PR получит право e для ОС. Так как ОС имеет все права по отношению ко всем объектам, то программист может дать команду ОС уничтожить ДВМ.

Пример 7.1 показывает абстрактную опасность высвобождения общего права. В общем случае для определения безопасности системы необходимо дать ответ на следующий вопрос: возможно ли для данной системы предоставления прав (R,C) определить безопасность системы для определенного права ?

Ответ на поставленный вопрос дает теорема, которая была сформулирована и доказана Харрисоном, Руззо и Ульманом. В литературе ее часто называют теоремой безопасности [7, 8, 9].

Теорема 7.1 (теорема безопасности). Проблема определения того, что данное состояние системы предоставления прав будет безопасным для данного общего права, является неразрешимой. Доказательство.

Доказательство теоремы 7.1 [7, 8] опирается на аппарат машин Тьюринга [2]. Машину Тьюринга можно представить в виде

                                                           < Q, A, F, q0, qk >,

где Q - множество состояний машины;

     А - алфавит;

     F - функция переходов, F: Q—> Q * А * {Left, Right}

(Left- движение головки влево. Right- вправо);      

     q0 - начальное состояние;      

     qk - конечное состояние.

Построим машину Тьюринга для рассматриваемой системы предоставления прав.

Множество G общих прав будет содержать права, соответствующие каждому состоянию q  Q машины и каждому символу ленты из А. Дополнительно введем два права: end (конец) и own (собственный). Тогда G=QUAU {end, own}.

Если в определенный момент времени машина Тьюринга находится в состоянии q и просмотрено конечное число k ячеек ленты (то есть ячейки k+1, k+2,... заполнены пробелами), тогда состояние q характеризуется матрицей доступа с k субъектами и k объектами, такой что:

  1.  если ячейка i ленты содержит символ аi, то М [i, i] содержит право аi;

    2) элемент М[i, i+1] содержит право own для i = 1, 2, ..., k-1;

3) элемент М [k, k] содержит право end (так как k+1 субъект еще не создан);

4) если головка машины рассматривает ячейку i, тогда М [i, i] содержит право q.

На рис. 7.6 приведена матрица доступа, соответствующая машине Тьюринга, находящейся в состоянии q3 . Головка просматривает ячейку номер 4; первые четыре ячейки содержат символы а1 , а2 , а3, а4 , соответственно.

     a1

     own

        a2

   Own

      a3

      own

a4, g4,  end

 Рис. 7.6. Матрица доступа, соответствующая машине Тьюринга

Начальное состояние q0 машины Тьюринга представляется матрицей доступа с одним субъектом, соответствующим первой ячейке ленты. Права в матрице включают q0 , пробел и end (так как вся лента заполнена пробелами).

Переход машины Тьюринга из состояния в состояние определяется функцией перехода, реализуемой командами системы предоставления прав. Рассмотрим движение головки влево:        F (qi , аi ,) = (qj, аm, Left).

Будем считать, что перемещение осуществляется от s' ячейки ленты на соседнюю слева ячейку s. Соответствующая команда выглядит следующим образом:

command С (s, s')

          if  own    in М [s, s'] and

qi     in M[s', s'] and

         ai    in M [s', s']

         then delete qi from M [ s',s' ]

             delete  ai  from M (s', s']

             enter  am  in to M [s', s']

        enter  qj in to М [s, s]  

   end.

Результат выполнения команды F (q2 , a4)  = (q2 , a5 . Left)  

в   рассматриваемом случае приведен на рис. 7.7.

    a1 

   own

      a2

    Own

   a3, g2

   Own

 a5 , end

 

                                 Рис. 7.7

Если головка машины Тьюринга движется вправо, то есть:

F (qi, ai) = (qj, аm , Right),

то необходимо различать два случая:

  1.  ячейка справа от рассматриваемой уже просматривалась;

2) ячейка справа от рассматриваемой еще не просматривалась. Первый случай аналогичен движению влево.  Соответствующая  команда имеет вид:

command С (s, s')

if   own   in М [s, s'] and 

qi    in M [s, s] and

ai   in M [s, s]

then delete { qi , ai} from M [s, s']

enter qj   in to M [s', s']

enter am    in to M [s, s]

end.

Результат выполнения команды F(q2, a3) = (q3, a6, Right) для этого случая приведен на рис. 7.8.

    a1

   own

     a2

   Own

    a6

     own

a5 , g3 , end

                             Рис. 7.8.

В связи с тем, что мы рассматриваем детерминированную машину Тьюринга, команда F (qi , аi) имеет только один результат и, следовательно, можно использовать одно имя команды независимо от направления движения.

Во втором случае движения головки вправо необходимо создать новый субъект (перейти на еще не просмотренную ячейку ленты). Команда для этого случая имеет следующий вид (команды   Сqa и Еqa являются взаимоисключающими):

command Еqa (s, s')

if end   in M [s, s] and

    qi             in M [s, s] and

    ai         in M [s, s]

then delete {end, qi, ai } from M [s, s]

     enter {qj , end } in to M [s', s')

     enter ai in to M [s, s]

     enter own in to M [s, s']

end.

   Результат выполнения команды F(q3 , a5)—(q4, a7, Right) приведен на  рис. 7.9.

Приведенные примеры смены состояний машины Тьюринга показывают, что в каждом состоянии системы предоставления прав существует по крайней мере одна подходящая команда. Поэтому система (R, С) точно моделируется машиной Тьюринга, использующей рассмотренное представление. Если машина попадает в состояние q , то система предоставления прав может высвободить соответствующее общее право q .

  a1

 

  own

    a2

   Own

     a6

  own

    a7

   own

  g4 ,  end

                                      

                                    Рис. 7.9.

В связи с тем, что для машины Тьюринга является неразрешимым, попадет ли машина в конечное состояние из заданного начального состояния, то также является неразрешимым - безопасна ли система предоставления прав для общего права qk. Таким образом, теорема безопасности доказана.

Рассмотренная теорема безопасности показывает определенную безнадежность создания защищенных систем для общего случая предоставления прав. В частных случаях результаты не являются столь пессимистическими. Харрисон, Руззо и Ульман рассмотрели следующие подклассы систем предоставления прав:

- однооперационные, в которых каждая команда содержит только одну простейшую операцию;

    -   одноусловные, в которых каждая команда содержит только одно условие;

    -   монотонные (без команд уничтожения субъектов и объектов).

Для этих подклассов систем предоставления прав были доказаны следующие теоремы [9].

Теорема  7.2. Существует алгоритм, который позволяет определить, будет ли данная однооперационная система безопасной для данного начального состояния и данного общего права.

   Теорема  7.3. Безопасность одноусловной системы является разрешимой для данного начального состояния и данного общего права.

   Теорема 7.4. Безопасность монотонной системы для данною начального состояния и данного общего права является неразрешимой.

Теорема 7.5. Проблема безопасности для системы предоставления прав с конечным числом субъектов разрешима.

Теоремы 7.2, 7.5 показывают, что применение рассмотренной модели предоставления прав в специальных случаях позволяет построить безопасные системы.

7.3. Защита в операционной системе UNIX.

В качестве примера реализации функций защиты в ОС кратко рассмотрим механизмы защиты ОС UNIX [6]. Операционная система UNIX относится к категории многопользовательских многопрограммных ОС, работающих в режиме разделения времени. Первая версия UNIX была разработана К.Томпсоном и Д.Ритчи в 1969 году. Необходимо отметить, что между языком программирования Си и ОС UNIX существует тесная связь. Язык Си был разработан Д.Ритчи в начале семидесятых годов для работы с ранними версиями ОС UNIX. Он представляет собой результаты развития языка Би, созданного К.Томпсоном. В настоящее время свыше 900 ядра ОС UNIX и подавляющее большинство ее утилит написаны на языке Си. Богатые возможности, заложенные в ОС UNIX, сделали ее наиболее популярной в мире. One-рационная система UNIX поддерживается практически на всех типах ЭВМ.

Резидентная в ОП часть ОС называется ядром. Ядро ОС UNIX состоит из двух основных частей: управления процессами и управления устройствами. Управление процессами резервирует ресурсы, определяет последовательность выполнения процессов и принимает запросы на обслуживание. Управление устройствами контролирует передачу данных между ОП и периферийными устройствами.

В любой момент времени выполняется либо программа пользователя (процесс), либо команда ОС. В каждый момент времени лишь один пользовательский процесс активен, а все остальные приостановлены. Ядро ОС UNIX служит для удовлетворения потребностей процессов.

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

Каталоги файловой системы ОС UNIX "спрятаны" от пользователей и защищены механизмами ОС. Скрытой частью файловой организации в ОС UNIX является индексный дескриптор файла, который описывает расположение файла, его длину, метод доступа к файлу, даты, связанные с историей создания файла, идентификатор владельца и т.д.

Работа с таблицами является привилегией ядра, что обеспечивает сохранность и безопасность системы. Структура данных ядра ОС, обеспечивающих доступ к файлам, приведена на рис. 7.10.

     

Рис.7.10. Структура данных, обеспечивающая доступ к файлам.

При взаимодействии с ОС UNIX пользователь может обращаться к большому числу наборов информационных объектов или файлов, объединенных в каталоги. Файловая система ОС UNIX имеет иерархическую структуру.

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

Каталоги используются системой для поддержания файловой структуры. Особенность каталогов состоит в том, что пользователь может читать их содержимое, но выполнять записи в каталоги (изменять структуру каталогов) может только ОС. В ОС UNIX, где реализованы FIFO- файлы (First In First Out), организуются именованные программные каналы, являющиеся соединительным средством между стандартным выводом одной программы и стандартным вводом другой. Схема типичной файловой системы ОС UNIX приведена на рис.7.11.

Рассмотрим основные механизмы защиты данных, реализованные в ОС UNIX.

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

Пользователи, которым разрешен вход в систему, перечислены в учетном файле пользователей /ets/passwd. Этот текстовый файл содержит следующие данные: имя пользователя, зашифрованный пароль, идентификатор пользователя, идентификатор группы, начальный текущий каталог и имя исполняемого файла, используемого в качестве интерпретатора команд. Пароль шифруется, как правило, с использованием DES-алгоритма [4].

Рис.7.11. Схема файловой системы ОС UNIX.

Управление доступом к данным. Операционная система UNIX поддерживает для любого файла комплекс характеристик, определяющих санкционированность доступа, тип файла, его размер и точное местоположение на диске. При каждом обращении к файлу система проверяет право пользоваться им.

Операционная система UNIX допускает выполнение трех типов операций над файлами: чтение, запись и выполнение. Чтение файла означает, что доступно его содержимое, а запись что возможны изменения содержимого файла. Выполнение приводит либо к загрузке файла в ОП, либо к выполнению содержащихся в файле команд системного монитора Shell. Разрешение на выполнение каталога означает, что в нем допустим поиск с целью формирования полного имени на пути к файлу.

Любой из файлов в ОС UNIX имеет определенного владельца и привязан к некоторой группе. Файл наследует их от процесса, создавшего файл. Пользователь и группа, идентификаторы которых связаны с файлом, считаются его владельцами.

Идентификаторы пользователя и группы, связанные с процессом, определяют его права при доступе к файлам. По отношению к конкретному файлу все процессы делятся на три категории:

1) владелец файла (процессы, имеющие идентификатор пользователя, совпадающий с идентификатором владельца файла);

2) члены группы владельца файла (процессы, имеющие идентификатор группы, совпадающий с идентификатором группы, которой принадлежит файл);

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

Каждый файл содержит код защиты, который присваивается файлу при его создании. Код защиты располагается в индексном дескрипторе файла и содержит десять символов, причем первый

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

Если процесс требует доступа к файлу, то сначала определяется категория, в которую по отношению к этому файлу он попадает. Затем из кода защиты выбираются те три символа, которые соответствуют данной категории, и выполняется проверка: разрешен ли процессу требуемый доступ. Если доступ не разрешен, системный вызов, посредством которого процесс сделал запрос на доступ, отвергается ядром ОС.

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

С помощью специальных команд владелец файла (и привилегированный пользователь) может изменять распределение привилегий. Команда Change mode позволяет изменить код защиты, команда Change owner меняет право на владение файлом, а команда Change group - принадлежность к той или иной группе. Пользователь может изменять режимы доступа только для тех файлов, которыми он владеет.

Защита хранимых данных. Для защиты хранимых данных в составе ОС UNIX имеется утилита crypt, которая читает данные со стандартного ввода, шифрует их и направляет на стандартный вывод. Шифрование применяется при необходимости предоставления абсолютного права владения файлом. Зашифрованный файл можно прочитать лишь по предъявлении пароля.

Восстановление файловой системы. Операционная система UNIX поддерживает три основных набора утилит копирования

программы volcopy/labelit, dump/restor и cpio. Программа volcopy целиком переписывает файловую систему, проверяя с помощью программы labelit соответствие меток требуемых томов. Программа dump обеспечивает копирование лишь тех файлов, которые были записаны позднее определенной даты (защита накоплением). Программа restor может анализировать данные, созданные программой dump, и восстанавливать отдельные файлы или всю файловую систему полностью. Программа cpio предназначена для создания одного большого файла, содержащего образ всей файловой системы или какой-либо ее части.

Для восстановления поврежденной, например, в результате сбоев в работе аппаратуры файловой системы используются программы  fsck  и  fsdb.

За сохранность файловой системы, адаптацию программного обеспечения к конкретным условиям эксплуатации, периодическое копирование пользовательских файлов, восстановление потерянных данных и др. ответственность возложена на администратора системы.

Усложненное управление доступом. В составе утилит ОС UNIX находится утилита cron, которая предоставляет возможность запускать пользовательские программы в определенные моменты (промежутки) времени и, соответственно, ввести временные параметры для ограничения доступа пользователей.

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

Совершенствование механизмов защиты. Широкое распространение, многочисленные достоинства и хорошие перспективы ОС UNIX с 1984 года были поддержаны попытками стандартизации ее пользовательских интерфейсов и языка  Си [1]. Стандартизация языка Си завершилась принятием стандарта Американского национального института стандартов (ANSI). Проект стандарта интерфейсов мобильной ОС, названный POSIX, подготовлен рабочими группами института IEEE (США). В рамках этого проекта разработан интерфейс защиты (управляемого доступа), который отличается от традиционного подхода к управлению доступом к данным в ОС UNIX.

В соответствии с разработанным интерфейсом защиты объекты, на которые распространяется управляемый доступ, включают файлы всех типов (в том числе программные каналы) и процессы. Файлы выступают в роли объектов, процессы - в роли субъектов. Различается доступ к объектам, основанный на дискретном выборе, и доступ, основанный на полномочиях.

Дискретный выбор использует соответствие списков (для каждого объекта составляются списки субъектов, доступ которых к объекту разрешен). Этот механизм доступа реализован в имеющихся версиях ОС UNIX.

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

Интерфейс дискретного доступа существенно детализирует имеющиеся механизмы защиты ОС UNIX. Вводимые средства можно разделить на следующие группы:

работа со списками доступа при дискретной защите; - проверка права доступа; управление доступом на основе полномочий; работа привилегированных пользователей. В рамках проекта POSIX создан интерфейс системного администратора. Указанный интерфейс определяет объекты и множества действий, которые можно выполнить над объектами. В качестве классов субъектов и объектов предложены пользователь, группа пользователей, устройство, файловая система, процесс, очередь, вход в очередь, машина, система, администратор, программное обеспечение и др. Определены атрибуты таких классов, операции над классами и события, которые могут с ними происходить.

Стандартизация интерфейсов ОС UNIX и появление юридического стандарта повысит  значимость ОС UNIX, в том числе и для обеспечения безопасности данных.

  

Упражнение к лекции 7

1. Как связаны поколения вычислительной техники и поколения операционных систем?

       2. Сформулируйте список функциональных дефектов с точки зрения защиты в используемой ОС-

       3. Сформулируйте множество элементов, которые могут содержаться в ячейке матрицы доступа.

       4. Перечислите методы сжатия матрицы доступа. Предложите свои методы.

       5. Какие правила для каждого из одиннадцати запросов в моде ли Белла Лападулы соответствуют простому условию защиты, а какие - *-условию?

       6. Сформулируйте свое множество запросов для модели Белла-Лападулы.

       7. Выполните анализ влияния простейших операций на матрицу доступа в модели Харрисона-Руззо-Ульмана.

       8. Сформулируйте другие возможные подклассы защитных систем для модели Харрисона-Руззо-Ульмана

       9. Объясните значение теоремы безопасности.

      10. Укажите значение теорем для подклассов защищенных систем.

Литература

       1. Беляков М.И. Стандартизация UNIX// Операционная система UNIX. М.: Знание, 1991.- С. 7-10. (Серия "Вычислительная техника и ее применение, N6).

       2. Городецкий В.И. Прикладная алгебра и дискретная математика 4.1. Алгебраические системы.- М.: МО СССР, 1984. 174 с.

       3. Дейтел Г. Введение в операционные системы// Пер. с англ. t.i. М.: Мир, 1987. 359 с.

       4. Дейтел Г. Введение в операционные системы// Пер. с англ. т.2. М.: Мир, 1987, 398 с.

       5. Емелин И.В., Эльгиян Р.В. Обеспечение многоуровневой защиты в информационных и вычислительных системах.- М.: ВНИИМИ, 1979.- 26 с.

       6. Кристиан К. Введение в операционную систему UNIX. М.: Финансы и статистика, 1985. 318 с.

       7. Хофман Л.Дж. Современные методы защиты информации-М.: Советское радио, 1980.- 264 с.

       8. Harrison M.A., Ruzzo W.L, Ullman J.D. Protection in Operating Systems// Communications of ACM, August 1976.- v. 19, N8.-P. 461-471.

       9. Harrison M.A. Theoretical Models of Security in Operating Systems. 4-th Jerusalim Conf. on Information Technology (JCIT), 2125 May 1984.- Silver Spring.- P. 106-113.




1. по уровню цен на новые товары [0
2. докладываю что я курсант 6 курса 2 факультета рядовой Печальный Полллупокер Иванович прошёл повторный инстр
3. КОНТРОЛЬНАЯ РАБОТА ПО ДИСЦИПЛИНЕ МИКРОЭКОНОМИКА ВАРИАНТ 4 Выполнила студентк
4. 11 вв до н э по 56 вв
5. Специальное управление ФПС 48 МЧС России
6. і 1874 року вступив до Харківської духовної семінарії але не закінчив її і 1877 року вступив до Харківського уні
7. Стратегия социально - экономического развития России
8. Пренатальный период 266 дней стадия зиготы стадия от момента оплодо
9. 100 какой из факторов не отличает устный перевод от письменного- психологический фактор
10. Огарев НП
11. Тема 8 Социальная структура и социальная стратификация Вопросы- 1
12. Тема 7- Нотаріальні дії стажування 1.html
13. Облигации
14. Карташев Антон Владимирович
15. Тема- Понятие выносливость
16. Психология журналистики- 1.
17. Горький Максим
18. Истории государства и права зарубежных стран Предмет методология и периодизация значение истори
19. . Основания прекращения права собственности 2
20. тема международных отношений стала подлинно всеобъемлющей всемирной