учебники, программирование, основы, введение в,

 

Рекомендации семейства X.500

Основные понятия и идеи рекомендаций семейства X.500
Рекомендации семейства X.500 описывают службу директорий. Среди возможностей, предоставляемых этой службой, обычно выделяют дружественное именование (обращение к объектам по именам, удобным с точки зрения человека) и отображение имен в адреса (динамическое связывание объекта и его расположения - необходимое условие поддержки "самоконфигурируемости" сетевых систем).
Основные понятия службы директорий зафиксированы в рекомендациях X.501 "Служба директорий: модели"  и X.511 "Служба директорий: абстрактное определение сервиса".
Множество систем, обеспечивающих функционирование службы директорий, вместе с содержащейся в них информацией можно представлять как единое целое - Директорию с большой буквы.
Информация, доступ к которой возможен посредством Директории, называется Информационной Базой Директории. Она обычно используется для облегчения взаимодействия таких сущностей, как объекты прикладного уровня, люди, списки рассылки и т.д., а также для получения сведений о них.
Предполагается, что Информационная База имеет древовидную структуру, называемую Информационным Деревом Директории. Вершины этого дерева, отличные от корня, составляют элементы Директории, в которых хранится информация об объектах.
У каждого элемента есть однозначно идентифицирующее его различительное имя. В пределах поддеревьев Информационного Дерева могут использоваться относительные различительные имена.
Природа объектов, информация о которых хранится в Директории, произвольна. Единственное требование к ним состоит в идентифицируемости (возможности именования).
Объекты объединяются в классы. Каждый объект должен принадлежать по крайней мере одному классу.
Элементы Директории могут быть составными, объединять подэлементы, содержащие информацию об отдельных аспектах объектов.
Каждый элемент состоит из атрибутов, имеющих тип и одно или несколько значений. Набор атрибутов зависит от класса объекта.
Некоторые из концевых узлов (листьев) Информационного Дерева могут представлять собой синонимы, содержащие альтернативное имя и указатель на элемент с информацией об объекте.
Служба директорий предоставляет две группы операций:

  • опрос;
  • модификацию.

В число операций опроса входят:

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

В группу операций модификации входят:

  • добавление нового (концевого) узла Информационного Дерева;
  • удаление концевого узла Информационного Дерева;
  • модификация элемента Директории с возможным добавлением и/или удалением атрибутов и их значений;
  • модификация относительного различительного имени элемента или перемещение узла Информационного Дерева к другому предшественнику.

Рекомендации X.501 описывают три возможные схемы управления доступом к Директории: базовую, упрощенную и основанную на правилах; последняя может реализовывать принудительное (мандатное) управление доступом с использованием меток безопасности. Решения о предоставлении доступа принимаются с учетом существующей политики безопасности.
Разумеется, предусмотрена аутентификация системных агентов и пользователей, а также источников данных Директории.
Таковы основные понятия и идеи службы директорий, зафиксированные в семействе рекомендаций X.500 и необходимые нам для последующего изложения.

Каркас сертификатов открытых ключей
Мы приступаем к изучению четвертой редакции рекомендаций X.509, которая регламентирует следующие аспекты:

  • сертификаты открытых ключей;
  • сертификаты атрибутов;
  • сервисы аутентификации.

Идейной основой рекомендаций X.509 являются сертификаты открытых ключей, обслуживающие такие грани информационной безопасности, как конфиденциальность и целостность, и такие сервисы, как аутентификация и неотказуемость.
В курсе "Основы информационной безопасности"  приведены необходимые сведения о криптографии с открытыми ключами и механизме электронной цифровой подписи (ЭЦП); далее предполагается, что они уже известны.
Сертификат открытого ключа - это структура данных, обеспечивающая ассоциирование открытого ключа и его владельца. Надежность ассоциации, подлинность сертификата подтверждаются подписью удостоверяющего центра (УЦ).
Сертификаты имеют конечный срок годности. Поддерживать актуальность информации об их статусе помогают списки отзыва, подписываемые удостоверяющими центрами и содержащими перечни сертификатов, переставших быть годными. Последнее может случиться как в результате естественного окончания срока, так и досрочно, например, из-за компрометации секретного ключа владельца.
Формат сертификата описан в курсе. В простейшем случае он выглядит так:
CA <<A>> = CA {V, SN, AI, CA, A, Ap, TA}
Здесь:

  • A - имя владельца сертификата;
  • CA - имя удостоверяющего центра;
  • CA <<A>> - сертификат, выданный A центром CA;
  • CA {I} - данные I, снабженные подписью CA;
  • V - версия сертификата (в настоящее время - версия 3);
  • SN - порядковый номер сертификата;
  • AI - идентификатор алгоритма, использованного при подписании сертификата;
  • Ap - информация об открытом ключе A;
  • TA - даты начала и конца срока годности сертификата.

Отметим, что в общем случае формат может быть существенно сложнее. С помощью механизма расширений его можно приспособить для нужд различных приложений и сообществ пользователей. В X.509 предусмотрены полезные расширения, носящие универсальный характер.
Каждое расширение включает имя, флаг критичности и значение. Если при обработке (проверке) сертификата встречается неизвестное расширение с флагом критичности FALSE, оно может быть проигнорировано; если же у подобного расширения флаг равен TRUE, сертификат приходится считать некорректным.
Сертификаты открытых ключей подразделяются на два основных вида:

  • сертификаты оконечных сущностей;
  • сертификаты удостоверяющих центров.

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

  • "самовыпущенные" сертификаты (изготовленные для себя самим удостоверяющим центром). Они полезны, например, при смене ключей УЦ, чтобы обеспечить доверие новым ключам на основании доверия старым. Важным подклассом данного класса являются "самоподписанные" сертификаты, в которых секретный ключ, использованный для генерации ЭЦП, соответствует заверяемому открытому ключу. Таким способом УЦ может афишировать свой открытый ключ или иную информацию о собственном функционировании;
  • кросс-сертификаты (выдаются одним УЦ другому). Они применяются и в иерархической структуре для авторизации нижестоящего УЦ вышестоящим, и в произвольной структуре "распределенного доверия" как факт признания одним УЦ существования другого.

Рассмотрим процесс получения и проверки пользователем A открытого ключа пользователя B. Элемент Директории, представляющий A, содержит один или несколько сертификатов открытых ключей A, заверенных удостоверяющим центром, который мы обозначим CA (A) (а сертификат A - как CA (A) <<A>>) и которому, разумеется, соответствует свой узел в Информационном Дереве. Предполагается, что пользователь доверяет своему УЦ, поэтому, если существует сертификат CA (A) <<B>>, процесс выяснения открытого ключа B можно считать завершенным. В противном случае приходится строить так называемый сертификационный маршрут от A к B (обозначается A -> B), начинающийся сертификатом CA (A) <<X1>>, который CA (A) выдал некоторому другому УЦ, X1, ставшему вследствие этого доверенным для A. Маршрут продолжается сертификатом вида X1 <<X2>>, содержит промежуточные звенья вида Xi <<Xi+1>> и завершается сертификатом Xn <<B>>.
Элемент Директории, соответствующий удостоверяющему центру, содержит сертификаты двух типов: прямые (сгенерированные данным УЦ для других) и обратные (выданные данному УЦ другими). Если, кроме того, удостоверяющие центры образуют иерархию, соответствующую Информационному Дереву, то сертификационный маршрут можно построить без привлечения дополнительной информации, только на основе различительных имен   A и B. Действительно, с помощью обратных сертификатов выполняется подъем от CA (A) до корня поддерева, общего для A и B, а затем, с помощью прямых сертификатов осуществляется спуск до CA (B). В рассмотренном выше процессе A - пользователь сертификата, B - его владелец (субъект), CA (B) - удостоверяющий центр. Все три стороны несут друг перед другом определенные обязательства и, в свою очередь, пользуются предоставляемыми гарантиями. Обязательства и гарантии могут быть зафиксированы в политике сертификата, ссылка на которую хранится в одном из полей расширений. Обычно политика - это общепринятый текст, но в ней могут присутствовать и формальные условия, допускающие автоматическую проверку.
При построении и использовании сертификационного маршрута проверяется согласованность политик, присутствующих в кросс-сертификатах. Еще один пример употребления данного поля расширения - наложение и проверка ограничений на длину сертификационного маршрута (вообще говоря, чем длиннее маршрут, тем меньше доверия он вызывает).
Другая группа дополнительных полей сертификатов обслуживает способы и срок действия ключей. Для шифрования и цифровой подписи применяют разные ключи; следовательно, у одного субъекта может быть несколько пар ключей и, соответственно, несколько сертификатов. Чтобы выбрать среди них нужный, необходимо иметь возможность выяснить назначение представленного в сертификате открытого ключа. Аналогично, может потребоваться знание срока годности секретного ключа, посредством которого формируют ЭЦП, поскольку этот срок обычно меньше, чем у открытого ключа, проверяющего подпись.
Значительная часть рекомендаций X.509 посвящена спискам отзыва сертификатов; мы, однако, не будем останавливаться на этом сугубо техническом вопросе.
Каркас сертификатов атрибутов
Вероятно, развитие механизма расширений натолкнуло авторов рекомендаций X.509 на мысль о том, что в заверенных сертификатах можно хранить не только открытые ключи, но и произвольные атрибуты субъектов - держателей (владельцев) сертификатов.
Сертификат атрибутов - это структура данных, снабженная цифровой подписью соответствующего удостоверяющего центра и связывающая значения некоторых атрибутов с идентификационной информацией держателя сертификата.
Вообще говоря, сертификаты атрибутов имеют универсальный характер, но в рекомендациях X.509 внимание акцентируется на их применении в качестве основы инфраструктуры управления привилегиями.
У каркасов сертификатов открытых ключей и сертификатов атрибутов немало общего. Это и система удостоверяющих центров, и списки отзыва, и многое другое. Мы, однако, сосредоточимся на специфике управления привилегиями.
Отметим в первую очередь, что жизненные циклы открытых ключей и привилегий устроены по-разному, имеют разную длительность. Привилегии могут делегироваться вспомогательным сущностям на короткие промежутки времени (порядка минуты). Для управления привилегиями используются свои понятия и механизмы, например роли. Следовательно, хотя с синтаксической точки зрения для цели управления привилегиями можно использовать снабженные соответствующими расширениями сертификаты открытых ключей, идейная и практическая сторона вопроса подразумевает разделение каркасов открытых ключей и управления привилегиями, что и сделано в рекомендациях X.509.
В контексте управления привилегиями удостоверяющий центр называется центром авторизации. Выделяется главный центр авторизации, который может делегировать другим центрам права наделения привилегиями и их дальнейшего делегирования.
На протяжении маршрута делегирования должно действовать правило доминирования: промежуточный центр авторизации не вправе делегировать больше привилегий, чем сам имеет (для каждой привилегии должно быть определено, что значит "не больше").
Вообще говоря, известны две схемы выделения и проверки привилегий:

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

Независимо от принятой схемы выделяются три основных понятия инфраструктуры управления привилегиями:

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

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


Простая и сильная аутентификация
Каркасы сертификатов открытых ключей и атрибутов - основа целого ряда сервисов безопасности, в число которых входят аутентификация, контроль целостности, управление доступом. Они могут использоваться как самой Директорией, так и произвольными приложениями. В этом разделе мы рассмотрим простую и сильную аутентификации, включенные в рекомендации X.509.
Простая аутентификация предназначена только для локального использования. Данные для нее могут вырабатываться и передаваться тремя способами:
  • имя и пароль пользователя передаются в открытом виде;
  • имя, пароль, случайное число и, возможно, временной штамп (метка) подвергаются воздействию односторонней функции, результат которой передается получателю для проверки;
  • к описанному выше результату добавляется случайное число и/или временной штамп и еще раз применяется односторонняя функция (возможно, та же самая).

Рассмотрим более подробно реализацию разновидности 2 простой аутентификации. Пользователь A сначала генерирует токен безопасности   PT1:
PT1 = h1 (t1A, r1A, A, passwdA)
Токен PT1 используется для создания аутентификационного токена AT1:
AT1 = t1A, r1A, A, PT1
(т. е. токен AT1 состоит из четырех компонентов). Пользователь A пересылает пользователю B токен AT1. Цель B - своими средствами создать аналог токена безопасности PT1 (реконструировать PT1) и сравнить его с оригиналом. Он запрашивает у службы директорий или извлекает самостоятельно локальную копию пароля passwdA (обозначим ее passwdA-B) и реконструирует PT1:
PT1-B = h1 (t1A, r1A, A, passwdA-B)
Если PT1 и PT1-B совпадут, подлинность пользователя A считается установленной.
Сильная аутентификация основана на применении асимметричных методов шифрования, пригодных для генерации электронной подписи. Подлинность пользователя A считается установленной, если он продемонстрирует владение секретным ключом, ассоциированным с хранящимся в сертификате на имя A открытым ключом.
Рекомендации X.509 описывают три возможные процедуры сильной аутентификации:

  • односторонний обмен. От пользователя A пользователю B передается один токен. При этом подтверждается подлинность A и B, а также то, что токен сгенерирован A, предназначен B, не был изменен и является "оригинальным" (т. е. не посылается повторно);
  • двусторонний обмен. Дополнительно от B к A направляется ответ, допускающий проверку того, что он был сгенерирован B, предназначен A, не был изменен и является "оригинальным";
  • трехсторонний обмен. От A к B передается еще один токен. Обеспечивает те же свойства, что и двусторонний, без использования временных штампов.

Предполагается, что независимо от выбранной процедуры и до выполнения обменов пользователь A выясняет открытый ключ B и обратный сертификационный маршрут B -> A.
Рассмотрим более подробно процедуру одностороннего обмена.
В качестве первого шага пользователь A генерирует "уникальное" число rA, предназначенное для защиты от воспроизведения и подделки аутентификационного токена.
После этого A направляет B сообщение следующей структуры:
B -> A, A {tA, rA, B}
где tA - временной штамп, в общем случае представляющий собой пару (время генерации токена и срок его годности). (Напомним, что конструкция вида A {I} обозначает информацию I, подписанную открытым ключом A.)
Получив это сообщение, B предпринимает следующие действия:

  • по обратному сертификационному пути B -> A выясняет открытый ключ A (Ap), попутно проверяя статус сертификата A;
  • проверяет подпись и, тем самым, целостность присланной информации;
  • проверяет, что в качестве получателя указан B;
  • удостоверяется, что временной штамп "свежий", а число rA ранее не использовалось.

Двусторонний и трехсторонний обмены являются довольно очевидным развитием одностороннего.
На этом мы завершаем рассмотрение рекомендаций семейства X.500.

 

 
На главную | Содержание | < Назад....Вперёд >
С вопросами и предложениями можно обращаться по nicivas@bk.ru. 2013 г.Яндекс.Метрика