
8.4. Управление защитой 515
дата, после чего пропускает результат через одностороннюю функцию. Если ре-
зультат соответствует полю проверки, мандат считается действительным.
Из алгоритма должно быть ясно, что пользователь, попытавшись добавить се-
бе права, которых он не имеет, просто испортит мандат. Инвертировать поле
проверки ограниченного мандата для получения исходного аргумента (С XOR
00000001,
как показано на рис. 8.34) невозможно, поскольку функция / односто-
ронняя. Посредством подобной криптографической техники мандаты защи-
щаются от подделки. Отметим, что действие функции /, по существу, аналогично
вычислению дайджеста сообщений, о котором мы говорили ранее. Любое из-
менение исходного сообщения, такое как инверсия битов, будет немедленно
замечено.
Более обобщенный вариант мандата, который используется в современных
распределенных системах, — это сертификат атрибута {attribute certificate),
В
отличие от ранее обсуждавшихся сертификатов, которые требуются для под-
тверждения открытых ключей, сертификаты атрибутов служат для хранения пар
{атрибут,
значение), относящихся к определенным элементам. В частности, сер-
тификаты атрибутов могут использоваться для хранения прав доступа к опреде-
ленным ресурсам, которыми обладает владелец сертификата.
Как и другие сертификаты, сертификаты атрибутов выдаются специальными
сертифицирующими организациями, которые называются
организациями
серти-
фикации атрибутов {attribute certification
authorities).
Как и в ситуации с мандата-
ми системы Amoeba, эти организации соответствуют серверам объектов. Обычно,
однако, организация сертификации атрибутов и сервер, содержащий сущность,
для которой создается сертификат, не совпадают. Права доступа, перечисленные
в сертификате, подписываются организацией сертификации атрибутов.
Делегирование
Обсудим теперь следующую проблему. Пользователь хочет напечатать большой
файл, к которому имеет доступ только на чтение. Чтобы не затруднять жизнь ок-
ружающим, пользователь посылает запрос на сервер печати, требуя начать печать
не раньше двух часов ночи. Вместо того чтобы посылать на принтер сам файл,
пользователь передает принтеру имя файла, с тем чтобы он мог сам скопировать
этот файл в свой каталог спулинга, когда ему это понадобится.
Хотя эта схема кажется великолепной, в ней имеется одна серьезная пробле-
ма: принтер обычно не имеет необходимых привилегий на доступ к указанному
файлу. Другими словами, если не предусмотреть никакого специального меха-
низма, то как только сервер печати захочет считать файл, чтобы напечатать его,
система откажет серверу в доступе к этому файлу. Проблему можно решить, ес-
ли пользователь сможет временно
делегировать
{delegated) серверу печати свои
права доступа к файлу.
Делегирование прав доступа
—
это один из весьма важных приемов реализа-
ции защиты в компьютерных системах, и в частности в распределенных систе-
мах. Основная идея делегирования проста: если иметь возможность передавать
определенные права доступа от одного процесса к другому, то проще будет рас-
пределять работу между несколькими процессами без ослабления защиты ресур-