Secure Enclave — архітектура та принцип роботи захищеного співпроцесора

Автор: IT Sectr Опубліковано: 2026-03-14 Час читання: 10 хв

Secure Enclave — це виділений апаратний співпроцесор у пристроях Apple, що реалізує ізольоване безпечне середовище для обробки криптографічних операцій та зберігання конфіденційних даних. Secure Enclave працює на власному мікропроцесорі з мікроядром L4 і не має прямого доступу до основної пам'яті чи периферії пристрою. Згідно з Apple Platform Security Guide, Secure Enclave використовує апаратний генератор випадкових чисел TRNG та спеціалізований AES-двигун для забезпечення криптографічних операцій на рівні чипа.

Головне

  • Secure Enclave — ізольований співпроцесор Apple з власним процесором, пам'яттю та AES-двигуном
  • Touch ID та Face ID використовують Secure Enclave для безпечного зберігання та порівняння біометричних шаблонів
  • Криптографічні ключі генеруються всередині Secure Enclave і ніколи не залишають його незашифрованими
  • Апаратна ізоляція гарантує, що навіть зламане ядро iOS не має доступу до даних Secure Enclave
  • SOC містить виділений Secure Enclave починаючи з чипа A7 (iPhone 5S, 2013), окремий починаючи з A9

Що таке Secure Enclave?

Secure Enclave (SEP — Secure Enclave Processor) — це виділений 32-бітний RISC-процесор (ARM Cortex-A7/A8 на ранніх чипах, власне мікроядро L4), інтегрований у SoC Apple. Він виконує функції захищеного співпроцесора для всіх криптографічних та біометричних операцій, що потребують апаратної ізоляції.

Історія та покоління

Вперше Secure Enclave з'явився в чипі A7 (iPhone 5S, 2013) разом з Touch ID. У A7–A8 Secure Enclave реалізований як частина процесора. Починаючи з A9 (iPhone 6S, 2015), Secure Enclave використовує окрему область кристала з незалежним живленням і тактуванням. З A12 (2018) Secure Enclave отримав власний True Random Number Generator (TRNG) та апаратний прискорювач Ed25519.

Кожен Secure Enclave має унікальний ідентифікатор (UID), вшитий на етапі виробництва чипа. UID використовується як кореневий ключ для шифрування всіх інших ключів. Навіть Apple не може витягти або відновити цей ідентифікатор — він доступний тільки всередині Secure Enclave.

Навіщо потрібна ізоляція

Сучасні мобільні ОС складні та містять мільйони рядків коду, що робить їх вразливими до експлойтів. Навіть якщо зловмисник отримує повний контроль над iOS (kernel-level), Secure Enclave залишається недоступним — він фізично відокремлений від основного SoC і не приймає команди безпосередньо. Тільки зашифровані запити через захищений канал можуть взаємодіяти з SEP.

За даними Apple Platform Security (2025), не було задокументовано жодного успішного вилучення даних із Secure Enclave на заблокованому пристрої за діючих апаратних обмежень.

Як працює Secure Enclave?

Secure Enclave функціонує як автономний процесор: після завантаження пристрою він ініціалізується власним завантажувачем (SEP ROM), перевіряє цілісність мікроядра L4, а потім переходить у режим очікування запитів від Application Processor (AP) через захищену поштову скриньку.

Канал зв'язку AP-SEP

Обмін між процессором додатків (AP) та Secure Enclave відбувається через захищену поштову скриньку з шифруванням на спільному сесійному ключі. AP надсилає зашифрований запит, SEP розшифровує його, виконує операцію (підпис, розшифрування, генерацію ключа) та повертає результат у зашифрованому вигляді. SEP ніколи не приймає незашифровані команди.

Перед встановленням сесійного ключа AP та SEP виконують протокол аутентифікації, що використовує груповий ключ (Group Key), вшитий у SEP ROM та перевірений сертифікатом Apple. Цей механізм гарантує, що тільки справжній пристрій Apple може взаємодіяти з даним Secure Enclave.

Генерація та захист ключів

Всі криптографічні ключі генеруються всередині Secure Enclave з використанням апаратного TRNG. Кожен ключ пов'язаний з UID пристрою і не може бути експортований. При зверненні до ключа AP вказує його хендл (як у Keychain), а SEP виконує операцію, не розкриваючи сам ключ.

objective-c
// Генерація ключа ECDSA всередині Secure Enclave
@interface AppDelegate ()
- (SecKeyRef)generateSEKey;
@end

- (SecKeyRef)generateSEKey {
    let attributes: [String: Any] = [
        kSecAttrKeyType as String: kSecAttrKeyTypeECSECPrimeRandom,
        kSecAttrKeySizeInBits as String: 256,
        kSecAttrTokenID as String: kSecAttrTokenIDSecureEnclave,
        kSecPrivateKeyAttrs as String: [
            kSecAttrIsPermanent as String: true,
            kSecAttrLabel as String: "com.app.key"
        ]
    ]
    var error: Unmanaged<CFError?>?
    return SecKeyCreateRandomKey(attributes as CFDictionary, &error)
}

Архітектура та компоненти

Secure Enclave — не просто програмний модуль, а повноцінний автономний комп'ютер на кристалі. Він містить власний процесор, оперативну пам'ять, ПЗП, енергонезалежну пам'ять та спеціалізовані криптографічні прискорювачі.

Процесор та пам'ять

Процесор Secure Enclave — 32-бітний ARM Cortex-A7 (A7-A10) або власне мікроядро L4 (A12+). Оперативна пам'ять виділена статично (SRAM) і недоступна ззовні. ПЗП (SEP ROM) містить завантажувач та груповий ключ. Енергонезалежна пам'ять зберігає UID, кореневі сертифікати та постійні ключі.

Розмір SRAM Secure Enclave обмежений (16-64 КБ залежно від покоління). Це архітектурне обмеження: всередині SEP виконуються тільки криптографічні операції та порівняння біометричних шаблонів. Всі інші дані передаються через зашифрований канал в основну пам'ять AP.

Криптографічні прискорювачі

Secure Enclave містить виділені апаратні блоки: AES-двигун (апаратне шифрування/розшифрування), P256-прискорювач (ECDSA, ECDH), модуль SHA-256/SHA-512, TRNG (True Random Number Generator на основі кільцевих осциляторів). Це забезпечує високу продуктивність (гігабітні швидкості AES) при мінімальному енергоспоживанні.

КомпонентФункціяПродуктивність
AES EngineАпаратне шифрування AES-2563.5 GB/s (A12+)
P256 AcceleratorECDSA підпис/верифікація15000 оп/с
TRNGГенерація випадкових чисел1 Mbit/s
SHA-256Хешування даних2 GB/s
UID (eFuse)Унікальний ідентифікатор чипа256 біт

Груповий ключ та сертифікати

Кожна партія чипів Secure Enclave отримує груповий ключ (Group Key), вшитий у SEP ROM. Цей ключ використовується для аутентифікації SEP перед AP та для встановлення шифрованого каналу. Apple випускає сертифікати, що підписують групові ключі, що дозволяє перевіряти справжність SEP на рівні прошивки.

Взаємодія з додатками

Розробники iOS не звертаються до Secure Enclave безпосередньо. Взаємодія відбувається через високорівневі API: LocalAuthentication (Touch ID, Face ID), Keychain Services (зберігання ключів у SEP), CryptoKit (криптографічні операції з SEP-ключами).

CryptoKit та Secure Enclave

Фреймворк CryptoKit (iOS 13+) надає прямий доступ до Secure Enclave для генерації ECDSA-ключів та підпису даних. Ключі, створені з прапорцем secureEnclaveKey, фізично розташовуються всередині SEP. При підписанні дані передаються через захищений канал, операція виконується в SEP, підпис повертається додатку.

swift
import CryptoKit
import LocalAuthentication

func signWithSecureEnclave() throws -> Data {
    let context = LAContext()
    let accessControl = try SecAccessControl(
        protection: kSecAttrAccessibleWhenUnlockedThisDeviceOnly,
        flags: .userPresence
    )

    let key = try SecureEnclave.P256.SigningKey(
        accessControl: accessControl
    )

    let dataToSign = "authenticate".data(using: .utf8)!
    return try key.signature(for: dataToSign)
}

Keychain та Secure Enclave

Keychain Services може використовувати Secure Enclave для зберігання криптографічних ключів. Атрибут kSecAttrTokenID = kSecAttrTokenIDSecureEnclave вказує системі, що ключ повинен бути створений та зберігатися всередині SEP. Ключі в SEP завжди мають тип EC (secp256r1/P-256), оскільки Secure Enclave не підтримує RSA.

Secure Enclave та біометрія

Touch ID та Face ID — ключові користувацькі функції, реалізовані через Secure Enclave. SEP не тільки зберігає біометричні шаблони, але й виконує їх порівняння з введеними даними, що унеможливлює перехоплення зображення відбитка пальця або обличчя.

Зберігання біометричних даних

При реєстрації відбитка пальця або обличчя сенсор передає зображення в Secure Enclave, де воно перетворюється на математичний шаблон (не зображення!) та зберігається в зашифрованій пам'яті SEP. Вихідне зображення знищується. Шаблон неможливо витягти назовні — SEP може тільки порівняти новий шаблон із збереженими.

Secure Enclave зберігає до 5 відбитків пальців або облич. Всі шаблони захищені UID пристрою. При перезавантаженні пристрою SEP блокує доступ до шаблонів до першого введення коду (код блокування, не біометрія).

Процес аутентифікації

Коли користувач прикладає палець до Touch ID, сенсор знімає зображення та (через драйвер у iOS) передає його в Secure Enclave по захищеному каналу. SEP порівнює шаблон із збереженими. При збігу SEP повертає AP успішний статус та ефемерний ключ для розблокування Keychain. Невдалі спроби відстежуються, і після певної кількості (налаштовується) SEP блокує всі біометричні запити до введення коду.

swift
import LocalAuthentication

func authenticateUser() {
    let context = LAContext()
    var error: NSError?

    guard context.canEvaluatePolicy(
        .deviceOwnerAuthenticationWithBiometrics,
        error: &error
    ) else { return }

    context.evaluatePolicy(
        .deviceOwnerAuthenticationWithBiometrics,
        localizedReason: "Підтвердьте особу"
    ) { success, error in
        if success {
            // SEP підтвердив збіг біометрії
        }
    }
}

Безпека при втраті пристрою

При втраті пристрою біометричні дані захищені на кількох рівнях: шаблони зашифровані UID (нечитабельні поза SEP), SEP вимагає код пристрою при кожному перезавантаженні, після 48 годин без дії, після 5 невдалих біометричних спроб. Режим Lost Mode через Find My додатково блокує SEP.

Часті питання

Чи можна отримати доступ до даних Secure Enclave?

На заблокованому пристрої — ні. Secure Enclave спроектований так, що дані недоступні без аутентифікації користувача. Відомі атаки (checkm8 на A5-A11) не можуть витягти дані з SEP — вони компрометують AP, але не Secure Enclave.

Які алгоритми підтримує Secure Enclave?

ECDSA (secp256r1/P-256) — для підпису та верифікації. ECDH — для узгодження ключів. AES-256 — для симетричного шифрування. SHA-256 — для хешування. RSA не підтримується. Всі операції виконуються апаратно.

Чи відрізняється Secure Enclave на Mac з Apple Silicon?

В Apple Silicon (M1, M2, M3) Secure Enclave реалізований аналогічно A-чипам, але зі збільшеними ресурсами. Підтримує більше одночасних ключів, швидші P256-операції та має розширений набір сценаріїв використання (FileVault, автозаповнення, Safari).

Що таке UID Secure Enclave?

UID (Unique ID) — це 256-бітний випадковий ідентифікатор, вшитий в Secure Enclave при виробництві чипа. UID використовується як кореневий ключ для шифрування всіх інших ключів на пристрої. Він недоступний для читання жодним компонентом, включаючи сам SEP.

Як скинути Secure Enclave?

Повний скид відбувається при відновленні прошивки через Recovery Mode (DFU). Secure Enclave перестворює ієрархію ключів. При цьому всі дані Keychain та біометричні шаблони видаляються без можливості відновлення — це незворотний процес.

Підсумки

  • Secure Enclave — ізольований апаратний співпроцесор Apple з власним процесором, пам'яттю та криптографічними прискорювачами
  • Біометричні шаблони Touch ID та Face ID зберігаються та обробляються виключно всередині SEP, AP не має до них доступу
  • Криптографічні ключі генеруються Secure Enclave за допомогою апаратного TRNG і не можуть бути експортовані
  • CryptoKit та Keychain дозволяють додаткам використовувати Secure Enclave через kSecAttrTokenIDSecureEnclave
  • SEP включає AES-двигун (3.5 GB/s), P256-прискорювач (15000 підписів/с) та виділений блок SHA-256
  • Апаратна ізоляція гарантує захист даних навіть при повній компрометації ядра iOS
  • Використовуйте Secure Enclave через CryptoKit для зберігання приватних ключів підпису в iOS-додатках

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також