Защита данных связки ключей

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

Обзор

Для шифрования элементов связки ключей используются два разных ключа AES-256-GCM: ключ таблицы (метаданные) и ключ строки (секретный ключ). Метаданные связки ключей (все атрибуты, кроме kSecValue) шифруются с помощью ключа метаданных для ускорения поиска, а секретное значение (kSecValueData) шифруется с помощью отдельного секретного ключа. Ключ метаданных защищен сопроцессором Secure Enclave, однако кэшируется в процессоре приложений для быстрой отправки запросов к связке ключей. Для доступа к секретному ключу всегда требуется обращение к Secure Enclave.

Связка ключей реализована в виде базы данных SQLite, которая хранится в файловой системе. Существует только одна база данных, и демон securityd определяет, к каким элементам связки ключей может обращаться каждый процесс или каждое приложение. API доступа к связке ключей отправляют вызовы демону, который запрашивает заданные для приложения права Keychain-access-groups (группы доступа к связке ключей), application-identifier (идентификатор приложения) и application-group (группа приложения). Группы доступа не ограничивают доступ одним процессом, а позволяют нескольким приложениям совместно использовать элементы связки ключей.

Элементы связки ключей могут использоваться совместно только приложениями одного и того же разработчика. Для совместного использования ключей приложения сторонних разработчиков используют группы доступа с префиксом, который был выделен им через программу Apple Developer Program путем распределения по группам приложений. Для принудительного использования префиксов и уникальных групп приложений используются подпись кода, профили обеспечения и программа Apple Developer Program.

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

Доступность

Защита данных в файлах

Защита данных связки ключей

В разблокирован­ном состоянии

NSFileProtectionComplete

kSecAttrAccessibleWhenUnlocked

В заблокирован­ном состоянии

NSFileProtectionComplete

UnlessOpen

После первой разблокировки

NSFileProtectionComplete

UntilFirstUserAuthentication

kSecAttrAccessibleAfterFirstUnlock

Всегда

NSFileProtectionNone

kSecAttrAccessibleAlways

При включении код-пароля

kSecAttrAccessibleWhen

PasscodeSetThisDeviceOnly

Если приложение пользуется службами фонового обновления, оно может использовать класс kSecAttrAccessibleAfterFirstUnlock для элементов связки ключей, которые необходимы во время фонового обновления.

Класс kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly работает так же, как и kSecAttrAccessibleWhenUnlocked, однако его можно использовать, только если на устройстве задан код‑пароль. Элементы этого класса существуют только в системном хранилище ключей; они:

  • не синхронизируются со Связкой ключей iCloud;

  • не включаются в резервные копии;

  • не включаются в хранилища ключей передачи.

В случае удаления или сброса код-пароля ключи класса становятся недействительными, что не позволяет использовать эти элементы.

Другие классы связки ключей имеют эквивалент «Только для этого устройства». При перемещении с устройства во время резервного копирования этот эквивалент защищается с помощью UID, что не позволяет восстановить его на другом устройстве. В системах Apple достигнут баланс между безопасностью и удобством: классы связки ключей выбираются в зависимости от типа защищаемой информации и от того, когда эта информация необходима операционной системе iOS, iPadOS или visionOS.

Функции защиты класса для данных связки ключей

К элементам связки ключей применяются функции защиты следующих классов.

Элемент

Доступность

Ключи шифрования уведомлений Handoff

После первой разблокировки

Токен iCloud

После первой разблокировки

Ключи iMessage

После первой разблокировки

LDAP, CalDAV, CardDAV

После первой разблокировки

Учетные записи Почты

После первой разблокировки

Учетные записи Microsoft Exchange ActiveSync

После первой разблокировки

Токены учетных записей в социальных сетях

После первой разблокировки

Пароли VPN

После первой разблокировки

Пароли Wi-Fi

После первой разблокировки

Пароль «Домашней коллекции»

В разблокирован­ном состоянии

Закладки Safari

В разблокирован­ном состоянии

Пароли Safari

В разблокирован­ном состоянии

Резервное копирование с помощью Finder или iTunes

В разблокирован­ном состоянии, без возможности переноса

Сертификаты VPN

После первой разблокировки, без возможности переноса

Токен службы Apple Push Notification (APNs)

Всегда, без возможности переноса

Ключи Bluetooth

Всегда, без возможности переноса

Сертификаты и личный ключ iCloud

Всегда, без возможности переноса

PIN-код SIM-карты

Всегда, без возможности переноса

Токен Локатора

Всегда

Автоответчик

Всегда

В macOS все объекты связки ключей, установленные профилями конфигурации, всегда доступны после разблокировки FileVault. В iOS, iPadOS и visionOS доступность объектов связки ключей, установленных профилем конфигурации, зависит от их типа, способа их упоминания и даты их установки. По умолчанию объекты связки ключей, установленные с использованием профилей конфигурации, доступны после первой разблокировки и классифицируются как «без возможности переноса». Однако объект связки ключей, установленный профилем конфигурации, доступен всегда в следующих случаях:

  • объект был установлен перед обновлением до iOS 15 либо iPadOS 15 или новее;

  • объект является сертификатом, а не удостоверением;

  • объект является удостоверением, упоминаемым сертификатом IdentityCertificateUUID в полезной нагрузке com.apple.mdm.

Контроль доступа к связке ключей

Для установки политик доступа и требований аутентификации связки ключей могут использовать списки контроля доступа (ACL). Элементы в связке могут задавать условия, требующие участия пользователя, запрещая доступ до тех пор, пока пользователь не выполнит аутентификацию с помощью Optic ID, Face ID или Touch ID либо не введет пароль или код‑пароль устройства. Можно также ограничить доступ к элементам, указав, что регистрация с помощью Optic ID, Face ID или Touch ID не должна меняться с момента добавления элемента. Это ограничение направлено на то, чтобы злоумышленник не мог добавить собственный отпечаток пальца и получить доступ к элементу связки ключей. Списки контроля доступа оцениваются внутри Secure Enclave и передаются ядру только при соблюдении заданных ограничений.

Архитектура связки ключей в macOS

macOS также предоставляет доступ к связке ключей для удобного и безопасного хранения имен пользователей и паролей, цифровых удостоверений, ключей шифрования и секретных заметок. Для доступа к связке ключей необходимо открыть приложение «Связка ключей» в папке /Applications/Utilities. Использование связки ключей устраняет необходимость вводить — или даже запоминать — учетные данные для каждого ресурса. Для каждого пользователя Mac создается связка ключей по умолчанию. Также пользователи могут создавать другие связки ключей, предназначенные для определенных целей.

Помимо применения пользовательских связок ключей, в macOS используется ряд системных связок ключей, которые поддерживают ресурсы аутентификации, не зависящие от пользователя, такие как учетные данные сетей и идентификаторы инфраструктуры открытых ключей (PKI). Например, неизменяемая связка ключей System Roots хранит сертификаты корневого центра сертификации инфраструктуры открытых ключей интернета, упрощая такие распространенные задачи, как интернет-банкинг и электронная торговля. Аналогичным образом пользователь может развернуть внутренние сертификаты центра сертификации на управляемых компьютерах Mac, чтобы помочь в проверке внутренних сайтов и служб.

Дата публикации: 19 декабря 2024 г.
Morty Proxy This is a proxified and sanitized view of the page, visit original site.
Эта страница полезна?
Максимальное количество символов: 250
Максимальное количество символов: 250.
Благодарим вас за отзыв.
Morty Proxy This is a proxified and sanitized view of the page, visit original site.