Детальное описание некоторых функций безопасности

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

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

В фигурных скобках после имени параметра и его типа следует разъяснение назначения параметра.

GSS_Acquire_cred — получение дескриптора удостоверения

Функция GSS_Acquire_ cred предназначена для получения дескриптора удостоверения. Как правило, к ней обращаются только серверные компоненты приложений (клиентские удовлетворяются подразумеваемыми удостоверениями).

Входные параметры:

Выходные параметры:

Возможные значения основного кода завершения:

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

GSS_Add_cred — постепенное формирование удостоверений

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

Входные параметры:

Выходные параметры:

Смысл выходных параметров тот же, что и для функции GSS_Acquire_cred, лишь новое значение real_cred_usage показывает, для чего можно использовать скорректированное удостоверение. Прежними остались и основные коды завершения. Добавилось только одно новое значение — GSS_S_NO_ CRED, означающее, что дескриптору cred_handle не соответствует корректное удостоверение.

Во всех вызовах функций GSS_Acquire_cred и GSS_Add_ cred, имеющих дело с одним удостоверением, значения desired_ name должны совпадать.

GSS_Init_sec_context — инициация контекста безопасности

Функция GSS_Init_sec_ context предназначена для инициации контекста безопасности, формируемого общающимися партнерами, и для генерации токена, пересылка которого позволит удаленному партнеру выполнить свою часть работы по формированию контекста.

Входные параметры:

Выходные параметры:

Возможные значения основного кода завершения:

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

Обычно для инициации контекста достаточно одного обращения к функции GSS_Init_ sec_context. Если это не так (например, из-за требования взаимной аутентификации), то для всех последующих обращений значение параметра claimant_cred_ handle должно оставаться неизменным. Это значение позволяет связать в цепочку ассоциированные вызовы GSS_Init_sec_context.

При первом обращении к GSS_Init_sec_context значение параметра input_context_handle должно равняться 0. При последующих вызовах его следует устанавливать равным output_context_handle (ассоциированные вызовы Goutput_context_handle, начиная со второго, не меняют дескриптор контекста безопасности).

Инициатор, посредством входных флагов, может запросить у службы безопасности предоставление дополнительных услуг: возможности делегирования прав доступа (флаг deleg_rec_flag), организации взаимной аутентификации (mutual_req_flag), контроля целостности последовательности сообщений (флаги replay_det_ req_flag и sequence_req_flag), сохранения инкогнито инициатора контекста (anon_req_flag). Соответствующие выходные флаги показывают, в состоянии ли служба безопасности предоставить запрашиваемые услуги. Кроме того, еще два выходных флага, integ_avail и conf_avail, показывают, поддерживается ли службой безопасности контроль целостности сообщений и их конфиденциальность (в принципе можно представить себе механизм, обеспечивающий только аутентификацию партнеров).

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

GSS_Accept_sec_context — принятие контекста безопасности

Функция GSS_Accept_ sec_context предназначена для продолжения (как правило — завершения) формирования контекста безопасности. Мы будем называть это принятием контекста.

Входные параметры:

Выходные параметры:

Функция GSS_Accept_ sec_context во многом аналогична функции инициации контекста GSS_Init_sec_context. Это относится и к кодам завершения, и к возможности повторных вызовов (если для формирования контекста требуется обмен несколькими токенами), и к блокировке обратившегося процесса, и к трактовке большинства входных и выходных параметров.

Отдельного рассмотрения заслуживают выходные параметры src_name и delegated_ cred_handle. Первый из них содержит имя инициатора формирования контекста. В принципе анализ этого имени может повлиять на поведение принимающего контекст. Если обеспечивается анонимность инициатора (установлен флаг anon_state), параметр src_name получает значение NULL (имя инициатора не было включено в токен безопасности).

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

GSS_GetMIC — обеспечение целостности сообщения

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

Входные параметры:

Выходные параметры:

Возможные значения основного кода завершения:

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

Естественно, успешное завершение функции GSS_ GetMIC не гарантирует, что после передачи сообщения удаленному партнеру проверка, выполняемая функцией GSS_ VerifyMIC, даст положительный результат.

GSS_VerifyMIC — проверка целостности сообщения

Функция GSS_VerifyMIC позволяет проверить целостность и подлинность источника сообщения, защищенного функцией GSS_GetMIC.

Входные параметры:

Выходные параметры:

Возможные значения основного кода завершения:

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

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

GSS_Wrap — шифрование сообщения

Функция GSS_Wrap, помимо услуг, предоставляемых вызовом GSS_GetMIC, может обеспечить шифрование сообщения. В отличие от GSS_ GetMIC, результатом работы GSS_Wrap является инкапсулированное сообщение, содержащее необходимую контрольную информацию, а не исходное сообщение с дополнительным токеном безопасности.

Входные параметры:

Выходные параметры:

Возможные значения основного кода завершения для функции GSS_Wrap те же, что и для GSS_GetMIC.

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

GSS_Unwrap — расшифровка сообщения

Функция GSS_Unwrap позволяет расшифровать, проверить целостность и подлинность источника применительно к сообщению, защищенному функцией GSS_Wrap.

Связь между функциями GSS_Wrap и GSS_Unwrap аналогична той, что существует между функциями GSS_ GetMIC и GSS_VerifyMIC.

Входные параметры:

Выходные параметры:

Возможные значения основного кода завершения для функции GSS_Unwrap те же, что и для GSS_VerifyMIC.

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


Службы безопасности, которые могут предоставить интерфейс GSS-API Содержание Ограничения интерфейса безопасности
Copyright ╘ 1993-2000, Jet Infosystems