Secure Enclave — je vyhrazený hardwarový koprocesor v zařízeních Apple, který implementuje izolované bezpečné prostředí pro zpracování kryptografických operací a ukládání důvěrných dat. Secure Enclave pracuje na vlastním mikroprocesoru s mikrojádrem L4 a nemá přímý přístup k hlavní paměti nebo periferiím zařízení. Podle Apple Platform Security Guide používá Secure Enclave hardwarový generátor náhodných čísel TRNG a specializovaný engine AES pro zajištění kryptografických operací na úrovni čipu.
Hlavní body
Secure Enclave (SEP — Secure Enclave Processor) — je vyhrazený 32bitový RISC procesor (ARM Cortex-A7/A8 na raných čipech, vlastní mikrojádro L4 na novějších), integrovaný do SoC Apple. Plní funkci zabezpečeného koprocesoru pro všechny kryptografické a biometrické operace vyžadující hardwarovou izolaci.
Secure Enclave se poprvé objevil v čipu A7 (iPhone 5S, 2013) spolu s Touch ID. V A7–A8 byl Secure Enclave implementován jako součást procesoru. Od A9 (iPhone 6S, 2015) používá Secure Enclave samostatnou oblast krystalu s nezávislým napájením a taktováním. Od A12 (2018) získal Secure Enclave vlastní True Random Number Generator (TRNG) a hardwarový akcelerátor Ed25519.
Každá Secure Enclave má unikátní identifikátor (UID) vložený během výroby čipu. UID se používá jako kořenový klíč pro šifrování všech ostatních klíčů. Dokonce ani Apple nemůže tento identifikátor extrahovat nebo obnovit — je dostupný pouze uvnitř Secure Enclave.
Moderní mobilní operační systémy jsou složité a obsahují miliony řádků kódu, což je činí zranitelnými vůči exploitům. I když útočník získá plnou kontrolu nad iOS (na úrovni jádra), Secure Enclave zůstává nedostupný — je fyzicky oddělen od hlavního SoC a nepřijímá přímé příkazy. Pouze šifrované požadavky přes zabezpečený kanál mohou komunikovat s SEP.
Podle údajů Apple Platform Security (2025) nebyl zdokumentován žádný úspěšný případ extrakce dat z Secure Enclave na uzamčeném zařízení při stávajících hardwarových omezeních.
Secure Enclave funguje jako autonomní procesor: po spuštění zařízení se inicializuje vlastním bootloaderem (SEP ROM), ověří integritu mikrojádra L4 a poté přejde do režimu čekání na požadavky z Application Processor (AP) přes zabezpečenou poštovní schránku (mailbox).
Výměna mezi aplikačním procesorem (AP) a Secure Enclave probíhá přes zabezpečenou poštovní schránku s šifrováním na společném session klíči. AP odešle šifrovaný požadavek, SEP jej dešifruje, provede operaci (podpis, dešifrování, generování klíče) a vrátí výsledek v šifrované podobě. SEP nikdy nepřijímá nešifrované příkazy.
Před navázáním session klíče provádějí AP a SEP autentizační protokol využívající skupinový klíč (Group Key) vložený do SEP ROM a ověřený certifikátem Apple. Tento mechanismus zaručuje, že pouze pravé zařízení Apple může komunikovat s danou Secure Enclave.
Všechny kryptografické klíče jsou generovány uvnitř Secure Enclave pomocí hardwarového TRNG. Každý klíč je svázán s UID zařízení a nelze jej exportovat. Při přístupu ke klíči AP specifikuje jeho handle (jako v Keychain) a SEP provede operaci, aniž by odhalil samotný klíč.
// Generování ECDSA klíče uvnitř 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 není jen softwarový modul, ale plnohodnotný autonomní počítač na krystalu. Obsahuje vlastní procesor, RAM, ROM, nevolatilní paměť a specializované kryptografické akcelerátory.
Procesor Secure Enclave — 32bitový ARM Cortex-A7 (A7-A10) nebo vlastní mikrojádro L4 (A12+). RAM je staticky přidělena (SRAM) a zvenčí nepřístupná. ROM (SEP ROM) obsahuje bootloader a skupinový klíč. Nevolatilní paměť ukládá UID, kořenové certifikáty a trvalé klíče.
Velikost SRAM Secure Enclave je omezena (16-64 KB v závislosti na generaci). Toto je architektonické omezení: uvnitř SEP se provádějí pouze kryptografické operace a porovnávání biometrických šablon. Všechna ostatní data jsou přenášena šifrovaným kanálem do hlavní paměti AP.
Secure Enclave obsahuje vyhrazené hardwarové bloky: engine AES (hardwarové šifrování/dešifrování), akcelerátor P256 (ECDSA, ECDH), modul SHA-256/SHA-512, TRNG (True Random Number Generator založený na kruhových oscilátorech). To zajišťuje vysoký výkon (gigabitové rychlosti AES) při minimální spotřebě energie.
| Komponenta | Funkce | Výkon |
|---|---|---|
| AES Engine | Hardwarové šifrování AES-256 | 3.5 GB/s (A12+) |
| P256 Accelerator | ECDSA podpis/ověření | 15000 op/s |
| TRNG | Generování náhodných čísel | 1 Mbit/s |
| SHA-256 | Hashování dat | 2 GB/s |
| UID (eFuse) | Unikátní identifikátor čipu | 256 bitů |
Každá dávka čipů Secure Enclave obdrží skupinový klíč (Group Key) vložený do SEP ROM. Tento klíč se používá pro autentizaci SEP vůči AP a pro navázání šifrovaného kanálu. Apple vydává certifikáty, které podepisují skupinové klíče, což umožňuje ověření pravosti SEP na úrovni firmwaru.
Vývojáři iOS nemají přímý přístup k Secure Enclave. Interakce probíhá prostřednictvím vyšších API: LocalAuthentication (Touch ID, Face ID), Keychain Services (ukládání klíčů v SEP), CryptoKit (kryptografické operace s klíči SEP).
Framework CryptoKit (iOS 13+) poskytuje přímý přístup k Secure Enclave pro generování ECDSA klíčů a podepisování dat. Klíče vytvořené s příznakem secureEnclaveKey jsou fyzicky umístěny uvnitř SEP. Při podepisování jsou data přenášena přes zabezpečený kanál, operace je provedena v SEP a podpis je vrácen aplikaci.
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 Services může použít Secure Enclave pro ukládání kryptografických klíčů. Atribut kSecAttrTokenID = kSecAttrTokenIDSecureEnclave označuje systému, že klíč má být vytvořen a uložen uvnitř SEP. Klíče v SEP jsou vždy typu EC (secp256r1/P-256), protože Secure Enclave nepodporuje RSA.
Touch ID a Face ID — klíčové uživatelské funkce implementované přes Secure Enclave. SEP nejen ukládá biometrické šablony, ale také je porovnává s vloženými daty, což vylučuje možnost zachycení otisku prstu nebo obrázku obličeje.
Při registraci otisku prstu nebo obličeje senzor přenese obrázek do Secure Enclave, kde je převeden na matematickou šablonu (ne obrázek!) a uložen v šifrované paměti SEP. Původní obrázek je zničen. Šablonu nelze extrahovat ven — SEP může pouze porovnat novou šablonu s uloženými.
Secure Enclave ukládá až 5 otisků prstů nebo obličejů. Všechny šablony jsou chráněny UID zařízení. Při restartu zařízení SEP blokuje přístup k šablonám do prvního zadání kódu (uzamykací kód, ne biometrie).
Když uživatel přiloží prst na Touch ID, senzor zachytí obrázek a (přes ovladač v iOS) jej přenese do Secure Enclave přes zabezpečený kanál. SEP porovná šablonu s uloženými. Při shodě SEP vrátí AP status úspěchu + efemérní klíč pro odemknutí Keychain. Neúspěšné pokusy jsou sledovány a po určitém počtu (nastavitelném) SEP blokuje všechny biometrické požadavky do zadání kódu.
import LocalAuthentication
func authenticateUser() {
let context = LAContext()
var error: NSError?
guard context.canEvaluatePolicy(
.deviceOwnerAuthenticationWithBiometrics,
error: &error
) else { return }
context.evaluatePolicy(
.deviceOwnerAuthenticationWithBiometrics,
localizedReason: "Potvrďte svou totožnost"
) { success, error in
if success {
// SEP potvrdil shodu biometrie
}
}
}
Při ztrátě zařízení jsou biometrická data chráněna na několika úrovních: šablony jsou šifrovány UID (nečitelné mimo SEP), SEP vyžaduje kód zařízení při každém restartu, po 48 hodinách nečinnosti, po 5 neúspěšných biometrických pokusech. Režim Lost Mode přes Find My dále blokuje SEP.
Často kladené otázky
Na uzamčeném zařízení — ne. Secure Enclave je navržen tak, že data nejsou přístupná bez autentizace uživatele. Známé útoky (checkm8 na A5-A11) nemohou extrahovat data z SEP — kompromitují AP, ale ne Secure Enclave.
ECDSA (secp256r1/P-256) — pro podpis a ověření. ECDH — pro dohodu klíčů. AES-256 — pro symetrické šifrování. SHA-256 — pro hashování. RSA není podporováno. Všechny operace jsou prováděny hardwarově.
V Apple Silicon (M1, M2, M3) je Secure Enclave implementován podobně jako v A čipech, ale se zvýšenými prostředky. Podporuje více současných klíčů, rychlejší P256 operace a má rozšířenou sadu scénářů použití (FileVault, automatické vyplňování, Safari).
UID (Unique ID) — 256bitový náhodný identifikátor vložený do Secure Enclave při výrobě čipu. UID se používá jako kořenový klíč pro šifrování všech ostatních klíčů na zařízení. Žádná komponenta, včetně samotného SEP, jej nemůže přečíst.
Úplný reset nastává při obnově firmwaru přes Recovery Mode (DFU). Secure Enclave přestaví hierarchii klíčů. Všechna data Keychain a biometrické šablony jsou smazány bez možnosti obnovení — to je nevratný proces.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také