Сертификат, ключ и доверительные понятия служб
Сертификат, Ключ и Trust Services являются набором функций, и структуры данных раньше аутентифицировали и авторизовывали пользователей и ключи использования процессов и сертификаты. Поскольку в OS X и iOS, сертификаты и ключи сохранены на цепочке для ключей, многие функции в этом API должны использоваться в сочетании с функциями в Keychain Services API.
В этой главе рассматриваются некоторые понятия, которые необходимо понять для использования Сертификата, Ключа и Trust Services API. Кроме того, ключи и сертификаты определены и обсуждены в Обзоре безопасности.
Сертификаты, ключи и идентификационные данные
Цифровой сертификат является набором данных, используемых для проверки идентификационных данных держателя или отправителя сертификата. Например, сертификат содержит такую информацию как:
Эмитент сертификата
Владелец сертификата
Срок действия (сертификат не допустим прежде или после этого периода),
Открытый ключ владельца сертификата
Расширения сертификата, содержащие дополнительную информацию, такую как допустимое использование для закрытого ключа, связанного с сертификатом
Цифровая подпись от центра сертификации, чтобы гарантировать, что сертификат не был изменен и указать идентификационные данные эмитента
Каждый сертификат проверяется с помощью другого сертификата, создавая цепочку сертификатов, заканчивающуюся корневым сертификатом. Эмитент сертификата вызывают центром сертификации (CA). Владелец корневого сертификата является корневым центром сертификации. Дополнительную информацию см. в Обзоре безопасности о структуре и содержании сертификата.
Каждый открытый ключ является половиной пары общедоступной с закрытым ключом. Как подразумевается именами, открытый ключ может быть получен любым, но закрытый ключ держится в секрете владельцем ключа. Данные, зашифрованные с закрытым ключом, могут быть дешифрованы только с открытым ключом, и наоборот. Чтобы и зашифровать и дешифровать данные, поэтому, у данного пользователя должны быть оба открытый ключ (обычно встроенный в сертификат) и закрытый ключ. Комбинация сертификата и его связанного закрытого ключа известна как идентификационные данные. Сертификат, Ключ и Trust Services включают функции, чтобы счесть сертификат или ключ связанными с идентификационными данными и счесть идентификационные данные когда данными критерии поиска. Критерии поиска включают разрешенное использование для ключа.
В OS X и iOS, ключи и сертификаты сохранены на цепочке для ключей, база данных, обеспечивающая безопасный (т.е. зашифрованный) хранение для закрытых ключей и других секретов, а также незашифрованное хранение для других связанных с безопасностью данных. Сертификат, Ключ и функции Trust Services, ищущие ключи, сертификаты и идентификационные данные все использование цепочка для ключей с этой целью. В системе OS X можно использовать утилиту Keychain Access, чтобы видеть содержание цепочки для ключей и исследовать содержание сертификатов.
Сертификат, ключ, и доверительные службы и CDSA
В iOS Keychain Services API обеспечивает все функции, доступные для управления элементами цепочки для ключей.
В OS X, Сертификате, Ключе, и службах Trust и другой безопасности APIs основан на Common Data Security Architecture (CDSA) с открытым исходным кодом и ее интерфейсе программирования, Common Security Services Manager (CSSM).
Сертификат, Ключ и Trust Services API обеспечивают функции для выполнения большинства операций, необходимых приложениям, включая генерацию пар ключей, получение сертификата или закрытого ключа, связанного с идентификационными данными, получение корневых сертификатов от системы, проверка сертификатов и оценка доверия. Однако базовый API CSSM обеспечивает больше возможностей, которые могли бы представлять интерес для специализированных приложений, таких как приложения, разработанные для администрирования безопасности компьютера или сети. Поэтому Сертификат, Ключ и Trust Services, API включает много функций, возвращающих или создающих структуры CSSM так, чтобы можно было переместиться свободно назад и вперед между Сертификатом, Ключом, и Trust Services и CSSM.
Для получения дополнительной информации о API CSSM, посмотрите Коллективную безопасность: CDSA и CSSM, версия 2 (с исправлениями) от Open Group (http://www .opengroup.org/security/cdsa.htm).
Политики и доверие
Определенные атрибуты цифрового сертификата (известный как расширения сертификата), как говорят, устанавливают уровень доверия для цифрового сертификата. Уровень доверия для сертификата используется для ответа на вопрос, “Я должен доверять этому сертификату для этого действия?” Доверительная политика является рядом правил, которые указывают, как оценить сертификат, чтобы видеть, допустимо ли это для определенного уровня доверия.
Например, в OS X модуль AppleX509TP проводит доверительную политику, называемую политикой S/MIME, указывающей, как проверить адреса электронной почты в дополнение к основной проверке сертификата. При установке доверительной оценки в Сертификате, Ключе и Trust Services API, Вы указываете который политика использовать в оценке доверия. Это - то, как Вы указываете использование, для которого Вы хотите проверить законность сертификата. Например, при указании политики SSL Вы имеете силу, спрашивая, можно ли сертификату доверять для использования в установлении безопасного соединения по сети.
Некоторые политики имеют опции (см. приложение Политик Доверия AppleX509TP в Сертификате, Ключе и Ссылке Trust Services). Например, политика списка аннулированных сертификатов включает опции, включающие флаги. Когда CSSM_TP_ACTION_REQUIRE_CRL_PER_CERT
флаг установлен, сертификат не допустим, если каждый сертификат в цепочке сертификата не был успешно проверен с помощью списка аннулированных сертификатов. Структуры опции для политик доверия AppleX509TP определяются в cssmapple.h
. Сертификат, Ключ и Trust Services API используют значения опции по умолчанию для каждой политики.