Secure Enclave — is een speciale hardware-coprocessor in Apple-apparaten die een geïsoleerde beveiligde omgeving implementeert voor het verwerken van cryptografische bewerkingen en het opslaan van vertrouwelijke gegevens. Secure Enclave werkt op een eigen microprocessors met microkernel L4 en heeft geen directe toegang tot het hoofdgeheugen of de randapparatuur van het apparaat. Volgens de Apple Platform Security Guide gebruikt Secure Enclave een hardware True Random Number Generator TRNG en een gespecialiseerde AES-engine om cryptografische bewerkingen op chpniveau te garanderen.
Belangrijkste punten
Secure Enclave (SEP — Secure Enclave Processor) — is een speciale 32-bit RISC-processor (ARM Cortex-A7/A8 op vroege chips, eigen L4-microkernel op nieuwere), geïntegreerd in de Apple SoC. Het fungeert als beveiligde coprocessor voor alle cryptografische en biometrische bewerkingen die hardware-isolatie vereisen.
Secure Enclave verscheen voor het eerst in de A7-chip (iPhone 5S, 2013) samen met Touch ID. In A7–A8 was Secure Enclave geïmplementeerd als onderdeel van de processor. Vanaf A9 (iPhone 6S, 2015) gebruikt Secure Enclave een apart kristalgebied met onafhankelijke voeding en klok. Vanaf A12 (2018) kreeg Secure Enclave zijn eigen True Random Number Generator (TRNG) en hardware Ed25519-versneller.
Elke Secure Enclave heeft een unieke identificatie (UID) die tijdens de chipproductie wordt ingebakken. UID wordt gebruikt als rootsleutel voor het versleutelen van alle andere sleutels. Zelfs Apple kan deze identificatie niet uitlezen of herstellen — deze is alleen binnen Secure Enclave beschikbaar.
Moderne mobiele besturingssystemen zijn complex en bevatten miljoenen regels code, waardoor ze kwetsbaar zijn voor exploits. Zelfs als een aanvaller volledige controle over iOS krijgt (op kernel-niveau), blijft Secure Enclave ontoegankelijk — het is fysiek gescheiden van de hoofd-SoC en accepteert geen directe opdrachten. Alleen versleutelde verzoeken via een beveiligd kanaal kunnen met SEP communiceren.
Volgens gegevens van Apple Platform Security (2025) is geen enkel succesvol geval van gegevensextractie uit Secure Enclave op een vergrendeld apparaat met huidige hardwarebeperkingen gedocumenteerd.
Secure Enclave functioneert als een autonome processor: na het opstarten van het apparaat wordt het geïnitialiseerd door zijn eigen bootloader (SEP ROM), controleert de integriteit van de L4-microkernel en gaat dan over in de wachtmodus voor verzoeken van de Application Processor (AP) via een beveiligde mailbox.
De uitwisseling tussen de applicatieprocessor (AP) en Secure Enclave verloopt via een beveiligde mailbox met versleuteling op een gemeenschappelijke sessiesleutel. AP stuurt een versleuteld verzoek, SEP ontsleutelt het, voert de bewerking uit (ondertekening, ontsleuteling, sleutelgeneratie) en retourneert het resultaat versleuteld. SEP accepteert nooit onversleutelde opdrachten.
Voordat de sessiesleutel wordt gevestigd, voeren AP en SEP een authenticatieprotocol uit dat gebruikmaakt van een groepsleutel (Group Key) die in SEP ROM is ingebakken en is geverifieerd met een Apple-certificaat. Dit mechanisme garandeert dat alleen een authentiek Apple-apparaat met deze Secure Enclave kan communiceren.
Alle cryptografische sleutels worden binnen Secure Enclave gegenereerd met behulp van hardware TRNG. Elke sleutel is gekoppeld aan de UID van het apparaat en kan niet worden geëxporteerd. Bij toegang tot een sleutel specificeert AP de handle ervan (zoals in Keychain) en voert SEP de bewerking uit zonder de sleutel zelf prijs te geven.
// ECDSA-sleutelgeneratie binnen 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 is niet zomaar een softwaremodule, maar een volledige autonome computer op een kristal. Het bevat een eigen processor, RAM, ROM, niet-vluchtig geheugen en gespecialiseerde cryptografische versnellers.
De processor van Secure Enclave is een 32-bit ARM Cortex-A7 (A7-A10) of eigen L4-microkernel (A12+). Het RAM is statisch toegewezen (SRAM) en van buitenaf niet toegankelijk. De ROM (SEP ROM) bevat de bootloader en de groepsleutel. Niet-vluchtig geheugen slaat UID, rootcertificaten en permanente sleutels op.
De grootte van Secure Enclave SRAM is beperkt (16-64 KB afhankelijk van de generatie). Dit is een architectuurbeperking: binnen SEP worden alleen cryptografische bewerkingen en vergelijking van biometrische sjablonen uitgevoerd. Alle andere gegevens worden via een versleuteld kanaal naar het hoofdgeheugen van AP verzonden.
Secure Enclave bevat dedicated hardwareblokken: AES-engine (hardware versleuteling/ontsleuteling), P256-versneller (ECDSA, ECDH), SHA-256/SHA-512-module, TRNG (True Random Number Generator gebaseerd op ringoscillatoren). Dit zorgt voor hoge prestaties (gigabit AES-snelheden) bij minimaal stroomverbruik.
| Component | Functie | Prestatie |
|---|---|---|
| AES Engine | Hardware AES-256-versleuteling | 3.5 GB/s (A12+) |
| P256 Accelerator | ECDSA-ondertekening/verificatie | 15000 op/s |
| TRNG | Generatie van willekeurige getallen | 1 Mbit/s |
| SHA-256 | Gegevens hashen | 2 GB/s |
| UID (eFuse) | Unieke chipidentificatie | 256 bits |
Elke partij Secure Enclave-chips krijgt een groepsleutel (Group Key) ingebakken in SEP ROM. Deze sleutel wordt gebruikt voor authenticatie van SEP jegens AP en voor het opzetten van een versleuteld kanaal. Apple geeft certificaten uit die de groepsleutels ondertekenen, waardoor de authenticiteit van SEP op firmware-niveau kan worden geverifieerd.
iOS-ontwikkelaars hebben geen directe toegang tot Secure Enclave. Interactie verloopt via hoogwaardige API's: LocalAuthentication (Touch ID, Face ID), Keychain Services (opslag van sleutels in SEP), CryptoKit (cryptografische bewerkingen met SEP-sleutels).
Het CryptoKit-framework (iOS 13+) biedt directe toegang tot Secure Enclave voor het genereren van ECDSA-sleutels en het ondertekenen van gegevens. Sleutels die zijn gemaakt met de vlag secureEnclaveKey bevinden zich fysiek in SEP. Bij ondertekening worden gegevens via een beveiligd kanaal verzonden, wordt de bewerking in SEP uitgevoerd en wordt de handtekening teruggegeven aan de applicatie.
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 Secure Enclave gebruiken voor de opslag van cryptografische sleutels. Het attribuut kSecAttrTokenID = kSecAttrTokenIDSecureEnclave geeft het systeem aan dat de sleutel in SEP moet worden aangemaakt en opgeslagen. Sleutels in SEP zijn altijd van het type EC (secp256r1/P-256), omdat Secure Enclave geen RSA ondersteunt.
Touch ID en Face ID — essentiële gebruikersfuncties geïmplementeerd via Secure Enclave. SEP slaat niet alleen biometrische sjablonen op, maar vergelijkt ze ook met ingevoerde gegevens, waardoor onderschepping van vingerafdruk- of gezichtsafbeeldingen wordt uitgesloten.
Bij registratie van een vingerafdruk of gezicht stuurt de sensor de afbeelding naar Secure Enclave, waar deze wordt omgezet in een wiskundig sjabloon (geen afbeelding!) en opgeslagen in het versleutelde geheugen van SEP. De originele afbeelding wordt vernietigd. Het sjabloon kan niet naar buiten worden gehaald — SEP kan alleen een nieuw sjabloon vergelijken met opgeslagen sjablonen.
Secure Enclave slaat maximaal 5 vingerafdrukken of gezichten op. Alle sjablonen worden beschermd door de UID van het apparaat. Bij herstart van het apparaat blokkeert SEP de toegang tot sjablonen tot de eerste code-invoer (vergrendelcode, niet biometrie).
Wanneer de gebruiker zijn vinger op Touch ID plaatst, maakt de sensor een afbeelding en stuurt deze (via de driver in iOS) via een beveiligd kanaal naar Secure Enclave. SEP vergelijkt het sjabloon met opgeslagen sjablonen. Bij overeenkomst retourneert SEP een successtatus + een efemere sleutel voor het ontgrendelen van Keychain. Mislukte pogingen worden bijgehouden en na een bepaald aantal (instelbaar) blokkeert SEP alle biometrische verzoeken tot code-invoer.
import LocalAuthentication
func authenticateUser() {
let context = LAContext()
var error: NSError?
guard context.canEvaluatePolicy(
.deviceOwnerAuthenticationWithBiometrics,
error: &error
) else { return }
context.evaluatePolicy(
.deviceOwnerAuthenticationWithBiometrics,
localizedReason: "Bevestig uw identiteit"
) { success, error in
if success {
// SEP heeft biometrie-overeenkomst bevestigd
}
}
}
Bij verlies van het apparaat worden biometrische gegevens op meerdere niveaus beschermd: sjablonen zijn versleuteld met UID (onleesbaar buiten SEP), SEP vereist de apparaatcode bij elke herstart, na 48 uur inactiviteit, na 5 mislukte biometrische pogingen. Lost Mode via Find My blokkeert SEP extra.
Veelgestelde vragen
Op een vergrendeld apparaat — nee. Secure Enclave is zo ontworpen dat gegevens niet toegankelijk zijn zonder gebruikersauthenticatie. Bekende aanvallen (checkm8 op A5-A11) kunnen geen gegevens uit SEP halen — ze compromitteren AP, maar niet Secure Enclave.
ECDSA (secp256r1/P-256) — voor ondertekening en verificatie. ECDH — voor sleutelovereenkomst. AES-256 — voor symmetrische versleuteling. SHA-256 — voor hashen. RSA wordt niet ondersteund. Alle bewerkingen worden hardwarematig uitgevoerd.
In Apple Silicon (M1, M2, M3) is Secure Enclave vergelijkbaar geïmplementeerd als in A-chips, maar met grotere resources. Het ondersteunt meer gelijktijdige sleutels, snellere P256-bewerkingen en heeft een uitgebreidere set gebruiksscenario's (FileVault, automatisch invullen, Safari).
UID (Unique ID) — een 256-bits willekeurige identificatie ingebakken in Secure Enclave tijdens de chipproductie. UID wordt gebruikt als rootsleutel voor het versleutelen van alle andere sleutels op het apparaat. Het kan door geen enkel component worden gelezen, inclusief SEP zelf.
Volledige reset vindt plaats bij het herstellen van firmware via Recovery Mode (DFU). Secure Enclave herbouwt de sleutelhierarchie. Alle Keychain-gegevens en biometrische sjablonen worden verwijderd zonder herstelmogelijkheid — dit is een onomkeerbaar proces.
Samenvatting
We ontwikkelen een mobiele applicatie turnkey
IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.
Lees ook