
Классы защиты данных
Когда приложение создает новый файл на устройствах, которые поддерживают защиту данных, оно назначает ему класс. Каждый класс использует различные политики для определения условий доступа к данным. Основные классы и политики описаны в следующих разделах. Компьютеры Mac с чипом Apple не поддерживают класс D «Без защиты», и границы зоны безопасности устанавливаются вокруг входа и выхода (а не блокировки и разблокировки, как на iPhone и iPad).
Класс | Тип защиты |
---|---|
Класс A. Полная защита | NSFileProtectionComplete |
Класс B. Защищено, если не открыто | NSFileProtectionCompleteUnlessOpen |
Класс C. Защищено до первой аутентификации пользователя Примечание. macOS использует ключ тома для воссоздания характеристик защиты FileVault. | NSFileProtectionCompleteUntilFirstUserAuthentication |
Класс D. Без защиты Примечание. Не поддерживается в macOS. | NSFileProtectionNone |
Полная защита
NSFileProtectionComplete. Ключ класса защищается с помощью ключа, полученного из код-пароля или пароля пользователя и UID устройства. Вскоре после того, как пользователь блокирует устройство (через 10 секунд, если для параметра «Запрос пароля» задано значение «Сразу»), расшифрованный ключ класса удаляется, в результате чего все данные этого класса остаются недоступны, пока пользователь снова не введет код‑пароль или не разблокирует устройство (войдет в систему) с помощью Optic ID, Face ID или Touch ID.
На устройствах с macOS расшифрованный ключ класса удаляется вскоре после того, как последний пользователь выходит из системы, в результате чего все данные этого класса становятся недоступны, пока какой-либо пользователь снова не введет код‑пароль или не выполнит вход на устройстве с помощью Touch ID.
Защищено, если не открыто
NSFileProtectionCompleteUnlessOpen. Иногда требуется записать определенные файлы, когда устройство заблокировано или пользователь вышел из системы. В качестве примера можно привести загрузку почтового вложения в фоновом режиме. Такое действие становится возможным благодаря использованию асимметричной эллиптической криптографии (ECDH по Curve25519). Для защиты обычного ключа файла используется ключ, полученный в результате однопроходного согласования ключей Диффи — Хеллмана, как описано в документе NIST SP 800-56A.
Динамический открытый ключ для согласования хранится вместе с защищенным ключом файла. В качестве KDF используется функция формирования ключа сцеплением (утвержденная альтернатива 1) согласно пункту 5.8.1 документа NIST SP 800-56A. AlgorithmID опускается. PartyUInfo и PartyVInfo — это динамический и статический открытые ключи соответственно. В качестве функции хеширования используется SHA256. Сразу после закрытия файла его ключ удаляется из памяти. Для повторного открытия файла снова создается открытый ключ на основе личного ключа класса «Защищено, если не открыто» и динамического открытого ключа; они используются для снятия защиты с ключа файла, который затем используется для расшифровки файла.
На устройствах с macOS личная часть ключа класса NSFileProtectionCompleteUnlessOpen доступна, пока пользователи находятся в системе или остаются аутентифицированы.
Защищено до первой аутентификации пользователя
NSFileProtectionCompleteUntilFirstUserAuthentication. Действие этого класса аналогично классу «Полная защита», однако расшифрованный ключ класса не удаляется из памяти при блокировке устройства или выходе пользователя из системы. Защита этого класса похожа на шифрование всего тома на настольных системах и защищает данные от атак, которые используют перезагрузку устройства. Этот класс по умолчанию используется для всех приложений сторонних разработчиков, которым не назначен класс защиты данных.
На устройствах с macOS этот класс использует ключ тома, который доступен, пока подключен том, и работает так же, как FileVault.
Без защиты
NSFileProtectionNone. Ключ этого класса защищен только с помощью UID и хранится в стираемом накопителе. Поскольку все ключи, необходимые для расшифровки файлов в этом классе, хранятся на устройстве, единственным преимуществом такого шифрования является возможность быстрого удаленного стирания. Даже если файлу не назначен класс защиты данных, этот файл все равно хранится в зашифрованном виде (как и все данные на iPhone, iPad и Apple Vision Pro).
Этот вариант не поддерживается в macOS.
Примечание. На устройствах с macOS для томов, которые не используются для загрузки операционной системы, все классы защиты данных доступны, только пока подключен том. По умолчанию используется класс защиты данных NSFileProtectionCompleteUntilFirstUserAuthentication. Функция ключа диапазона доступна как в Rosetta 2, так и в собственных приложениях.