Обобщенный прикладной программный интерфейс службы безопасности (Generic
Пользователями интерфейса безопасности
Обобщенный интерфейс безопасности
Следует отметить, что средства защиты могут быть очень разными - от систем Kerberos (см. ) до продуктов, реализующих спецификации X.509, т. е.
На каждом компьютере, где предполагается применять интерфейс безопасности
Обобщенный прикладной программный интерфейс службы безопасности содержит следующие основные понятия:
Естественно, что служба безопасности (например, Kerberos) совместно с операционной системой должны обеспечить защиту удостоверений от несанкционированного использования и/или изменения. Процессам, действующим от имени пользователей, не предоставляется прямого доступа к удостоверениям. Вместо этого при необходимости процессы снабжаются
Одному пользователю могут понадобиться удостоверения нескольких видов. Во-первых, структура удостоверений, несомненно, зависит от
В процессе входа пользователя в систему могут формироваться удостоверения стандартного вида, выдаваемые по умолчанию.
Партнеры могут по очереди или одновременно использовать несколько контекстов, если необходимо поддерживать информационные потоки разной степени защищенности.
Интерфейс
Перед началом общения с удаленным партнером приложение обращается к интерфейсу
Если приложению необходимо защитить сообщение, обеспечив возможность контроля
Для приложения структура
Вполне возможно, что на удаленных системах функционирует несколько различных служб безопасности. В этих условиях для успешного формирования
Конкретная служба характеризуется типом реализуемого
Каждая система обязана предлагать некоторый
Если токены являются структурой, закрытой для приложений, то структура имен, употребляемых при формировании
В
Отметим, что интерпретация имен - дело довольно сложное, поскольку они могут принадлежать разным пространствам имен. Чтобы избежать неоднозначности, в состав имени включается идентификатор его типа.
Для усиления защиты информации в интерфейсе
Каждая функция, входящая в состав обобщенного интерфейса безопасности
Основные коды подразделяются на информирующие и сигнализирующие об ошибке. Перечислим некоторые информирующие коды:
GSS_S_COMPLETE - нормальное завершение;GSS_S_CONTINUE_NEEDED - требуется дополнительный вызов данной функции;GSS_S_DUPLICATE_TOKEN - обнаружено дублирование токена защиты сообщений.Следующие значения входят в число кодов, сигнализирующих об ошибке:
GSS_S_BAD_NAME - задано некорректное имя;GSS_S_CONTEXT_EXPIRED - истек срок действия контекста;GSS_S_CREDENTIALS_EXPIRED - истек срок действия удостоверения;GSS_S_DEFECTIVE_TOKEN - обнаружено повреждение токена безопасности;GSS_S_NO_CONTEXT - не задан контекст;GSS_S_NO_CRED - не задано Проанализировав основной код, приложение сделает вывод о нормальном или ненормальном завершении функции. В последнем случае оно может принять во внимание дополнительный код, что даст пользователю больше информации, но уменьшит мобильность приложения.
Работа приложения, опирающегося на интерфейс
Интерфейс
GSS_Acquire_cred - GSS_Release_cred - GSS_Inquire_cred - GSS_Add_cred - постепенное формирование удостоверения;GSS_Inquire_cred_by_mech - получение информации об удостоверении, связанной с конкретным Как уже указывалось, приложение получает в свое распоряжение не само GSS_Release_cred, GSS_Inquire_cred, GSS_Add_cred, а также функций формирования
Функция GSS_Acquire_cred нужна в первую очередь серверным процессам, желающим сообщить, от чьего имени они выступают. Интерактивные пользователи могут получать подразумеваемые удостоверения неявным образом при входе в систему. Аналогично, при выходе такого пользователя из системы может автоматически выполняться вызов функции GSS_Release_cred.
Функция GSS_Inquire_cred позволяет получить информацию об удостоверении: имя ассоциированного субъекта, срок годности, возможность употребления в операциях с контекстом (инициация и/или принятие), поддерживаемые
С помощью функции GSS_Add_cred возможно постепенно формировать удостоверения, добавляя в них поля, необходимые различным
Функция GSS_Inquire_cred_by_mech пригодится в среде, поддерживающей несколько
Создание
Для работы с контекстами обобщенный интерфейс безопасности
GSS_Init_sec_context - формирование "исходящего" контекста, т. е. части контекста, относящейся к инициатору общения;GSS_Accept_sec_context - формирование "входящего" контекста, т. е. части контекста, относящейся к вызываемому партнеру;GSS_Delete_sec_context - отказ от контекста, ставшего ненужным;GSS_Process_context_token - обработка полученного контекстного токена;GSS_Context_time - выяснение срока годности контекста;GSS_Inquire_context - GSS_Wrap_size_limit - выяснение максимального размера сообщения, которое можно зашифровать в рамках заданного GSS_Export_sec_context - GSS_Import_sec_context - Инициатор общения вызывает функцию GSS_Init_sec_context, передавая ей свое
Партнер, получив токен, передает его функции GSS_Accept_sec_context (вместе со своим
Если инициатор общения (обычно это клиент) желает убедиться в подлинности партнера, он передает функции GSS_Init_sec_context флаг mutual_req_flag (требуется взаимная GSS_Init_sec_context возвращает в качестве основного кода значение GSS_S_CONTINUE_NEEDED (а не GSS_S_COMPLETE ). Соответствующим образом меняется и генерируемый контекстный токен. Партнер, приняв и обработав (с помощью функции GSS_Accept_sec_context ) присланную информацию, получит на выходе установленный флаг mutual_state и новый контекстный токен, который следует вернуть инициатору. Последний должен повторно обратиться к функции GSS_Init_sec_context с полученным токеном. При отсутствии ошибок GSS_Init_sec_context вернет, наконец, основной код GSS_S_COMPLETE, и формирование контекста на этом завершится.
При формировании контекста служба безопасности может требовать обмена несколькими токенами (даже без взаимной GSS_Init_sec_context, а его партнеру - функцию GSS_Accept_sec_context. Все вызовы, кроме последнего, вернут основной код GSS_S_CONTINUE_NEEDED. Последний вызов, завершающий формирование контекста на соответствующей стороне, в нормальном случае выдаст основной код GSS_S_COMPLETE.
Партнеры должны сами определять (способами, внешними по отношению к GSS_Delete_sec_context может передать управляющий токен, подлежащий пересылке партнеру. Партнер, приняв токен, должен вызвать функцию GSS_Process_context_token, которая проанализирует управляющую информацию и удалит вторую половину сбрасываемого контекста.
Как правило, в процессе формирования контекста партнер получает информацию о его инициаторе. Инициатор может запросить формирование anon_req_flag. Это имеет смысл при пользовании общедоступными услугами (получение свободно распространяемой информации и т.п.). Партнер вправе принять или отвергнуть
Функция GSS_Inquire_context позволяет получить информацию о контексте - имена инициатора общения и его партнера, срок годности, тип задействованного replay_det_state - обеспечивается conf_avail - предоставляется возможность шифровать сообщения и т.п.).
Функция GSS_Export_sec_context предоставляет токен, пригодный для передачи
Для приема (импорта) GSS_Import_sec_context.
При формировании контекста партнеры по общению имеют возможность убедиться в подлинности друг друга. Все остальные средства службы безопасности направлены на защиту сообщений.
Интерфейс
GSS_GetMIC - формирование токена, позволяющего контролировать GSS_VerifyMIC - проверка GSS_Wrap - формирование инкапсулированного, возможно, зашифрованного, сообщения, содержащего информацию для контроля GSS_Unwrap - разбор инкапсулированного сообщения.При формировании контекста инициатор специфицирует требуемый уровень защиты сообщений. Ответные флаги показывают, обеспечивается ли этот уровень на самом деле. Флаг integ_avail информирует о возможности контроля conf_avail - о доступности средств шифрования. Прежде чем обращаться к функциям GSS_GetMIC / GSS_Wrap, приложение должно проверить состояние перечисленных флагов.
Функция GSS_GetMIC на основе сообщения формирует отдельный GSS_Wrap "упаковывает" контрольную информацию вместе с сообщением (быть может, зашифрованным). Приложения должны уметь различать токены безопасности и сообщения (инкапсулированные или нет) и обрабатывать их соответствующим образом.
Служба безопасности способна предоставлять дополнительные услуги в виде replay_det_req_flag и sequence_req_flag ). Ответные флаги показывают, действительно ли обеспечивается запрошенный уровень защиты - тогда в ассоциированные токены безопасности или инкапсулированные сообщения прозрачным для приложения образом могут вставляться порядковые номера, временные штампы и т.п.
Соответственно, приложение должно быть готово получить от функций GSS_VerifyMIC / GSS_Unwrap основные коды завершения: GSS_S_DUPLICATE_TOKEN (обнаружено дублирование сообщений), GSS_S_OLD_TOKEN (старое сообщение), GSS_S_UNSEQ_TOKEN (опоздавшее сообщение), GSS_S_GAP_TOKEN (сообщение пришло слишком рано - некоторые предшествующие сообщения еще не получены). Подозрительные сообщения, несмотря на ненормальный код завершения, передаются приложению, которое трактует ситуацию в соответствии с избранной политикой безопасности (в частности, ничто не мешает обработать сообщение обычным образом).
Некоторые службы безопасности могут предоставлять различное
Приведем примерный сценарий взаимодействия между клиентом и сервером (см. рис. 11.1). Предполагается, что для взаимной
Детали, связанные с преобразованием имен, опущены. Текст в фигурных скобках является комментарием. Стрелка --> отделяет входные параметры от выходных.
(рис 11.1) Примерный сценарий взаимодействия между клиентом и сервером под защитой обобщенного интерфейса безопасности.Мы видим, что общая схема взаимодействия удаленных партнеров под защитой интерфейса безопасности
Представление средствами языка C объектов, фигурирующих в обобщенном интерфейсе безопасности
Прежде всего, вводится тип OM_uint32, соответствующий 32-битным беззнаковым целым значениям. Большинство структурных значений представляется с помощью указателя на
typedef struct gss_buffer_desc_struct {
size_t length;
void *value;
} gss_buffer_desc, *gss_buffer_t;
Тип gss_buffer_t используется при задании составных аргументов - имен, дескрипторов, токенов, сообщений и т.п.
typedef struct gss_OID_desc_struct {
OM_uint32 length;
void *elements;
} gss_OID_desc, *gss_OID;
Указатели elements ссылаются на начало представления идентификаторов, т. е. на последовательности байт, устроенных в соответствии с базовыми правилами ASN.1.
Наборы объектных идентификаторов представляются так, как показано на листинге 11.3.
typedef struct gss_OID_set_desc_struct {
int count;
gss_OID elements;
} gss_OID_set_desc, *gss_OID_set;
Вводятся и некоторые другие типы, уточняющие представление структурированных значений.
На листинге 11.4 показано, как выглядит на языке C описание функции GSS_Init_sec_context.
OM_uint32 GSS_Init_sec_context (
OM_uint32 *minor_status,
const gss_cred_id_t initiator_cred_handle,
gss_ctx_id_t *context_handle,
const gss_name_t target_name,
const gss_OID mech_type,
OM_uint32 req_flags,
OM_uint32 time_req,
const gss_channel_bindings_t
input_chan_bindings,
const gss_buffer_t input_token
gss_OID *actual_mech_type,
gss_buffer_t output_token,
OM_uint32 *ret_flags,
OM_uint32 *time_rec
);
Отметим, что параметр context_handle является здесь одновременно входным и выходным, а основной код завершения возвращается как результат функции.
Разумеется, есть еще много аспектов, оговоренных в спецификациях , например, кто и когда отводит память под объекты и под дескрипторы, и каким образом эту память можно освобождать. Мы, однако, не будем на этом останавливаться.
Обобщенный прикладной программный интерфейс службы безопасности (Generic
Пользователями интерфейса безопасности
Обобщенный интерфейс безопасности
Следует отметить, что средства защиты могут быть очень разными - от систем Kerberos (см. ) до продуктов, реализующих спецификации X.509, т. е.
На каждом компьютере, где предполагается применять интерфейс безопасности
Обобщенный прикладной программный интерфейс службы безопасности содержит следующие основные понятия:
Естественно, что служба безопасности (например, Kerberos) совместно с операционной системой должны обеспечить защиту удостоверений от несанкционированного использования и/или изменения. Процессам, действующим от имени пользователей, не предоставляется прямого доступа к удостоверениям. Вместо этого при необходимости процессы снабжаются
Одному пользователю могут понадобиться удостоверения нескольких видов. Во-первых, структура удостоверений, несомненно, зависит от
В процессе входа пользователя в систему могут формироваться удостоверения стандартного вида, выдаваемые по умолчанию.
Партнеры могут по очереди или одновременно использовать несколько контекстов, если необходимо поддерживать информационные потоки разной степени защищенности.
Интерфейс
Перед началом общения с удаленным партнером приложение обращается к интерфейсу
Если приложению необходимо защитить сообщение, обеспечив возможность контроля
Для приложения структура
Вполне возможно, что на удаленных системах функционирует несколько различных служб безопасности. В этих условиях для успешного формирования
Конкретная служба характеризуется типом реализуемого
Каждая система обязана предлагать некоторый
Если токены являются структурой, закрытой для приложений, то структура имен, употребляемых при формировании
В
Отметим, что интерпретация имен - дело довольно сложное, поскольку они могут принадлежать разным пространствам имен. Чтобы избежать неоднозначности, в состав имени включается идентификатор его типа.
Для усиления защиты информации в интерфейсе
Каждая функция, входящая в состав обобщенного интерфейса безопасности
Основные коды подразделяются на информирующие и сигнализирующие об ошибке. Перечислим некоторые информирующие коды:
GSS_S_COMPLETE - нормальное завершение;GSS_S_CONTINUE_NEEDED - требуется дополнительный вызов данной функции;GSS_S_DUPLICATE_TOKEN - обнаружено дублирование токена защиты сообщений.Следующие значения входят в число кодов, сигнализирующих об ошибке:
GSS_S_BAD_NAME - задано некорректное имя;GSS_S_CONTEXT_EXPIRED - истек срок действия контекста;GSS_S_CREDENTIALS_EXPIRED - истек срок действия удостоверения;GSS_S_DEFECTIVE_TOKEN - обнаружено повреждение токена безопасности;GSS_S_NO_CONTEXT - не задан контекст;GSS_S_NO_CRED - не задано Проанализировав основной код, приложение сделает вывод о нормальном или ненормальном завершении функции. В последнем случае оно может принять во внимание дополнительный код, что даст пользователю больше информации, но уменьшит мобильность приложения.
Работа приложения, опирающегося на интерфейс
Интерфейс
GSS_Acquire_cred - GSS_Release_cred - GSS_Inquire_cred - GSS_Add_cred - постепенное формирование удостоверения;GSS_Inquire_cred_by_mech - получение информации об удостоверении, связанной с конкретным Как уже указывалось, приложение получает в свое распоряжение не само GSS_Release_cred, GSS_Inquire_cred, GSS_Add_cred, а также функций формирования
Функция GSS_Acquire_cred нужна в первую очередь серверным процессам, желающим сообщить, от чьего имени они выступают. Интерактивные пользователи могут получать подразумеваемые удостоверения неявным образом при входе в систему. Аналогично, при выходе такого пользователя из системы может автоматически выполняться вызов функции GSS_Release_cred.
Функция GSS_Inquire_cred позволяет получить информацию об удостоверении: имя ассоциированного субъекта, срок годности, возможность употребления в операциях с контекстом (инициация и/или принятие), поддерживаемые
С помощью функции GSS_Add_cred возможно постепенно формировать удостоверения, добавляя в них поля, необходимые различным
Функция GSS_Inquire_cred_by_mech пригодится в среде, поддерживающей несколько
Создание
Для работы с контекстами обобщенный интерфейс безопасности
GSS_Init_sec_context - формирование "исходящего" контекста, т. е. части контекста, относящейся к инициатору общения;GSS_Accept_sec_context - формирование "входящего" контекста, т. е. части контекста, относящейся к вызываемому партнеру;GSS_Delete_sec_context - отказ от контекста, ставшего ненужным;GSS_Process_context_token - обработка полученного контекстного токена;GSS_Context_time - выяснение срока годности контекста;GSS_Inquire_context - GSS_Wrap_size_limit - выяснение максимального размера сообщения, которое можно зашифровать в рамках заданного GSS_Export_sec_context - GSS_Import_sec_context - Инициатор общения вызывает функцию GSS_Init_sec_context, передавая ей свое
Партнер, получив токен, передает его функции GSS_Accept_sec_context (вместе со своим
Если инициатор общения (обычно это клиент) желает убедиться в подлинности партнера, он передает функции GSS_Init_sec_context флаг mutual_req_flag (требуется взаимная GSS_Init_sec_context возвращает в качестве основного кода значение GSS_S_CONTINUE_NEEDED (а не GSS_S_COMPLETE ). Соответствующим образом меняется и генерируемый контекстный токен. Партнер, приняв и обработав (с помощью функции GSS_Accept_sec_context ) присланную информацию, получит на выходе установленный флаг mutual_state и новый контекстный токен, который следует вернуть инициатору. Последний должен повторно обратиться к функции GSS_Init_sec_context с полученным токеном. При отсутствии ошибок GSS_Init_sec_context вернет, наконец, основной код GSS_S_COMPLETE, и формирование контекста на этом завершится.
При формировании контекста служба безопасности может требовать обмена несколькими токенами (даже без взаимной GSS_Init_sec_context, а его партнеру - функцию GSS_Accept_sec_context. Все вызовы, кроме последнего, вернут основной код GSS_S_CONTINUE_NEEDED. Последний вызов, завершающий формирование контекста на соответствующей стороне, в нормальном случае выдаст основной код GSS_S_COMPLETE.
Партнеры должны сами определять (способами, внешними по отношению к GSS_Delete_sec_context может передать управляющий токен, подлежащий пересылке партнеру. Партнер, приняв токен, должен вызвать функцию GSS_Process_context_token, которая проанализирует управляющую информацию и удалит вторую половину сбрасываемого контекста.
Как правило, в процессе формирования контекста партнер получает информацию о его инициаторе. Инициатор может запросить формирование anon_req_flag. Это имеет смысл при пользовании общедоступными услугами (получение свободно распространяемой информации и т.п.). Партнер вправе принять или отвергнуть
Функция GSS_Inquire_context позволяет получить информацию о контексте - имена инициатора общения и его партнера, срок годности, тип задействованного replay_det_state - обеспечивается conf_avail - предоставляется возможность шифровать сообщения и т.п.).
Функция GSS_Export_sec_context предоставляет токен, пригодный для передачи
Для приема (импорта) GSS_Import_sec_context.
При формировании контекста партнеры по общению имеют возможность убедиться в подлинности друг друга. Все остальные средства службы безопасности направлены на защиту сообщений.
Интерфейс
GSS_GetMIC - формирование токена, позволяющего контролировать GSS_VerifyMIC - проверка GSS_Wrap - формирование инкапсулированного, возможно, зашифрованного, сообщения, содержащего информацию для контроля GSS_Unwrap - разбор инкапсулированного сообщения.При формировании контекста инициатор специфицирует требуемый уровень защиты сообщений. Ответные флаги показывают, обеспечивается ли этот уровень на самом деле. Флаг integ_avail информирует о возможности контроля conf_avail - о доступности средств шифрования. Прежде чем обращаться к функциям GSS_GetMIC / GSS_Wrap, приложение должно проверить состояние перечисленных флагов.
Функция GSS_GetMIC на основе сообщения формирует отдельный GSS_Wrap "упаковывает" контрольную информацию вместе с сообщением (быть может, зашифрованным). Приложения должны уметь различать токены безопасности и сообщения (инкапсулированные или нет) и обрабатывать их соответствующим образом.
Служба безопасности способна предоставлять дополнительные услуги в виде replay_det_req_flag и sequence_req_flag ). Ответные флаги показывают, действительно ли обеспечивается запрошенный уровень защиты - тогда в ассоциированные токены безопасности или инкапсулированные сообщения прозрачным для приложения образом могут вставляться порядковые номера, временные штампы и т.п.
Соответственно, приложение должно быть готово получить от функций GSS_VerifyMIC / GSS_Unwrap основные коды завершения: GSS_S_DUPLICATE_TOKEN (обнаружено дублирование сообщений), GSS_S_OLD_TOKEN (старое сообщение), GSS_S_UNSEQ_TOKEN (опоздавшее сообщение), GSS_S_GAP_TOKEN (сообщение пришло слишком рано - некоторые предшествующие сообщения еще не получены). Подозрительные сообщения, несмотря на ненормальный код завершения, передаются приложению, которое трактует ситуацию в соответствии с избранной политикой безопасности (в частности, ничто не мешает обработать сообщение обычным образом).
Некоторые службы безопасности могут предоставлять различное
Приведем примерный сценарий взаимодействия между клиентом и сервером (см. рис. 11.1). Предполагается, что для взаимной
Детали, связанные с преобразованием имен, опущены. Текст в фигурных скобках является комментарием. Стрелка --> отделяет входные параметры от выходных.
(рис 11.1) Примерный сценарий взаимодействия между клиентом и сервером под защитой обобщенного интерфейса безопасности.Мы видим, что общая схема взаимодействия удаленных партнеров под защитой интерфейса безопасности
Представление средствами языка C объектов, фигурирующих в обобщенном интерфейсе безопасности
Прежде всего, вводится тип OM_uint32, соответствующий 32-битным беззнаковым целым значениям. Большинство структурных значений представляется с помощью указателя на
typedef struct gss_buffer_desc_struct {
size_t length;
void *value;
} gss_buffer_desc, *gss_buffer_t;
Тип gss_buffer_t используется при задании составных аргументов - имен, дескрипторов, токенов, сообщений и т.п.
typedef struct gss_OID_desc_struct {
OM_uint32 length;
void *elements;
} gss_OID_desc, *gss_OID;
Указатели elements ссылаются на начало представления идентификаторов, т. е. на последовательности байт, устроенных в соответствии с базовыми правилами ASN.1.
Наборы объектных идентификаторов представляются так, как показано на листинге 11.3.
typedef struct gss_OID_set_desc_struct {
int count;
gss_OID elements;
} gss_OID_set_desc, *gss_OID_set;
Вводятся и некоторые другие типы, уточняющие представление структурированных значений.
На листинге 11.4 показано, как выглядит на языке C описание функции GSS_Init_sec_context.
OM_uint32 GSS_Init_sec_context (
OM_uint32 *minor_status,
const gss_cred_id_t initiator_cred_handle,
gss_ctx_id_t *context_handle,
const gss_name_t target_name,
const gss_OID mech_type,
OM_uint32 req_flags,
OM_uint32 time_req,
const gss_channel_bindings_t
input_chan_bindings,
const gss_buffer_t input_token
gss_OID *actual_mech_type,
gss_buffer_t output_token,
OM_uint32 *ret_flags,
OM_uint32 *time_rec
);
Отметим, что параметр context_handle является здесь одновременно входным и выходным, а основной код завершения возвращается как результат функции.
Разумеется, есть еще много аспектов, оговоренных в спецификациях , например, кто и когда отводит память под объекты и под дескрипторы, и каким образом эту память можно освобождать. Мы, однако, не будем на этом останавливаться.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.