Добавлен: 29.10.2018
Просмотров: 48147
Скачиваний: 190
9.4. Формальные модели систем безопасности
681
указанным стрелками. Например, процесс B может читать данные из объекта 1, но не
может считывать данные из объекта 3.
Согласно простому свойству безопасности, все сплошные стрелки, обозначающие чте-
ние, идут в стороны или вверх. Согласно свойству *, все пунктирные стрелки, обозна-
чающие запись, также идут в стороны или вверх. Поскольку информационные потоки
направляются только горизонтально или наверх, любая информация, происходящая из
уровня k, никогда не может оказаться на более низком уровне. Иными словами, путей
следования информации вниз просто не существует, чем, собственно, и гарантируется
безопасность модели.
Модель Белла — Лападулы относится к организационной структуре, но в конечном
счете она должна быть реализована операционной системой. Один из способов ре-
ализации заключается в назначении каждому пользователю уровня безопасности,
который должен храниться вместе с другими относящимися к пользователю данны-
ми, например UID и GID. После входа в систему пользовательская оболочка приоб-
ретет пользовательский уровень безопасности, который будет унаследован всеми ее
дочерними процессами. Если процесс, выполняющийся на уровне безопасности k,
попытается открыть файл или другой объект, уровень безопасности которого выше k,
то операционная система должна отклонить попытку открытия файла. По аналогии
с этим должны отклоняться и все попытки открыть для записи любой объект, уровень
безопасности которого ниже, чем k.
Модель Биба
Если кратко изложить модель Белла — Лападулы в военных понятиях, лейтенант
может приказать рядовому выложить все, что ему известно, а затем скопировать эти
сведения в генеральский файл, не нарушая мер безопасности. А теперь переведем эту
модель в русло гражданских понятий. Представьте себе компанию, в которой охранни-
ки обладают уровнем безопасности 1, программисты — уровнем безопасности 3, а пре-
зидент — уровнем безопасности 5. Используя модель Белла — Лападулы, программист
может запросить у охранника сведения о будущих планах компании, а затем переписать
президентский файл, содержащий стратегию корпорации. Наверное, не все компании
проявили бы одинаковый энтузиазм относительно этой модели.
Проблема модели Белла — Лападулы состоит в том, что она была разработана для хра-
нения секретов, не гарантируя при этом целостность данных. Для гарантии последнего
нужны абсолютно противоположные свойства (Biba, 1977):
1. Простое свойство целостности (The simple integrity property) — процесс, работа-
ющий на уровне безопасности k, может записывать только в объекты своего или
более низкого уровня (никакой записи наверх).
2. Свойство целостности * (The integrity * principle) — процесс, работающий на уров-
не безопасности k, может читать из объектов своего или более высокого уровня
(никакого чтения из нижних уровней).
В совокупности эти свойства гарантируют, что программист сможет изменять файлы
охранника, записывая туда информацию, полученную от президента фирмы, но не на-
оборот. Конечно, некоторые организации хотели бы использовать как свойства модели
Белла — Лападулы, так и свойства модели Биба, но поскольку они противоречат друг
другу, достичь этого сложно.
682
Глава 9. Безопасность
9.4.2. Тайные каналы
Все эти идеи о формальных моделях и доказуемо безопасных системах кажутся весьма
привлекательными, но работают ли они на самом деле? Если ответить на этот вопрос
одним словом, то нет. Даже в системе, в основу которой заложена надлежащая модель
безопасности, прошедшая апробацию и реализованная по всем правилам, могут все же
происходить утечки секретных сведений. В этом разделе будет рассмотрено, как все-
таки могут происходить утечки информации даже при наличии строгих доказательств
того, что это с математической точки зрения невозможно. Эти идеи принадлежат
Лэмпсону (Lampson, 1973).
Модель Лэмпсона изначально была сформулирована в понятиях отдельной системы
разделения времени, но те же идеи могут быть адаптированы к локальной сети, а также
к другим многопользовательским средам, включая приложения, запущенные в облаке.
В чистейшем виде в модели задействованы три процесса на некой защищенной машине.
Первый процесс представлен клиентом, желающим, чтобы вторым процессом, серве-
ром, было выполнено некоторое задание. Клиент и сервер не вызывают друг у друга
доверия. Например, задача сервера заключается в помощи клиентам в заполнении их
налоговых деклараций. Клиенты опасаются, что сервер тайно запишет их финансовую
информацию, к примеру сведения о том, кто сколько зарабатывает, а затем продаст эту
информацию. Сервер опасается, что клиенты попытаются украсть ценную программу
подсчета налогов.
Третий процесс является сотрудником, вступающим в сговор с сервером именно для
того, чтобы похитить конфиденциальные данные клиента. Сотрудник и сервер обычно
принадлежат одному и тому же лицу. Эти три процесса показаны на рис. 9.10. Задачей
являлась разработка системы, в которой невозможна утечка от серверного процесса
к процессу-сотруднику информации, которую серверный процесс получил от кли-
ентского процесса на вполне законных основаниях. Лэмпсон назвал это проблемой
ограждения
(confinement problem).
Рис. 9.10. а — клиентский, серверный и сотрудничающий процессы; б — вполне возможная
утечка информации от инкапсулированного сервера к сотруднику через тайные каналы
С точки зрения разработчика системы, задача заключается в инкапсуляции, или ограж-
дении сервера таким образом, чтобы он не мог передать информацию сотруднику. С по-
мощью матрицы защиты можно просто гарантировать, что сервер не может общаться
с сотрудником, записывая файл, к которому тот имеет доступ для чтения. Вероятно,
можно также гарантировать, что сервер не сможет общаться с сотрудником при помощи
системного механизма межпроцессного взаимодействия.
9.4. Формальные модели систем безопасности
683
К сожалению, для утечки информации могут использоваться менее заметные каналы.
Например, сервер может передавать следующий поток двоичных битов. Для отправки
единичного бита он может заниматься вычислением на полную мощность в течение
определенного интервала времени, а для передачи нулевого бита он на тот же период
времени может прекращать вычислительный процесс.
Сотрудник может попытаться обнаружить поток битов за счет тщательного отсле-
живания времени отклика этого процесса. Обычно он будет получать более быстрый
отклик, когда сервер отправляет 0, чем тогда, когда он отправляет 1. Этот канал связи,
показанный на рис. 9.10, б, называется тайным каналом (covert channel).
Конечно, тайный канал относится к зашумленным каналам, содержащим множество
посторонней информации, но информация может надежно отправляться по зашум-
ленному каналу за счет использования кода с коррекцией ошибок (например, кода
Хэмминга или даже чего-то еще более сложного). Использование кода с коррекцией
ошибок сужает и без того низкую пропускную способность тайного канала, но ее все
равно может хватить для утечки важной информации. Вполне очевидно, что ни одна
из моделей защиты, основанной на матрице объектов и доменов, не в состоянии пере-
крыть подобный канал утечки информации.
Модуляция использования центрального процессора не единственный вариант тайно-
го канала. Можно также промодулировать ошибки отсутствия страницы (множество
ошибок — 1, отсутствие ошибок — 0). В принципе, в этих целях может использоваться
практически любой способ снижения производительности системы в течение опреде-
ленного интервала времени. Если система позволяет блокировать файлы, то сервер
может блокировать некий файл для обозначения единицы и разблокировать его для
обозначения нуля. Некоторые системы позволяют процессу определить, что файл за-
блокирован, даже если у него нет доступа к этому файлу. Такой тайный канал показан
на рис. 9.11, где файл блокируется или разблокируется на некоторый определенный
интервал времени, известный как серверу, так и сотруднику. В данном примере сервер
передает сотруднику тайный битовый поток 11010100.
Рис. 9.11. Тайный канал, использующий блокирование файла
Блокирование и разблокирование предопределенного файла S не является слишком за-
шумленным каналом, но требует четкой синхронизации, за исключением очень низких
скоростей передачи битов. При использовании протокола подтверждения надежность
и производительность могут быть подняты еще выше. В этом протоколе задействуются
684
Глава 9. Безопасность
еще два файла, F1 и F2, которые блокируются сервером и сотрудником соответственно
для поддержания синхронизации двух процессов. После того как сервер заблокирует
или разблокирует файл S, он изменяет состояние блокировки файла F1, чтобы по-
казать, что бит отправлен. Как только сотрудник считает бит, он изменяет состояние
блокировки файла F2, сообщая серверу о своей готовности получить следующий бит,
и ждет, пока опять не изменится состояние блокировки файла F1, сообщающее, что в со-
стоянии блокировки файла S послан следующий бит. Поскольку теперь синхронизация
не используется, этот протокол обеспечивает полную надежность даже на загруженной
системе и может действовать со скоростью, с которой происходит переключение этих
двух процессов. А почему бы для получения более высокой скорости передачи данных не
воспользоваться двумя файлами, несущими побитовую информацию, или не расширить
канал до байтового, используя сразу восемь сигнальных файлов, от S0 до S7?
Для передачи информации могут использоваться также захват и высвобождение вы-
деленных ресурсов (ленточных приводов, плоттеров и т. д.). Сервер захватывает ресурс
для отправки единицы и освобождает его для отправки нуля. В UNIX сервер может
создать файл, чтобы показать единицу, и удалить его, чтобы показать нуль, а сотрудник
может узнать о существовании файла, воспользовавшись системным вызовом access.
Этот вызов работает, даже если сотрудник не имеет разрешения на использование
файла. К сожалению, существуют и многие другие тайные каналы утечки информации.
Лэмпсон упомянул и еще об одном способе утечки информации, доступном человеку,
владеющему серверным процессом. Вполне вероятно, что серверный процесс будет
уполномочен сообщать своему владельцу при выставлении счета клиенту о той сумме,
которая обрабатывалась в интересах этого клиента. Если сам счет составляет $100,
а доход клиента составил $53 000, то сервер может сообщить об этом своему владельцу,
выставив счет на $100,53.
Само обнаружение всех тайных каналов, не говоря уже об их блокировке, и то явля-
ется почти безнадежным делом. На практике мало что можно предпринять. Вряд ли
кому-то покажется привлекательным добавление процесса, случайным образом устра-
ивающего возникновение ошибок отсутствия страницы или каким-то иным способом
занимающегося снижением производительности системы для сужения пропускной
способности тайных каналов.
Стеганография
Для передачи секретной информации между процессами существует несколько иная
разновидность скрытого канала, позволяющая обходить ручной или автоматизирован-
ный контроль всех межпроцессорных сообщений и накладывающий вето на сомнитель-
ные сообщения. К примеру, представьте себе компанию, которая вручную проверяет
всю исходящую электронную почту, посылаемую сотрудниками, чтобы убедиться, что
они не «сливают» секреты соучастникам или конкурентам, находящимся за предела-
ми компании. Существует ли способ, позволяющий сотруднику тайно переправить
значительные объемы конфиденциальной информации прямо под носом у цензора?
Оказывается, такой способ существует, и он не единственный, вызывающий подобные
затруднения.
В качестве примера рассмотрим рис. 9.12, а. На этой фотографии, сделанной автором
из Кении, три зебры смотрят на акацию. На рис. 9.13, б изображены, по-видимому,
те же три зебры и акация, но фотография обладает дополнительно добавленной при-
9.4. Формальные модели систем безопасности
685
влекательностью. В нее встроен полный текст пяти шекспировских пьес: «Гамлет»,
«Король Лир», «Макбет», «Венецианский купец» и «Юлий Цезарь». Общий объем их
текста превышает 700 Кбайт.
Рис. 9.12. а — три зебры и дерево; б — три зебры, дерево и полный текст
пяти пьес Вильяма Шекспира
Каков принцип работы этого тайного канала? Оригинальное изображение состоит из
1024 × 768 пикселов. Каждый пиксел состоит из трех 8-разрядных чисел, по одному для
кодирования яркости красной, зеленой и синей составляющих пиксела. Цвет пикселов
формируется за счет линейного наложения трех цветов. Метод кодирования исполь-
зует в качестве тайного канала младший разряд каждого цветового значения RGB.
Таким образом, в каждом пикселе появляется пространство для трех битов секретной
информации, по одному в красной, зеленой и синей составляющих. При таких размерах
изображения в нем может быть сохранено до 1024 × 768 × 3 бита, или 294 912 байтов
секретной информации.
Полный текст пяти пьес и короткого сообщения составляет 734 891 байт. Все это
сначала было сжато до размера около 274 Кбайт с использованием стандартного алго-
ритма сжатия. Затем сжатый результат был зашифрован и вставлен в биты младшего
разряда каждой цветовой составляющей. Можно убедиться в том, что присутствие
информации абсолютно не заметно. Ее присутствие не заметно также на большой
полноцветной версии фотографии. Человеческий глаз не в состоянии так просто
отличить 7-разрядный цвет от 8-разрядного. Как только этот файл с изображением
благополучно пройдет цензуру, получатель просто извлечет все биты младших раз-
рядов, применит алгоритмы дешифрации и распаковки и восстановит исходные
734 891 байт. Такое сокрытие присутствия информации называется стеганографией
(steganography, от греческого слова «тайнопись»). Стеганографию не любят дикта-
торские режимы, пытающиеся ограничить общение своих граждан, но она популярна
среди приверженцев свободы слова.
Просмотр двух черно-белых изображений в низком разрешении не может дать ис-
тинного представления о мощности данной технологии. Чтобы получить более четкое
представление о том, как работает стеганография, автор подготовил демонстрацион-
ный материал, включающий полноцветное изображение фотографии, показанной
на рис. 9.12, б со встроенными в него пятью пьесами. Этот материал можно найти по
адресу
www.cs.vu.nl/~ast/
. Нужно щелкнуть на ссылке
covered
writing
под заголовком
STEGANOGRAPHY
DEMO
, затем, следуя инструкциям на этой странице, загрузить изо-