Главная страница  Межпроцессное взаимодействие (состязание) 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 [ 161 ] 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187

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

5.5.3. Мандаты

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

Типичный пример списка полномочий приведен в табл. 5.3. У каждого мандата есть поле Туре, сообщающее тип объекта, поле Rights, являющееся битовой картой, описывающей допустимые для данного типа объектов операции, и поле Object, содержащее указатель на сам объект (например, номер его г-узла). Списки полномочий сами являются объектами, на которые позволено ссылаться из других списков, тем самым упрощается совместное использование поддоменов. На мандаты часто ссылаются по номеру в перечне. Например, процесс может сказать что-нибудь вроде: прочитать 1 Кбайт из файла, на который ссылается мандат 2 . Такой способ адресации подобен тому, как в UNIX используются дескрипторы.

Таблица 5.3. Список полномочий для домена 2 на рис. 5.21

Мандат

Объект

Файл

Указатель на файл File3

Файл

Указатель на файл File4

Файл

Указатель на файл FileS

Указатель

Указатель на принтер Printerl

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

Особенность второго способа в том, что список хранится внутри операционной системы. При этом к элементам списка можно обращаться по их позиции в списке. Такая форма адресации также напоминает использование дескрипторов файла в UNIX. Именно таким образом работала система Hydra [88].

Третий способ заключается в хранении списка мандатов в пространстве пользователя, но в зашифрованном виде, так, чтобы пользователь не сумел изменить эту информацию. Эта схема была разработана для распределенной операционной системы Amoeba и активно в ней применялась [81].



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

♦ копирование элемента списка: создание нового элемента для того же объекта;

♦ копирование объекта: создание дубликата объекта с новым мандатом;

♦ удаление элемента списка: удаление записи в нем, объект при этом не затрагивается;

♦ удаление объекта: удаление объекта и элемента списка.

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

В системе Amoeba аннулирование разрешений выполняется легко. Все, что для этого требуется, - это изменить контрольное поле, хранимое с объектом. Одним щелчком все существующие мандаты объявляются недействительными. Однако ни одна схема не обеспечивает выборочного аннулирования разрешений, то есть невозможно, например, отменить полномочия Джона, не затронув всех остальных пользователей. Этот недостаток присущ всем мандатным системам.

5.5.4. Секретные каналы

Даже в корректно реализованной системе, в основе которой лежит правильная модель безопасности и безопасность которой была доказана, не исключены проколы защиты. В данном разделе мы обсудим, как информация может утекать на сторону даже в системах, для которых строго математически было доказано, что подобные утечки невозможны. Идеи, изложенные ниже, были высказаны Лэмп-соном в [52].

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



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

Третий процесс, называемый в данной модели сообщником (буквально collaborator, то есть партнер ), намеревается украсть конфиденциальные сведения клиента. Владельцем этого процесса и сервера, как правило, является один и тот же человек. Все три процесса показаны на рис. 5.23. Цель данной модели - помочь разработать систему, в которой невозможна утечка информации, полученной сервером у клиента, к процессу- подельнику . Лэмпсон назвал это проблемой ограждения.

Клиент Сервер Сообщник

Ядро

Инкапсулированный сервер


Тайный канал

Рис. 5.23. а - клиент, сервер и сообщник ; 6 - от инкапсулированного сервера информация все равно может утекать сообщнику по тайному каналу

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

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

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

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



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 [ 161 ] 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187

© 2000 - 2018 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования.