Secure Enclave — är en dedikerad hårdvarukoprocessor i Apple-enheter som implementerar en isolerad säker miljö för att bearbeta kryptografiska operationer och lagra konfidentiell data. Secure Enclave körs på sin egen mikroprocessor med L4-mikrokärna och har ingen direkt åtkomst till enhetens huvudminne eller kringutrustning. Enligt Apple Platform Security Guide använder Secure Enclave en hårdvarubaserad slumpgenerator TRNG och en specialiserad AES-motor för att tillhandahålla kryptografiska operationer på chipnivå.
Huvudpunkter
Secure Enclave (SEP — Secure Enclave Processor) — är en dedikerad 32-bitars RISC-processor (ARM Cortex-A7/A8 på tidiga chips, egen L4-mikrokärna på nyare), integrerad i Apple SoC. Den fungerar som en säker koprocessor för alla kryptografiska och biometriska operationer som kräver hårdvaruisolering.
Secure Enclave dök först upp i A7-chippet (iPhone 5S, 2013) tillsammans med Touch ID. I A7–A8 implementerades Secure Enclave som en del av processorn. Från och med A9 (iPhone 6S, 2015) använder Secure Enclave ett separat kristallområde med oberoende strömförsörjning och klockning. Från A12 (2018) fick Secure Enclave sin egen True Random Number Generator (TRNG) och Ed25519-hårdvaruaccelerator.
Varje Secure Enclave har en unik identifierare (UID) inbäddad under chipproduktionen. UID används som rotnyckel för att kryptera alla andra nycklar. Inte ens Apple kan extrahera eller återställa denna identifierare — den är endast tillgänglig inuti Secure Enclave.
Moderna mobila operativsystem är komplexa och innehåller miljontals rader kod, vilket gör dem sårbara för exploits. Även om en angripare får full kontroll över iOS (på kärnnivå) förblir Secure Enclave oåtkomlig — den är fysiskt separerad från huvud-SoC och accepterar inte direkta kommandon. Endast krypterade förfrågningar via en säker kanal kan kommunicera med SEP.
Enligt data från Apple Platform Security (2025) har inget framgångsrikt fall av dataextraktion från Secure Enclave på en låst enhet under nuvarande hårdvarubegränsningar dokumenterats.
Secure Enclave fungerar som en autonom processor: efter att enheten startats initieras den av sin egen bootloader (SEP ROM), verifierar integriteten hos L4-mikrokärnan och går sedan över i vänteläge för förfrågningar från Application Processor (AP) via en säker mailbox.
Utbytet mellan applikationsprocessorn (AP) och Secure Enclave sker via en säker mailbox med kryptering på en gemensam sessionsnyckel. AP skickar en krypterad förfrågan, SEP dekrypterar den, utför operationen (signatur, dekryptering, nyckelgenerering) och returnerar resultatet krypterat. SEP accepterar aldrig okrypterade kommandon.
Innan etablering av sessionsnyckeln utför AP och SEP ett autentiseringsprotokoll som använder en gruppnyckel (Group Key) inbäddad i SEP ROM och verifierad av ett Apple-certifikat. Denna mekanism garanterar att endast en äkta Apple-enhet kan kommunicera med den specifika Secure Enclave.
Alla kryptografiska nycklar genereras inuti Secure Enclave med hårdvaru-TRNG. Varje nyckel är kopplad till enhetens UID och kan inte exporteras. Vid åtkomst till en nyckel anger AP dess handtag (som i Keychain) och SEP utför operationen utan att avslöja själva nyckeln.
// Generering av ECDSA-nyckel inuti 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 är inte bara en programmodul, utan en fullständig autonom dator på en kristall. Den innehåller sin egen processor, RAM, ROM, icke-flyktigt minne och specialiserade kryptografiska acceleratorer.
Processorn i Secure Enclave — 32-bitars ARM Cortex-A7 (A7-A10) eller egen L4-mikrokärna (A12+). RAM är statiskt allokerat (SRAM) och otillgängligt utifrån. ROM (SEP ROM) innehåller bootloadern och gruppnyckeln. Icke-flyktigt minne lagrar UID, rotcertifikat och permanenta nycklar.
Storleken på Secure Enclave SRAM är begränsad (16-64 KB beroende på generation). Detta är en arkitektonisk begränsning: inuti SEP utförs endast kryptografiska operationer och jämförelse av biometriska mallar. All annan data överförs via en krypterad kanal till AP:s huvudminne.
Secure Enclave innehåller dedikerade hårdvarublock: AES-motor (hårdvarukryptering/dekryptering), P256-accelerator (ECDSA, ECDH), SHA-256/SHA-512-modul, TRNG (True Random Number Generator baserad på ringoscillatorer). Detta säkerställer hög prestanda (gigabithastigheter för AES) med minimal strömförbrukning.
| Komponent | Funktion | Prestanda |
|---|---|---|
| AES Engine | Hårdvarukryptering AES-256 | 3.5 GB/s (A12+) |
| P256 Accelerator | ECDSA-signatur/verifiering | 15000 op/s |
| TRNG | Generering av slumptal | 1 Mbit/s |
| SHA-256 | Hashning av data | 2 GB/s |
| UID (eFuse) | Unik chipidentifierare | 256 bitar |
Varje batch Secure Enclave-chips får en gruppnyckel (Group Key) inbäddad i SEP ROM. Denna nyckel används för autentisering av SEP inför AP och för att etablera en krypterad kanal. Apple utfärdar certifikat som signerar gruppnycklarna, vilket möjliggör verifiering av SEP:s äkthet på firmware-nivå.
iOS-utvecklare har inte direkt åtkomst till Secure Enclave. Interaktion sker via högnivå-API:er: LocalAuthentication (Touch ID, Face ID), Keychain Services (lagring av nycklar i SEP), CryptoKit (kryptografiska operationer med SEP-nycklar).
Ramverket CryptoKit (iOS 13+) ger direkt åtkomst till Secure Enclave för generering av ECDSA-nycklar och signering av data. Nycklar skapade med flaggan secureEnclaveKey finns fysiskt inuti SEP. Vid signering överförs data via en säker kanal, operationen utförs i SEP och signaturen returneras till applikationen.
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 kan använda Secure Enclave för lagring av kryptografiska nycklar. Attributet kSecAttrTokenID = kSecAttrTokenIDSecureEnclave anger för systemet att nyckeln ska skapas och lagras inuti SEP. Nycklar i SEP är alltid av typen EC (secp256r1/P-256) eftersom Secure Enclave inte stöder RSA.
Touch ID och Face ID — viktiga användarfunktioner implementerade via Secure Enclave. SEP lagrar inte bara biometriska mallar utan jämför dem också med inmatade data, vilket utesluter möjligheten att avlyssna fingeravtrycks- eller ansiktsbilder.
Vid registrering av fingeravtryck eller ansikte överför sensorn bilden till Secure Enclave, där den omvandlas till en matematisk mall (inte en bild!) och lagras i SEP:s krypterade minne. Originalbilden förstörs. Mallen kan inte extraheras utåt — SEP kan endast jämföra en ny mall med lagrade mallar.
Secure Enclave lagrar upp till 5 fingeravtryck eller ansikten. Alla mallar skyddas av enhetens UID. Vid omstart av enheten blockerar SEP åtkomst till mallarna tills första kodangivelsen (låskod, inte biometri).
När användaren placerar fingret på Touch ID, fångar sensorn bilden och (via drivrutinen i iOS) överför den till Secure Enclave via en säker kanal. SEP jämför mallen med lagrade mallar. Vid matchning returnerar SEP en framgångsstatus + en ephemeral nyckel för upplåsning av Keychain. Misslyckade försök spåras och efter ett visst antal (konfigurerbart) blockerar SEP alla biometriska förfrågningar tills kod anges.
import LocalAuthentication
func authenticateUser() {
let context = LAContext()
var error: NSError?
guard context.canEvaluatePolicy(
.deviceOwnerAuthenticationWithBiometrics,
error: &error
) else { return }
context.evaluatePolicy(
.deviceOwnerAuthenticationWithBiometrics,
localizedReason: "Bekräfta din identitet"
) { success, error in
if success {
// SEP bekräftade biometriöverensstämmelse
}
}
}
Vid förlust av enheten skyddas biometriska data på flera nivåer: mallarna är krypterade med UID (oläsliga utanför SEP), SEP kräver enhetskoden vid varje omstart, efter 48 timmars inaktivitet, efter 5 misslyckade biometriska försök. Lost Mode via Find My blockerar SEP ytterligare.
Vanliga frågor
På en låst enhet — nej. Secure Enclave är utformad så att data inte är tillgänglig utan användarautentisering. Kända attacker (checkm8 på A5-A11) kan inte extrahera data från SEP — de komprometterar AP men inte Secure Enclave.
ECDSA (secp256r1/P-256) — för signatur och verifiering. ECDH — för nyckelöverenskommelse. AES-256 — för symmetrisk kryptering. SHA-256 — för hashning. RSA stöds inte. Alla operationer utförs i hårdvara.
I Apple Silicon (M1, M2, M3) är Secure Enclave implementerad på liknande sätt som i A-chips, men med ökade resurser. Den stöder fler samtidiga nycklar, snabbare P256-operationer och har en utökad uppsättning användningsscenarier (FileVault, autofyll, Safari).
UID (Unique ID) — är en 256-bitars slumpmässig identifierare inbäddad i Secure Enclave under chipproduktion. UID används som rotnyckel för att kryptera alla andra nycklar på enheten. Den kan inte läsas av någon komponent, inklusive SEP själv.
Fullständig återställning sker vid återställning av firmware via Recovery Mode (DFU). Secure Enclave återuppbygger nyckelhierarkin. All Keychain-data och biometriska mallar raderas utan möjlighet till återställning — detta är en oåterkallelig process.
Sammanfattning
Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.
Läs också