
Secure Enclave
Secure Enclave представляет собой выделенную защищенную подсистему новейших версий iPhone, iPad, Mac, Apple TV, Apple Watch и HomePod.
Обзор
Secure Enclave — это выделенная защищенная подсистема, встроенная в системы на кристалле Apple. Подсистема Secure Enclave изолирована от основного процессора для обеспечения дополнительного уровня защиты и предназначена для защиты конфиденциальных данных пользователя даже в случае взлома ядра процессора приложений. Эта подсистема построена по тому же принципу, что и вся система на кристалле: загрузочное ПЗУ задает аппаратный корень доверия, модуль AES отвечает за эффективные и безопасные криптографические операции, а память защищена. Несмотря на то, что Secure Enclave не имеет собственного хранилища, Secure Enclave использует механизм безопасного хранения информации в подключенном хранилище отдельно от флеш-памяти NAND, используемой процессором приложений и операционной системой.

Secure Enclave представляет собой аппаратный компонент большинства версий iPhone, iPad, Mac, Apple TV, Apple Watch и HomePod, а именно:
iPhone 5s или новее;
iPad Air или новее;
компьютеры Mac с чипом Apple;
компьютеры MacBook Pro с Touch Bar (2016 г. и 2017 г.) и чипом Apple T1;
компьютеры Mac с процессором Intel и чипом безопасности Apple T2;
Apple TV HD или новее;
Apple Watch Series 1 или новее;
HomePod и HomePod mini.
Сопроцессор Secure Enclave
Сопроцессор Secure Enclave обеспечивает основную вычислительную мощность для Secure Enclave. В целях надежной изоляции сопроцессор Secure Enclave используется исключительно системой Secure Enclave. Это позволяет предотвратить атаки по сторонним каналам с применением вредоносного программного обеспечения, которое использует то же ядро выполнения, что и атакуемое целевое программное обеспечение.
Сопроцессор Secure Enclave использует версию микроядра L4, доработанную компанией Apple. Оно позволяет ему эффективно работать на более низкой тактовой частоте, что позволяет защитить его от атак, направленных на изменение тактовой частоты и питания процессора. Начиная с A11 и S4 сопроцессор Secure Enclave включает модуль защиты памяти и зашифрованную память с функциями антиповтора, безопасную загрузку, отдельный генератор случайных чисел и собственный модуль AES.
Модуль защиты памяти
Secure Enclave работает в выделенной области памяти DRAM устройства. Защищенная память Secure Enclave изолирована от процессора приложений с помощью нескольких уровней защиты.
При запуске устройства загрузочное ПЗУ Secure Enclave генерирует случайный кратковременный ключ защиты памяти для модуля защиты памяти. Каждый раз, когда Secure Enclave выполняет запись в свою выделенную область памяти, модуль защиты памяти шифрует соответствующий блок памяти с помощью шифрования AES в режиме Mac XEX (xor-encrypt-xor), а также вычисляет тег аутентификации кода аутентификации сообщения на основе шифра (CMAC) для памяти. Модуль защиты памяти хранит тег аутентификации вместе с зашифрованной памятью. Когда Secure Enclave выполняет чтение из памяти, модуль защиты памяти проверяет тег аутентификации. В случае совпадения тега модуль защиты памяти расшифровывает блок памяти. Если тег не совпадает, модуль защиты памяти сообщает сопроцессору Secure Enclave об ошибке. После ошибки аутентификации памяти система Secure Enclave останавливает прием запросов до перезагрузки системы.
Начиная с систем на кристалле с процессорами Apple A11 и S4, модуль защиты памяти обеспечивает защиту памяти Secure Enclave с помощью механизма антиповтора. Для предотвращения повторной отправки критически важных данных безопасности модуль защиты памяти хранит уникальное одноразовое число, называемое значением функции антиповтора, для блока памяти вместе с тегом аутентификации. Значение функции антиповтора используется в качестве дополнительной поправки для тега аутентификации CMAC. Значения функции антиповтора для всех блоков памяти защищены с помощью дерева целостности, корень которого находится в выделенной памяти SRAM в Secure Enclave. При выполнении операций записи модуль защиты памяти обновляет значение функции антиповтора и каждый уровень дерева целостности до уровня памяти SRAM. При выполнении операций чтения модуль защиты памяти проверяет значение функции антиповтора и каждый уровень дерева целостности до уровня памяти SRAM. Несоответствия значений функции антиповтора обрабатываются так же, как несоответствия тега аутентификации.
В системах на кристалле Apple A14, M1 или новее модуль защиты памяти поддерживает два динамических ключа защиты памяти. Первый используется для данных, к которым имеет доступ только Secure Enclave, а второй используется для данных, к которым также имеет доступ защищенный нейронный модуль.
Модуль защиты памяти является встроенным и прозрачным для Secure Enclave. Secure Enclave выполняет операции чтения из памяти и записи в память так, как если бы это была обычная незашифрованная память DRAM, тогда как внешнему наблюдателю вне Secure Enclave доступна только зашифрованная и аутентифицированная версия памяти. За счет этого обеспечивается надежная защита памяти без ущерба производительности или сложности программного обеспечения.
Загрузочное ПЗУ Secure Enclave
В состав Secure Enclave входит специальное загрузочное ПЗУ Secure Enclave. Аналогично загрузочному ПЗУ процессора приложений, загрузочное ПЗУ Secure Enclave представляет собой постоянный код, который задает аппаратный корень доверия для Secure Enclave.
При запуске системы загрузчик iBoot назначает Secure Enclave выделенную область памяти. Перед использованием памяти загрузочное ПЗУ Secure Enclave инициализирует модуль защиты памяти для обеспечения криптографической защиты защищенной области памяти Secure Enclave.
Затем процессор приложений отправляет в загрузочное ПЗУ Secure Enclave образ sepOS. После копирования образа sepOS в защищенную память Secure Enclave загрузочное ПЗУ Secure Enclave проверяет криптографический хеш и подпись образа для подтверждения того, что указанное программное обеспечение sepOS разрешено запускать на этом устройстве. Если образ sepOS имеет соответствующую подпись для запуска на устройстве, загрузочное ПЗУ Secure Enclave передает управление программному обеспечению sepOS. Загрузочное ПЗУ Secure Enclave разработано таким образом, чтобы предотвратить дальнейшее использование Secure Enclave до следующего сброса чипа, если подпись недействительна.
В системах на кристалле Apple A10 и новее загрузочное ПЗУ Secure Enclave блокирует хеш sepOS в предназначенном для этого реестре. Акселератор открытого ключа использует этот хеш для ключей привязки к операционной системе.
Монитор загрузки Secure Enclave
В системах на кристалле Apple A13 и новее в Secure Enclave встроен Монитор загрузки, предназначенный для сохранения высокого уровня целостности хеша загруженного программного обеспечения sepOS.
При запуске системы конфигурация защиты целостности системного сопроцессора (SCIP) Secure Enclave помогает предотвратить запуск сопроцессором Secure Enclave любого кода, который отличается от имеющегося в загрузочном ПЗУ Secure Enclave. Монитор загрузки помогает предотвратить прямое изменение сопроцессором Secure Enclave конфигурации SCIP. Чтобы сделать загруженное программное обеспечение sepOS исполняемым, загрузочное ПЗУ Secure Enclave отправляет Монитору загрузки запрос с указанием адреса и размера загруженного программного обеспечения sepOS. После получения запроса Монитор загрузки сбрасывает сопроцессор Secure Enclave, хеширует загруженное ПО sepOS, обновляет настройки SCIP, чтобы разрешить выполнение загруженного ПО sepOS, а затем запускает выполнение в новом загруженном коде. По мере загрузки системы этот же процесс применяется к новому исполняемому коду. Каждый раз Монитор загрузки обновляет выполняемый хеш процесса загрузки. Монитор загрузки также включает в выполняемый хеш критически важные параметры безопасности.
По завершении загрузки Монитор загрузки финализирует выполняемый хеш и отправляет его в акселератор открытого ключа, который будет использовать этот хеш для ключей привязки к операционной системе. Этот процесс разработан для того, чтобы привязку ключей к операционной системе не удалось обойти даже в случае наличия уязвимости в загрузочном ПЗУ Secure Enclave.
Генератор истинных случайных чисел
Генератор истинных случайных чисел (TRNG) используется для генерирования защищенных случайных данных. Secure Enclave использует TRNG каждый раз, когда требуется сгенерировать случайный криптографический ключ, начальный бит случайного ключа или другой энтропийно закодированный элемент. В основе TRNG лежат несколько кольцевых генераторов, сигнал которых обрабатывается генератором CTR_DRBG (алгоритм на основе блочных шифров в режиме счетчика).
Корневые криптографические ключи
Secure Enclave содержит корневой криптографический ключ уникального идентификатора (UID). UID является уникальным для каждого отдельного устройства и не связан с каким-либо другим идентификатором на устройстве.
Случайно сгенерированные UID вшиваются в систему на кристалле во время производства. Начиная с систем на кристалле A9, UID генерируется с помощью TRNG Secure Enclave во время производства и записывается на плавких перемычках с помощью программного процесса, исполняемого полностью в Secure Enclave. Этот процесс делает UID невидимым за пределами устройства во время производства, поэтому доступ к нему и хранению в нем не будут иметь ни Apple, ни ее поставщики.
sepOS использует UID для защиты секретов устройства. UID обеспечивает возможность криптографической привязки данных к конкретному устройству. Например, UID входит в иерархию ключей, используемых для защиты файловой системы, поэтому при физическом перемещении памяти SSD из одного устройства в другое файлы становятся недоступны. В число других защищенных секретных данных конкретных устройств входят данные Face ID или Touch ID. На Mac этот уровень шифрования используется только для полностью внутреннего хранилища, связанного с модулем AES. Например, внешние устройства хранения, подключенные через USB, и хранилища на основе PCIe для Mac Pro 2019 г. не зашифровываются этим способом.
В Secure Enclave также имеется идентификатор группы устройств (GID), который является общим для всех устройств, где используется определенная система на кристалле (например, на всех устройствах с процессором Apple A15 используется одинаковый GID).
Идентификаторы UID и GID недоступны через Joint Test Action Group (JTAG) и другие интерфейсы отладки.
Модуль AES Secure Enclave
Модуль AES Secure Enclave представляет собой аппаратный блок, который выполняет симметричное шифрование на основе шифра AES. Модуль AES исключает утечку информации посредством анализа тактовой частоты и статического анализа питания (SPA). В системах на кристалле A9 и новее модуль AES также содержит компоненты противодействия динамическому анализу питания (DPA).
Модуль AES поддерживает аппаратные и программные ключи. Аппаратные ключи получаются из идентификаторов UID или GID Secure Enclave. Эти ключи остаются в модуле AES и не видны даже программному обеспечению sepOS. Несмотря на то, что программное обеспечение может запросить операции шифрования и расшифровки с использованием аппаратных ключей, оно не может извлечь сами ключи.
В системах на кристалле Apple A10 и новее модуль AES содержит блокируемые начальные биты, которые изменяют ключи, полученные из идентификаторов UID или GID. Таким образом обеспечивается условный доступ к данным в зависимости от режима работы устройства. Например, блокируемые начальные биты используются для того, чтобы закрыть доступ к данным, защищенным паролем, при загрузке в режиме обновления прошивки устройства (DFU). Подробнее см. в разделе Код-пароли и пароли.
Модуль AES
В каждом устройстве Apple с сопроцессором Secure Enclave имеется специализированный криптографический модуль AES256 («модуль AES»), который встроен непосредственно в канал прямого доступа к памяти (DMA) между энергонезависимой флеш-памятью NAND и основной системной памятью для повышения эффективности шифрования файлов. На устройствах с процессором A9 или более новым процессором серии A подсистема флеш-памяти находится на изолированной шине, которая получает доступ к памяти с пользовательскими данными только через криптографический модуль DMA.
Во время загрузки sepOS с помощью TRNG генерирует случайный кратковременный ключ для упаковки ключа. Secure Enclave передает этот ключ в модуль AES по выделенным проводным каналам. Эта мера направлена на то, чтобы предотвратить доступ к нему любого программного обеспечения вне Secure Enclave. Затем sepOS может использовать этот динамический ключ для упаковки, чтобы упаковать ключи файлов для использования драйвером файловой системы процессора приложений. Когда драйвер файловой системы выполняет чтение файла или запись в него, он отправляет упакованный ключ в модуль AES, который, в свою очередь, распаковывает его. Модуль AES никогда не раскрывает дешифрованный ключ программному обеспечению.
Примечание. Модуль AES отделен от Secure Enclave и модуля AES подсистемы Secure Enclave, но его работа тесно связана с Secure Enclave, как показано далее.

Акселератор открытого ключа
Акселератор открытого ключа (PKA) — это аппаратный блок, который выполняет асимметричные криптографические операции. PKA поддерживает алгоритмы подписи и шифрования RSA и ECC (криптография на основе эллиптических кривых). PKA противостоит утечкам информации из-за атак на основе анализа тактовой частоты и атак по сторонним каналам, таких как SPA и DPA.
PKA поддерживает программные и аппаратные ключи. Аппаратные ключи получаются из идентификаторов UID или GID Secure Enclave. Эти ключи остаются в PKA и не видны даже программному обеспечению sepOS.
Начиная с систем на кристалле с процессорами Apple A13, математическая правильность реализации шифрования PKA является доказанной благодаря применению методов формальной проверки.
В системах на кристалле Apple A10 и новее PKA поддерживает ключи привязки к операционной системе. Эта технология называется защитой запечатыванием ключей (SKP). Такие ключи генерируются на основе сочетания UID устройства и хеша программного обеспечения sepOS, которое выполняется на устройстве. В системах на кристалле Apple A13 и новее этот хеш предоставляется загрузочным ПЗУ Secure Enclave или Монитором загрузки Secure Enclave. Ключи привязки к операционной системе также используются для проверки версии sepOS при отправке запросов к определенным службам Apple и для повышения уровня защиты данных, защищенных код-паролем, помогая предотвратить доступ к данным ключей, если в систему внесены критически важные изменения без авторизации пользователя.
Защищенное энергонезависимое хранилище
Secure Enclave оснащается выделенным безопасным энергонезависимым устройством хранения. Для подключения защищенного энергонезависимого хранилища к Secure Enclave используется выделенная шина I2C, поэтому доступ к хранилищу имеет только Secure Enclave. Корни всех ключей шифрования данных пользователей энтропийно закодированы и хранятся в энергонезависимом хранилище Secure Enclave.
На устройствах с системами на кристалле A12, S4 и новее для хранения энтропийно закодированных элементов сопроцессор Secure Enclave объединяется в пару с компонентом защищенного хранилища. Сам компонент защищенного хранилища содержит неизменяемый код ПЗУ, аппаратный генератор случайных чисел, уникальные криптографические ключи устройств, криптографические модули и функцию обнаружения физического вмешательства. Для взаимодействия друг с другом Secure Enclave и компонент защищенного хранилища используют зашифрованный и аутентифицированный протокол, предоставляющий эксклюзивный доступ к энтропийно закодированным элементам.
Устройства, которые выпущены впервые осенью 2020 года или позже, оснащены компонентом защищенного хранилища второго поколения. В компонент защищенного хранилища второго поколения добавлены защищенные хранилища счетчиков. В каждом защищенном хранилище счетчиков хранятся 128-битное случайное значение («соль»), 128-битное проверочное значение код-пароля, 8-битный счетчик и 8-битное значение максимального количества попыток. Для доступа к защищенным хранилищам счетчиков используется зашифрованный и аутентифицированный протокол.
Защищенные хранилища счетчиков содержат энтропийно закодированное значение, необходимое для разблокирования пользовательских данных, защищенных код-паролем. Для доступа к этим пользовательским данным требуется объединенный в пару сопроцессор Secure Enclave, который получает правильное энтропийно закодированное значение на основе код-пароля пользователя и UID Secure Enclave. Код-пароль пользователя нельзя узнать путем многократных попыток разблокирования, совершаемых из любого источника, отличного от сопроцессора Secure Enclave, который объединен в пару. Если превышено количество попыток ввода код-пароля (например, 10 попыток на iPhone), компонент защищенного хранилища безвозвратно стирает данные, защищенные код-паролем.
Для создания защищенного хранилища счетчика сопроцессор Secure Enclave отправляет компоненту защищенного хранилища энтропийно закодированное значение код-пароля и значение максимального количества попыток. Компонент защищенного хранилища генерирует случайное значение («соль»), используя собственный генератор случайных чисел. Затем он получает проверочное значение код-пароля и энтропийно закодированное значение защищенного хранилища из предоставленного энтропийно закодированного значения код-пароля, уникального криптографического ключа компонента защищенного хранилища и случайного значения («соль»). Компонент защищенного хранилища инициализирует защищенное хранилище счетчика с количеством «0», предоставленным значением максимального количества попыток, полученным проверочным значением код-пароля и случайным значением («соль»). Затем компонент защищенного хранилища возвращает в Secure Enclave сгенерированное энтропийно закодированное значение защищенного хранилища.
Для того чтобы позднее извлечь энтропийно закодированное значение защищенного хранилища из защищенного хранилища счетчика, Secure Enclave отправляет компоненту защищенного хранилища энтропийно закодированное значение код-пароля. Сначала компонент защищенного хранилища увеличивает значение счетчика для защищенного хранилища. Если увеличенное значение счетчика превышает значение максимального количества попыток, компонент защищенного хранилища полностью стирает защищенное хранилище счетчика. Если максимальное количество попыток не достигнуто, компонент защищенного хранилища пытается получить проверочное значение код-пароля и энтропийно закодированное значение защищенного хранилища с помощью того же алгоритма, который использовался для создания защищенного хранилища счетчика. Если полученное проверочное значение код-пароля совпадает с сохраненным проверочным значением код-пароля, компонент защищенного хранилища возвращает энтропийно закодированное значение защищенного хранилища в Secure Enclave и сбрасывает счетчик до 0.
Корни ключей, которые используются для доступа к защищенным паролем данным, энтропийно закодированы и хранятся в защищенных хранилищах счетчиков. Подробнее см. в разделе Обзор защиты данных.
Защищенное энергонезависимое хранилище используется для всех служб антиповтора в Secure Enclave. Службы антиповтора в Secure Enclave используются для аннуляции данных в случае событий, которые отмечают границы антиповтора, включая следующие ситуации (но не ограничиваясь ими):
изменение код-пароля;
включение или выключение Face ID или Touch ID;
добавление или удаление лица для Face ID или отпечатка пальца для Touch ID;
сброс Face ID или Touch ID;
добавление или удаление карты Apple Pay;
стирание всего контента и настроек.
В архитектурах без компонента защищенного хранилища для предоставления безопасного хранилища сопроцессору Secure Enclave используется EEPROM (электрически стираемая программируемая постоянная память). Аналогично компонентам защищенного хранилища память EEPROM подключается к Secure Enclave и доступна только из него, однако она не содержит выделенных аппаратных функций безопасности, не гарантирует эксклюзивный доступ к энтропийно закодированным элементам (за исключением характеристик физического подключения) и не предоставляет функций защищенного хранилища счетчика.
Защищенный нейронный модуль
На устройствах с Face ID (не с Touch ID) защищенный нейронный модуль преобразует двумерные изображения и карты глубины в математические представления лица пользователя.
В системах на кристалле с процессорами Apple с A11 по A13 защищенный нейронный модуль встроен в Secure Enclave. Для обеспечения высокой производительности защищенный нейронный модуль использует прямой доступ к памяти (DMA). Модуль управления памятью ввода-вывода (IOMMU) в элементе управления ядром sepOS ограничивает возможность прямого доступа только разрешенными областями памяти.
Начиная с чипов A14, M1 и новее, защищенная система Neural Engine реализуется как безопасный режим в системе Neural Engine процессора приложений. Выделенный аппаратный контроллер безопасности переключается между задачами процессора приложений и Secure Enclave, сбрасывая состояние нейронного модуля при каждой транзакции для защиты данных Face ID. Выделенный модуль выполняет шифрование памяти, аутентификацию и управление доступом. В то же время он использует отдельный криптографический ключ и диапазон памяти для ограничения возможностей доступа защищенного нейронного модуля только разрешенными областями памяти.
Мониторы питания и тактовой частоты
Все электронные компоненты разработаны для работы в ограниченном диапазоне напряжения и частоты электрического тока. Выход за пределы рабочего диапазона может привести к сбоям в работе электронных компонентов и последующему обходу средств обеспечения безопасности. Secure Enclave оснащается микросхемами для контроля напряжения. Эти микросхемы помогают сохранять характеристики электропитания в пределах рабочего диапазона. Рабочий диапазон таких микросхем намного больше, чем у остальных компонентов Secure Enclave. При обнаружении запрещенного режима работы тактовые генераторы Secure Enclave автоматически останавливаются и не перезапускаются до следующего сброса системы на кристалле.
Обзор функций Secure Enclave
Примечание. Устройства с чипами A12, A13, S4 и S5, впервые выпущенные осенью 2020 года, оснащаются компонентом защищенного хранилища второго поколения, тогда как более ранние устройства на основе этих систем на кристалле оснащены компонентом защищенного хранилища первого поколения.
Система на кристалле | Модуль защиты памяти | Защищенное хранилище | Модуль AES | PKA |
---|---|---|---|---|
A8 | Шифрование и аутентификация | EEPROM | Да | Нет |
A9 | Шифрование и аутентификация | EEPROM | Защита DPA | Да |
A10 | Шифрование и аутентификация | EEPROM | Защита DPA и блокируемые начальные биты | Ключи привязки к операционной системе |
A11 | Шифрование, аутентификация и механизм антиповтора | EEPROM | Защита DPA и блокируемые начальные биты | Ключи привязки к операционной системе |
A12 (устройства Apple, выпущенные до осени 2020 г.) | Шифрование, аутентификация и механизм антиповтора | Компонент защищенного хранилища 1‑го поколения | Защита DPA и блокируемые начальные биты | Ключи привязки к операционной системе |
A12 (устройства Apple, выпущенные после осени 2020 г.) | Шифрование, аутентификация и механизм антиповтора | Компонент защищенного хранилища 2‑го поколения | Защита DPA и блокируемые начальные биты | Ключи привязки к операционной системе |
A13 (устройства Apple, выпущенные до осени 2020 г.) | Шифрование, аутентификация и механизм антиповтора | Компонент защищенного хранилища 1‑го поколения | Защита DPA и блокируемые начальные биты | Ключи привязки к операционной системе и монитор загрузки |
A13 (устройства Apple, выпущенные после осени 2020 г.) | Шифрование, аутентификация и механизм антиповтора | Компонент защищенного хранилища 2‑го поколения | Защита DPA и блокируемые начальные биты | Ключи привязки к операционной системе и монитор загрузки |
A14–A17 | Шифрование, аутентификация и механизм антиповтора | Компонент защищенного хранилища 2‑го поколения | Защита DPA и блокируемые начальные биты | Ключи привязки к операционной системе и монитор загрузки |
S3 | Шифрование и аутентификация | EEPROM | Защита DPA и блокируемые начальные биты | Да |
S4 | Шифрование, аутентификация и механизм антиповтора | Компонент защищенного хранилища 1‑го поколения | Защита DPA и блокируемые начальные биты | Ключи привязки к операционной системе |
S5 (устройства Apple, выпущенные до осени 2020 г.) | Шифрование, аутентификация и механизм антиповтора | Компонент защищенного хранилища 1‑го поколения | Защита DPA и блокируемые начальные биты | Ключи привязки к операционной системе |
S5 (устройства Apple, выпущенные после осени 2020 г.) | Шифрование, аутентификация и механизм антиповтора | Компонент защищенного хранилища 2‑го поколения | Защита DPA и блокируемые начальные биты | Ключи привязки к операционной системе |
S6–S9 | Шифрование, аутентификация и механизм антиповтора | Компонент защищенного хранилища 2‑го поколения | Защита DPA и блокируемые начальные биты | Ключи привязки к операционной системе |
T2 | Шифрование и аутентификация | EEPROM | Защита DPA и блокируемые начальные биты | Ключи привязки к операционной системе |
M1, M2, M3 | Шифрование, аутентификация и механизм антиповтора | Компонент защищенного хранилища 2‑го поколения | Защита DPA и блокируемые начальные биты | Ключи привязки к операционной системе и монитор загрузки |