Secure Enclave — egy dedikált hardveres koprocesszor az Apple eszközökben, amely izolált biztonságos környezetet valósít meg kriptográfiai műveletek feldolgozására és bizalmas adatok tárolására. A Secure Enclave saját mikroprocesszorral működik L4 mikrokernelrel, és nincs közvetlen hozzáférése az eszköz főmemóriájához vagy perifériáihoz. Az Apple Platform Security Guide szerint a Secure Enclave hardveres TRNG véletlenszám-generátort és specializált AES-motort használ a kriptográfiai műveletek chip szintű biztosításához.
Főbb pontok
Secure Enclave (SEP — Secure Enclave Processor) — egy dedikált 32 bites RISC processzor (ARM Cortex-A7/A8 a korai chipeken, saját L4 mikrokernel az újabbakon), amely az Apple SoC-ba integrált. Védett koprocesszorként funkcionál minden olyan kriptográfiai és biometrikus művelethez, amely hardveres izolációt igényel.
A Secure Enclave először az A7 chipben (iPhone 5S, 2013) jelent meg a Touch ID-val együtt. Az A7–A8-ban a Secure Enclave a processzor részeként volt implementálva. Az A9-től (iPhone 6S, 2015) kezdve a Secure Enclave külön kristályterületet használ független tápellátással és órajellel. Az A12-től (2018) a Secure Enclave saját True Random Number Generator-t (TRNG) és Ed25519 hardveres gyorsítót kapott.
Minden Secure Enclave egyedi azonosítóval (UID) rendelkezik, amely a chip gyártási szakaszában kerül beégetésre. A UID gyökérkulcsként szolgál az összes többi kulcs titkosításához. Még az Apple sem tudja kinyerni vagy helyreállítani ezt az azonosítót — az csak a Secure Enclave belsejében érhető el.
A modern mobil operációs rendszerek összetettek és milliónyi kódsort tartalmaznak, ami sebezhetővé teszi őket az exploitokkal szemben. Még ha a támadó teljes irányítást szerez is az iOS felett (kernel szinten), a Secure Enclave hozzáférhetetlen marad — fizikailag elkülönül a fő SoC-től és nem fogad el közvetlen parancsokat. Csak titkosított kérések egy biztonságos csatornán keresztül kommunikálhatnak a SEP-pel.
Az Apple Platform Security (2025) adatai szerint nem dokumentáltak sikeres adatkinyerést a Secure Enclave-ből egy zárolt eszközön a jelenlegi hardveres korlátozások mellett.
A Secure Enclave autonóm processzorként funkcionál: az eszköz indítása után saját bootloaderével (SEP ROM) inicializálódik, ellenőrzi az L4 mikrokernel integritását, majd az Application Processor (AP) kéréseinek várakozási módjába lép egy biztonságos postafiókon (mailbox) keresztül.
Az alkalmazásprocesszor (AP) és a Secure Enclave közötti adatcsere egy biztonságos postafiókon keresztül történik, közös munkamenet-kulcson alapuló titkosítással. Az AP titkosított kérést küld, a SEP visszafejti, végrehajtja a műveletet (aláírás, visszafejtés, kulcsgenerálás) és az eredményt titkosított formában adja vissza. A SEP soha nem fogad el titkosítatlan parancsokat.
A munkamenet-kulcs létrehozása előtt az AP és a SEP egy hitelesítési protokollt hajt végre, amely a SEP ROM-ba égetett és Apple tanúsítvánnyal ellenőrzött csoportkulcsot (Group Key) használ. Ez a mechanizmus garantálja, hogy csak egy valódi Apple eszköz kommunikálhat az adott Secure Enclave-val.
Az összes kriptográfiai kulcs a Secure Enclave belsejében generálódik hardveres TRNG használatával. Minden kulcs az eszköz UID-jához van kötve és nem exportálható. A kulcs elérésekor az AP megadja annak handle-jét (mint a Keychain-ben), és a SEP végrehajtja a műveletet anélkül, hogy felfedné magát a kulcsot.
// ECDSA kulcs generálása a Secure Enclave belsejében
@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)
}
A Secure Enclave nem csupán egy szoftvermodul, hanem egy teljes autonóm számítógép a kristályon. Saját processzorral, RAM-mal, ROM-mal, nem felejtő memóriával és specializált kriptográfiai gyorsítókkal rendelkezik.
A Secure Enclave processzora — 32 bites ARM Cortex-A7 (A7-A10) vagy saját L4 mikrokernel (A12+). A RAM statikusan van lefoglalva (SRAM) és kívülről nem hozzáférhető. A ROM (SEP ROM) tartalmazza a bootloadert és a csoportkulcsot. A nem felejtő memória tárolja a UID-t, a gyökértanúsítványokat és az állandó kulcsokat.
A Secure Enclave SRAM mérete korlátozott (16-64 KB generációtól függően). Ez egy architekturális korlátozás: a SEP belsejében csak kriptográfiai műveletek és biometrikus sablonok összehasonlítása történik. Minden más adat titkosított csatornán keresztül kerül továbbításra az AP főmemóriájába.
A Secure Enclave dedikált hardverblokkokat tartalmaz: AES-motor (hardveres titkosítás/visszafejtés), P256-gyorsító (ECDSA, ECDH), SHA-256/SHA-512 modul, TRNG (True Random Number Generator gyűrűs oszcillátorok alapján). Ez nagy teljesítményt (gigabites AES-sebesség) biztosít minimális energiafogyasztás mellett.
| Komponens | Funkció | Teljesítmény |
|---|---|---|
| AES Engine | Hardveres AES-256 titkosítás | 3.5 GB/s (A12+) |
| P256 Accelerator | ECDSA aláírás/ellenőrzés | 15000 műv/s |
| TRNG | Véletlenszám-generálás | 1 Mbit/s |
| SHA-256 | Adatok hash-elése | 2 GB/s |
| UID (eFuse) | Chip egyedi azonosítója | 256 bit |
Minden Secure Enclave chip köteg kap egy csoportkulcsot (Group Key), amely a SEP ROM-ba van égetve. Ezt a kulcsot használják a SEP hitelesítésére az AP előtt és a titkosított csatorna létrehozására. Az Apple olyan tanúsítványokat bocsát ki, amelyek aláírják a csoportkulcsokat, lehetővé téve a SEP hitelességének ellenőrzését firmware szinten.
Az iOS fejlesztők nem férnek hozzá közvetlenül a Secure Enclave-hoz. Az interakció magas szintű API-kon keresztül történik: LocalAuthentication (Touch ID, Face ID), Keychain Services (kulcsok tárolása a SEP-ben), CryptoKit (kriptográfiai műveletek SEP kulcsokkal).
A CryptoKit keretrendszer (iOS 13+) közvetlen hozzáférést biztosít a Secure Enclave-hoz ECDSA kulcsok generálásához és adatok aláírásához. A secureEnclaveKey jelzővel létrehozott kulcsok fizikailag a SEP belsejében helyezkednek el. Aláíráskor az adatok egy biztonságos csatornán keresztül kerülnek továbbításra, a művelet a SEP-ben történik, és az aláírás visszakerül az alkalmazáshoz.
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)
}
A Keychain Services használhatja a Secure Enclave-t kriptográfiai kulcsok tárolására. A kSecAttrTokenID = kSecAttrTokenIDSecureEnclave attribútum jelzi a rendszernek, hogy a kulcsot a SEP belsejében kell létrehozni és tárolni. A SEP-ben lévő kulcsok mindig EC típusúak (secp256r1/P-256), mivel a Secure Enclave nem támogatja az RSA-t.
Touch ID és Face ID — kulcsfontosságú felhasználói funkciók, amelyek a Secure Enclave-n keresztül valósulnak meg. A SEP nemcsak tárolja a biometrikus sablonokat, hanem összehasonlítja azokat a bemenő adatokkal, ami kizárja az ujjlenyomat vagy arc képének elfogását.
Az ujjlenyomat vagy arc regisztrálásakor az érzékelő továbbítja a képet a Secure Enclave-nak, ahol az matematikai sablonná (nem képpé!) alakul és a SEP titkosított memóriájában tárolódik. Az eredeti kép megsemmisül. A sablon nem nyerhető ki kifelé — a SEP csak egy új sablont tud összehasonlítani a tároltakkal.
A Secure Enclave legfeljebb 5 ujjlenyomatot vagy arcot tárol. Az összes sablont az eszköz UID-ja védi. Az eszköz újraindításakor a SEP blokkolja a sablonokhoz való hozzáférést az első kódbevitelig (zárolási kód, nem biometria).
Amikor a felhasználó az ujját a Touch ID-ra helyezi, az érzékelő leképezi a képet és (az iOS illesztőprogramján keresztül) továbbítja a Secure Enclave-nak egy biztonságos csatornán. A SEP összehasonlítja a sablont a tároltakkal. Egyezés esetén a SEP visszaadja a sikeres státuszt + egy ideiglenes kulcsot a Keychain feloldásához. A sikertelen próbálkozások nyomon követése után egy meghatározott számot követően (beállítható) a SEP blokkolja az összes biometrikus kérést a kód megadásáig.
import LocalAuthentication
func authenticateUser() {
let context = LAContext()
var error: NSError?
guard context.canEvaluatePolicy(
.deviceOwnerAuthenticationWithBiometrics,
error: &error
) else { return }
context.evaluatePolicy(
.deviceOwnerAuthenticationWithBiometrics,
localizedReason: "Erősítse meg személyazonosságát"
) { success, error in
if success {
// A SEP megerősítette a biometria egyezést
}
}
}
Eszköz elvesztése esetén a biometrikus adatok több szinten védettek: a sablonok UID-vel vannak titkosítva (a SEP-en kívül olvashatatlanok), a SEP minden újraindításkor, 48 óra inaktivitás után, 5 sikertelen biometrikus próbálkozás után kéri az eszközkódot. A Lost Mode a Find My alkalmazáson keresztül tovább blokkolja a SEP-et.
Gyakran ismételt kérdések
Zárolt eszközön — nem. A Secure Enclave úgy van tervezve, hogy az adatok ne legyenek hozzáférhetők felhasználói hitelesítés nélkül. Az ismert támadások (checkm8 az A5-A11-en) nem tudnak adatokat kinyerni a SEP-ből — kompromittálják az AP-t, de nem a Secure Enclave-t.
ECDSA (secp256r1/P-256) — aláíráshoz és ellenőrzéshez. ECDH — kulcsmegállapodáshoz. AES-256 — szimmetrikus titkosításhoz. SHA-256 — hash-eléshez. Az RSA nem támogatott. Minden művelet hardveresen történik.
Az Apple Silicon-ban (M1, M2, M3) a Secure Enclave hasonlóan van implementálva, mint az A chipekben, de nagyobb erőforrásokkal. Több egyidejű kulcsot támogat, gyorsabb P256 műveleteket és kiterjesztett használati eseteket (FileVault, automatikus kitöltés, Safari) kínál.
UID (Unique ID) — egy 256 bites véletlen azonosító, amely a Secure Enclave-ba van égetve a chip gyártása során. A UID gyökérkulcsként szolgál az eszköz összes többi kulcsának titkosításához. Egyetlen komponens sem olvashatja, beleértve magát a SEP-et sem.
A teljes visszaállítás a firmware Recovery Mode-on (DFU) keresztüli helyreállításakor történik. A Secure Enclave újraépíti a kulcshierarchiát. Az összes Keychain adat és biometrikus sablon törlődik helyreállítási lehetőség nélkül — ez egy visszafordíthatatlan folyamat.
Összefoglalás
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is