Сервер безопасности и агент безопасности
Реализация защиты OS X и iOS включает демона, названного Сервером безопасности, реализующим несколько протоколов системы защиты, таких как доступ к элементам цепочки для ключей и корневому управлению доверием сертификата. OS X также включает отдельный агент в расчете на пользователя, названный Агентом безопасности, использующимся Сервером безопасности для отображения пользовательского интерфейса.
Это приложение кратко описывает их роли.
Сервер безопасности
Сервер безопасности (securityd
) демон, работающий в OS X и iOS, реализующем несколько протоколов системы защиты, таких как шифрование, дешифрование, и (в OS X) вычисление авторизации.
В OS X и iOS, Сервер безопасности прислушивается к сообщениям из различной безопасности APIs и выполняет криптографические службы от их имени. Поскольку разработчики обычно используют ссылки на ключи вместо того, чтобы использовать сами ключи, Сервер безопасности может сохранить те ключи в отдельном адресном пространстве от клиентского процесса, таким образом снизив риск случайного раскрытия.
Как добавленное преимущество, каждый раз, когда Apple представляет новую аутентификацию или технологию шифрования, существующее программное обеспечение, использующее безопасность OS X, APIs может прозрачно поддерживать его без изменений кода, при условии, что программное обеспечение не должно импортировать или экспортировать ключи непосредственно.
Сервер безопасности не имеет никакого общедоступного API. Вместо этого Ваш код вызывает APIs, такой как Keychain Services; Сертификат, Ключ и Trust Services; и Authorization Services (только на OS X), которые поочередно связываются с Сервером безопасности.
Агент безопасности
Агент безопасности является отдельным процессом, обеспечивающим пользовательский интерфейс для Сервера безопасности в OS X (не iOS). Его основная цель состоит в том, чтобы запросить аутентификацию каждый раз, когда запросы приложения дополнительные полномочия.
Когда Сервер безопасности требует, чтобы пользователь аутентифицировал, Агент безопасности выводит на экран диалоговое окно, запрашивающее имя пользователя и пароль. Преимущества выполнения этого действия в отдельном процессе являются двукратными. Во-первых, приложение может получить авторизацию, никогда не имея доступа к учетным данным пользователя (имя пользователя и пароль, например). Во-вторых, это позволяет Apple добавить новые формы аутентификации, не требуя, чтобы каждое приложение поняло их.
Агент безопасности требует, чтобы пользователь физически присутствовал, чтобы аутентифицироваться. Поскольку элементы графического интерфейса пользователя не могут использоваться через интерфейс командной строки, такой как Терминальное приложение или безопасная оболочка (ssh
) удаленный сеанс, это ограничение делает намного более трудным для злонамеренного пользователя нарушить безопасность приложения.