Secure Enclave
Secure Enclave er et reservert, sikkert undersystem i de nyeste versjonene av iPhone, iPad, Mac, Apple TV, Apple Watch og HomePod.
Oversikt
Secure Enclave er et reservert, sikkert undersystem som er integrert i Apples System on Chip (SoC-er). Secure Enclave er isolert fra hovedprosessoren for å gi et ekstra sikkerhetslag og er utviklet for å holde sensitive brukerdata sikre selv når kjernen til applikasjonsprosessoren kompromitteres. Den følger samme designprinsipper som SoC ved å ha en oppstart-ROM for å etablere en «root of trust» i maskinvaren, en AES-motor for effektive og sikre kryptografiske operasjoner og beskyttet minne. Selv om Secure Enclave ikke inkluderer lagring, har den likevel en mekanisme for å lagre informasjon sikkert på tilkoblet lagring atskilt fra NAND-flash brukt av applikasjonsprosessoren og operativsystemet.
Secure Enclave er en maskinvarefunksjon i de fleste versjoner av iPhone, iPad, Mac, Apple TV, Apple Watch og HomePod, det vil si:
iPhone 5s eller nyere
iPad Air eller nyere
Mac-maskiner med Apple-chiper
MacBook Pro med Touch Bar (2016 og 2017) med Apple T1-brikken
Intel-baserte Macer med Apple T2-sikkerhetsbrikken
Apple TV HD eller nyere
Apple Watch Series 1 eller nyere
HomePod og HomePod mini
Secure Enclave-prosessor
Secure Enclave-prosessoren leverer den primære datakraften for Secure Enclave. Secure Enclave-prosessoren er utelukkende dedikert til bruk av Secure Enclave for å gi den sterkeste isolasjonen. Dette bidrar til å forhindre angrep fra sidekanaler som er avhengig av at ondsinnet programvare deler den samme utførende kjernen som målprogramvaren under angrep.
Secure Enclave-prosessoren kjører en Apple-tilpasset versjon av L4-mikrokjernen. Den er laget for å fungere effektivt ved en lavere klokkefrekvens, noe som bidrar til å beskytte den mot tids- og effektangrep. Secure Enclave-prosessoren, som starter med A11 og S4, inkluderer en minnebeskyttelsesmotor og krypteringsminne med anti-repetisjonsfunksjoner, sikker oppstart, en dedikert generator for tilfeldige tall og en egen AES-motor.
Minnebeskyttelsesmotor
Secure Enclave drives fra et reservert område av enhetens DRAM-minne. Flere sikkerhetslag isolerer det Secure Enclave-beskyttede minnet fra applikasjonsprosessoren.
Når enheten starter, genererer oppstart-ROM for Secure Enclave en tilfeldig, kortvarig minnebeskyttelsesnøkkel for minnebeskyttelsesmotoren. Når Secure Enclave skriver til det avgrensede minneområdet, krypterer minnebeskyttelsesmotoren minneblokken ved hjelp av AES i Mac XEX-modus (xor-encrypt-xor) og beregner en CMAC-autentiseringsetikett (Cipher-based Message Authentication Code) for minnet. Minnebeskyttelsesmotoren lagrer autentiseringsetiketten sammen med det krypterte minnet. Når Secure Enclave leser minnet, verifiserer minnebeskyttelsesmotoren autentiseringsetiketten. Hvis autentiseringsetiketten samsvarer, dekrypterer minnebeskyttelsesmotoren minneblokken. Hvis etiketten ikke samsvarer, signaliserer minnebeskyttelsesmotoren om en feil til Secure Enclave. Etter en minneautentiseringsfeil slutter Secure Enclave å akseptere forespørsler frem til systemet startes på nytt.
Fra og med Apple A11- og S4-SoC-er legger minnebeskyttelsesmotoren til repetisjonsbeskyttelse for Secure Enclave-minne. For å bidra til å hindre repetisjon av sikkerhetskritiske data lagrer minnebeskyttelsesmotoren et unikt engangsnummer, en såkalt anti-repetisjonsverdi, for minneblokken sammen med autentiseringsetiketten. Anti-repetisjonsverdien brukes som en ekstra finjustering for CMAC-autentiseringsetiketten. Anti-repetisjonsverdiene for alle minneblokker beskyttes ved hjelp av et integritetstre som er rotfestet i separat SRAM i Secure Enclave. For skriving oppdaterer minnebeskyttelsesmotoren anti-repetisjonsverdien og hvert nivå av integritetstreet opp til SRAM. For lesing verifiserer minnebeskyttelsesmotoren anti-repetisjonsverdien og hvert nivå av integritetstreet opp til SRAM. Manglende samsvar av anti-repetisjonsverdier håndteres likt som manglende samsvar av autentiseringsetiketter.
På Apple A14, M1 eller nyere SoC-er støtter minnebeskyttelsesmotoren to kortvarige minnebeskyttelsesnøkler. Den første brukes for data som er privat for Secure Enclave, og den andre brukes for data som er delt med Secure Neural Engine.
Minnebeskyttelsesmotoren er integrert med og fungerer transparent med Secure Enclave. Secure Enclave leser og skriver minne som om det var en vanlig ukryptert DRAM, mens en observatør utenfor Secure Enclave kun ser den krypterte og autentiserte versjonen av minnet. Resultatet er sterk minnebeskyttelse uten å gå på kompromiss med ytelse eller programvarekompleksitet.
Oppstart-ROM for Secure Enclave
Secure Enclave inkluderer en separat oppstart-ROM for Secure Enclave. I likhet med oppstart-ROM-en for applikasjonsprosessoren, er oppstart-ROM-en for Secure Enclave en uforanderlig kode som etablerer maskinvarens «root of trust» for Secure Enclave.
Ved oppstart tilordner iBoot et separat minneområde til Secure Enclave. Før minnet brukes, initialiserer oppstart-ROM for Secure Enclave minnebeskyttelsesmotoren for å gi kryptografisk beskyttelse av det Secure Enclave-beskyttede minnet.
Applikasjonsprosessoren sender deretter sepOS-diskfilen til oppstart-ROM for Secure Enclave. Når sepOS-diskfilen er kopiert til det Secure Enclave-beskyttede minnet, sjekker oppstart-ROM for Secure Enclave den kryptografiske hashen og signaturen til diskfilen for å verifisere at sepOS er autorisert til å kjøre på enheten. Hvis sepOS-diskfilen er tilstrekkelig godkjent til å kjøre på enheten, overfører oppstart-ROM for Secure Enclave kontrollen til sepOS. Hvis signaturen ikke er gyldig, er oppstart-ROM for Secure Enclave utviklet for å forhindre all videre bruk av Secure Enclave frem til neste nullstilling av brikken.
På Apple A10 og nyere SoC-er låser oppstart-ROM for Secure Enclave en hash av sepOS i et separat register dedikert til dette formålet. Public Key Accelerator bruker denne hashen for nøkler bundet av operativsystemet.
Oppstartsovervåking for Secure Enclave
På Apple A13 og nyere SoC-er, har Secure Enclave en oppstartsovervåking som er utviklet for å sikre sterkere integritet på hashen av det startede sepOS-et.
Ved oppstart av systemet bidrar Secure Enclave-prosessorens SCIP-konfigurasjon (System Coprocessor Integrity Protection) til å forhindre at Secure Enclave-prosessoren kjører noen som helst kode bortsett fra oppstart-ROM for Secure Enclave. Oppstartsovervåking bidrar til å forhindre at Secure Enclave endrer SCIP-konfigurasjonen direkte. For å gjøre det lastede sepOS-et kjørbart, sender oppstart-ROM for Secure Enclave en forespørsel til oppstartsovervåkingen med adressen og størrelsen på det lastede sepOS-et. Når oppstartsovervåkingen mottar forespørselen, nullstiller den Secure Enclave-prosessoren, hasher det lastede sepOS-et, oppdaterer SCIP-innstillingene for å tillate kjøring av det lastede sepOS-et og starter kjøring i den nylig lastede koden. Når systemet fortsetter å starte opp, brukes denne samme prosessen hver gang en ny kode gjøres kjørbar. Hver gang oppdaterer oppstartsovervåkingen en kjørehash av oppstartsprosessen. Oppstartsovervåking inkluderer også kritiske sikkerhetsparametere i kjørehashen.
Når oppstarten fullføres, sluttfører oppstartsovervåkingen kjørehashen og sender den til Public Key Accelerator for bruk med nøkler bundet av operativsystemet. Denne prosessen er designet slik at operativsystemnøkkelbindingen ikke kan omgås selv med en sårbarhet i oppstart-ROM for Secure Enclave.
True Random Number Generator
True Random Number Generator (TRNG) brukes til å generere sikre, tilfeldige data. Secure Enclave bruker TRNG når den genererer en tilfeldig kryptografisk nøkkel, tilfeldig nøkkelinitialverdi eller annen entropi. TRNG er basert på flere ringoscillatorer som etterbehandles med CTR_DRBG (en algoritme basert på blokk-koder i tellemodus).
Rotkryptografinøkler
Secure Enclave inkluderer en rotkryptografinøkkel for unik ID (UID). UID er unik for hver individuelle enhet og er ikke knyttet til noen annen identifikator på enheten.
En tilfeldig generert UID forenes i SoC ved produksjon. Fra og med A9-SoC-er genereres UID-en av Secure Enclave TRNG ved produksjon og skrives til konfigureringene ved hjelp av en programvareprosess som kjører kun i Secure Enclave. Denne prosessen beskytter UID-en fra å være synlig utenfor enheten under produksjon, og er derfor ikke er tilgjengelig for tilgang eller lagring av Apple eller noen av leverandørene.
sepOS bruker UID-en til å beskytte enhetsspesifikke hemmeligheter. UID-en gjør at data kan knyttes kryptografisk til en bestemt enhet. For eksempel inneholder nøkkelhierarkiet som beskytter filsystemet, UID-en. Så hvis den interne SSD-lagringen flyttes fysisk fra én enhet til en annen, blir filene utilgjengelige. Andre beskyttede enhetsspesifikke hemmeligheter inkluderer Face ID- eller Touch ID-data. På en Mac er det kun fullstendig intern lagring knyttet til AES-motoren som har dette krypteringsnivået. For eksempel: verken eksterne lagringsenheter som kobles til via USB, eller PCIe-basert lagring lagt til Mac Pro fra 2019, krypteres på denne måten.
Secure Enclave har også en enhetsgruppe-ID (GID), som er felles for alle enheter som bruker en gitt SoC (for eksempel alle enheter som bruker Apple A15-SoC, deler samme GID).
UID-en og GID-en er ikke tilgjengelige via JTAG eller andre feilsøkingsgrensesnitt.
AES-motor for Secure Enclave
AES-motoren for Secure Enclave er en maskinvareblokk som brukes til å utføre symmetrisk kryptografi basert på AES-koden. AES-motoren er designet for å motstå informasjonslekkasje ved hjelp av timing og Static Power Analysis (SPA). Fra og med A9 SoC inkluderer også AES-motoren DPA-mottiltak (Dynamic Power Analysis).
AES-motoren støtter maskinvare- og programvarenøkler. Maskinvarenøkler avledes fra Secure Enclaves UID eller GID. Disse nøklene blir værende i AES-motoren og er ikke synlige selv for sepOS-programvare. Selv om programvare kan be om krypterings- og dekrypteringsoperasjoner med maskinvarenøklene, kan den ikke trekke ut nøklene.
På Apple A10 og nyere SoC-er inkluderer AES-motoren låsbare seed-biter som utleder nøkler avledet fra UID-en eller GID-en. Dette gjør det mulig å betinge datatilgang på enhetens driftsmodus. Låsbare seed-biter brukes for eksempel til å avslå tilgang til passordbeskyttede data ved oppstart fra DFU-modus (Device Firmware Update). Du finner mer informasjon om dette under Koder og passord.
AES-motor
Alle Apple-enheter med Secure Enclave har også en dedikert AES256-krypteringsmotor («AES-motor») innebygd i banen for direkte minnetilgang (DMA) mellom NAND-flashlagringen (ikke-flyktig) og systemets hovedminne, som gir svært effektiv filkryptering. På A9-prosessorer eller nyere prosessorer i A-serien ligger undersystemet med flashlagringen på en isolert databuss som kun gis tilgang til minne som inneholder brukerdata via DMA-krypteringsmotoren.
Ved oppstart genererer sepOS en kortvarig innpakningsnøkkel ved bruk av TRNG. Secure Enclave sender denne nøkkelen til AES-motoren gjennom separate ledere som er utviklet for å forhindre at programvare utenfor Secure Enclave har tilgang til den. sepOS kan deretter bruke den kortvarige innpakkingsnøkkelen til å pakke inn filnøkler til bruk i filsystemdriveren til applikasjonsprosessoren. Når filsystemdriveren leser eller skriver en fil, sender den den innpakkede nøkkelen til AES-motoren, som pakker ut nøkkelen. AES-motoren eksponerer aldri den utpakkede nøkkelen for programvare.
Merk: AES-motoren er en komponent som er atskilt fra både Secure Enclave og AES-motoren for Secure Enclave, men driften er nært knyttet til Secure Enclave som vist nedenfor.
Public Key Accelerator
Public Key Accelerator (PKA) er en maskinvareblokk som brukes til å utføre asymmetriske kryptografioperasjoner. PKA støtter signerings- og krypteringsalgoritmer for RSA og ECC (elliptisk kurve-kryptografi). PKA er utformet for å motstå informasjonslekkasje ved hjelp av timing- og sidekanalsangrep, som SPA og DPA.
PKA støtter programvare- og maskinvarenøkler. Maskinvarenøkler avledes fra Secure Enclaves UID eller GID. Disse nøklene blir værende i PKA og er ikke synlige selv for sepOS-programvare.
PKAs krypteringsimplementeringer har siden A13 SoC blitt bevist å være matematisk riktige ved bruk av formelle verifiseringsteknikker.
På Apple A10 og nyere SoC-er støtter PKA nøkler bundet av operativsystemet, også kalt Sealed Key Protection eller SKP. Disse nøklene genereres ved å bruke en kombinasjon av enhetens UID og hashen av sepOS-et som kjører på enheten. Hashen gis av oppstart-ROM for Secure Enclave, eller av oppstartsovervåking for Secure Enclave på Apple A13 og nyere SoC-er. Disse nøklene brukes også til å verifisere sepOS-versjonen når det sendes forespørsler til enkelte Apple-tjenester, og de brukes også til å forbedre sikkerheten til kodebeskyttede data ved å bidra til å forhindre tilgang til nøkkelmateriale hvis kritiske endringer gjøres i systemet uten brukergodkjenning.
Sikker, ikke-flyktig lagring
Secure Enclave er utstyrt med en separat, sikker, ikke-flyktig lagringsenhet. Den sikre, ikke-flyktige lagringen er koblet til Secure Enclave ved hjelp av en dedikert I2C-buss, slik at den kun er tilgjengelig for Secure Enclave. Alle krypteringsnøkler for brukerdata er rotfestet i entropi lagret i Secure Enclaves ikke-flyktige lagring.
I enheter med A12-SoC, S4-SoC og nyere SoC-er kobles Secure Enclave sammen med en komponent for sikker lagring for entropilagring. Selve komponenten for sikker lagring er utviklet med uforanderlig ROM-kode, en maskinvarebasert generator for tilfeldige tall, en unik, kryptografisk enhetsnøkkel, kryptografimotorer og gjenkjenning av fysisk manipulasjon. Secure Enclave og komponenten for sikker lagring kommuniserer ved hjelp av en kryptert og autentisert protokoll som sørger for eksklusiv tilgang til entropien.
Enheter som ble lansert for første gang høsten 2020 eller nyere er utstyrt med en komponent for sikker lagring (andre generasjon). Komponenten for sikker lagring (andre generasjon) legger til tellerlåskasser. Hver tellerlåskasse lagrer et 128-bit-salt, en 128-bit-kodeverifikator, en 8-bit-teller og en 8-bit-verdi for maksimalt antall forsøk. Tilgang til tellerlåskassene bruker en kryptert og autentisert protokoll.
Tellerlåskasser inneholder entropien som trengs for å låse opp kodebeskyttede brukerdata. For å få tilgang til brukerdataene må den parede Secure Enclave avlede riktig kodeentropiverdi fra brukerens kode og Secure Enclaves UID. Brukerens kode kan ikke læres gjennom opplåsingsforsøk som sendes fra en kilde annet enn den parede Secure Enclave. Hvis grensen for kodeforsøk overstiges (for eksempel 10 forsøk på iPhone), vil de kodebeskyttede dataene slettes i sin helhet fra komponenten for sikker lagring.
For å opprette en tellerlåskasse sender Secure Enclave kodeentropiverdien og verdien for maksimalt antall forsøk til komponenten for sikker lagring. Komponenten for sikker lagring genererer saltverdien ved hjelp av generatoren for tilfeldige tall. Deretter avleder den en kodeverifiseringsverdi og en låskasseentropiverdi fra den gitte kodeentropien, den unike kryptografiske nøkkelen til komponenten for sikker lagring og saltverdien. Komponenten for sikker lagring initialiserer tellerlåskassen med en telling på 0, den gitte verdien for maksimalt antall forsøk, den avledede kodeverifiseringsverdien og saltverdien. Komponenten for sikker lagring returnerer deretter den genererte låskasseentropiverdien til Secure Enclave.
For å hente låskasseentropiverdien fra en tellerlåskasse senere sender Secure Enclave kodeentropien til komponenten for sikker lagring. Komponenten for sikker lagring øker først telleren for låskassen trinnvis. Hvis den trinnvis økte telleren overskrider verdien for maksimalt antall forsøk, ødelegger komponenten for sikker lagring tellerlåskassen. Hvis telleren for maksimalt antall forsøk ikke er nådd, forsøker komponenten for sikker lagring å avlede kodeverifiseringsverdien og låskasseentropiverdien med samme algoritme som ble brukt til å opprette den tellerlåskassen. Hvis den avledede kodeverifiseringsverdien samsvarer med den lagrede kodeverifiseringsverdien, returnerer komponenten for sikker lagring låskasseentropiverdien til Secure Enclave og nullstiller telleren til 0.
Nøklene som brukes for å få tilgang til passordbeskyttede data, er rotfestet i entropien lagret i tellerlåskasser. Du finner mer informasjon om dette under Oversikt over databeskyttelse.
Den sikre, ikke-flyktige lagringen brukes til alle anti-repetisjonstjenester i Secure Enclave. Anti-repetisjonstjenester på Secure Enclave brukes til tilbakekalling av data over hendelser som merker anti-repetisjonsgrenser, inkludert, men ikke begrenset til, følgende:
endring av passord
aktivering eller deaktivering av Face ID eller Touch ID
legge til eller fjerne et Face ID-ansikt eller et Touch ID-fingeravtrykk
nullstilling av Face ID eller Touch ID
legge til eller fjerne et Apple Pay-kort
sletting av alt innhold og alle innstillinger
På arkitekturer som ikke har en komponent for sikker lagring, brukes EEPROM (Electrically Erasable Programmable Read-Only Memory) for å gi tjenester for sikker lagring til Secure Enclave. Akkurat som komponentene for sikker lagring, er EEPROM tilknyttet og kun tilgjengelig fra Secure Enclave, men det inneholder ikke dedikerte funksjoner for maskinvaresikkerhet og garanterer heller ikke eksklusiv tilgang til entropi (bortsett fra de fysiske tilknytningsegenskapene) eller tellerlåskassefunksjonalitet.
Secure Neural Engine
På enheter med Face ID (ikke Touch ID) konverterer Secure Neural Engine 2D-bilder og dybdekart til en matematisk representasjon av en brukers ansikt.
På A11 til og med A13 SoC-er er Secure Neural Engine integrert i Secure Enclave. Secure Neural Engine bruker direkte minnetilgang (DMA) for høy ytelse. En IOMMU (Input-Output Memory Management Unit) som styres av sepOS-kjernen, begrenser denne direkte tilgangen til autoriserte minneområder.
Fra og med A14, M1 eller nyere implementeres Secure Neural Engine som en sikker modus i applikasjonsprosessorens Neural Engine. En dedikert maskinvaresikkerhetskontroller bytter mellom applikasjonsprosessoroppgaver og Secure Enclave-oppgaver og nullstiller Neural Engine-tilstanden for hver overgang for å holde Face ID-data sikre. En dedikert motor anvender minnekryptering, autentisering og tilgangskontroll. Samtidig bruker den en separat kryptografisk nøkkel og et separat minneområde til å begrense Secure Neural Engine til autoriserte minneområder.
Effekt- og klokkeovervåking
All elektronikk er utformet for å operere innenfor et begrenset spennings- og frekvensområde. Når den opererer utenfor dette området, kan elektronikken feile og sikkerhetskontrollene kan omgås. For å bidra til å sikre at spenningen og frekvensen er innenfor et trygt område, er Secure Enclave designet med overvåkingskretser. Disse overvåkingskretsene er utformet for å ha et mye større operasjonsområde enn resten av Secure Enclave. Hvis overvåkingen oppdager et ulovlig operasjonspunkt, stopper klokkene i Secure Enclave automatisk og starter ikke på nytt før neste SoC-nullstilling.
Oppsummering av Secure Enclave-funksjonen
Merk: A12-, A13-, S4- og S5-produkter lansert for første gang høsten 2020 har en komponent for sikker lagring (andre generasjon), mens eldre produkter basert på disse SoC-ene har komponenter for sikker lagring (første generasjon).
SoC | Minnebeskyttelsesmotor | Sikker lagring | AES-motor | PKA |
---|---|---|---|---|
A8 | Kryptering og autentisering | EEPROM | Ja | Nei |
A9 | Kryptering og autentisering | EEPROM | DPA-beskyttelse | Ja |
A10 | Kryptering og autentisering | EEPROM | DPA-beskyttelse og låsbare seed-biter | Nøkler bundet av operativsystemet |
A11 | Kryptering, autentisering og repetisjons-forhindring | EEPROM | DPA-beskyttelse og låsbare seed-biter | Nøkler bundet av operativsystemet |
A12 (Apple-enheter lansert før høsten 2020) | Kryptering, autentisering og repetisjons-forhindring | Komponent for sikker lagring gen. 1 | DPA-beskyttelse og låsbare seed-biter | Nøkler bundet av operativsystemet |
A12 (Apple-enheter lansert etter høsten 2020) | Kryptering, autentisering og repetisjons-forhindring | Komponent for sikker lagring gen. 2 | DPA-beskyttelse og låsbare seed-biter | Nøkler bundet av operativsystemet |
A13 (Apple-enheter lansert før høsten 2020) | Kryptering, autentisering og repetisjons-forhindring | Komponent for sikker lagring gen. 1 | DPA-beskyttelse og låsbare seed-biter | Nøkler bundet av operativsystemet og oppstartsovervåking |
A13 (Apple-enheter lansert etter høsten 2020) | Kryptering, autentisering og repetisjons-forhindring | Komponent for sikker lagring gen. 2 | DPA-beskyttelse og låsbare seed-biter | Nøkler bundet av operativsystemet og oppstartsovervåking |
A14–A17 | Kryptering, autentisering og repetisjons-forhindring | Komponent for sikker lagring gen. 2 | DPA-beskyttelse og låsbare seed-biter | Nøkler bundet av operativsystemet og oppstartsovervåking |
S3 | Kryptering og autentisering | EEPROM | DPA-beskyttelse og låsbare seed-biter | Ja |
S4 | Kryptering, autentisering og repetisjons-forhindring | Komponent for sikker lagring gen. 1 | DPA-beskyttelse og låsbare seed-biter | Nøkler bundet av operativsystemet |
S5 (Apple-enheter lansert før høsten 2020) | Kryptering, autentisering og repetisjons-forhindring | Komponent for sikker lagring gen. 1 | DPA-beskyttelse og låsbare seed-biter | Nøkler bundet av operativsystemet |
S5 (Apple-enheter lansert etter høsten 2020) | Kryptering, autentisering og repetisjons-forhindring | Komponent for sikker lagring gen. 2 | DPA-beskyttelse og låsbare seed-biter | Nøkler bundet av operativsystemet |
S6–S9 | Kryptering, autentisering og repetisjons-forhindring | Komponent for sikker lagring gen. 2 | DPA-beskyttelse og låsbare seed-biter | Nøkler bundet av operativsystemet |
T2 | Kryptering og autentisering | EEPROM | DPA-beskyttelse og låsbare seed-biter | Nøkler bundet av operativsystemet |
M1, M2, M3 | Kryptering, autentisering og repetisjons-forhindring | Komponent for sikker lagring gen. 2 | DPA-beskyttelse og låsbare seed-biter | Nøkler bundet av operativsystemet og oppstartsovervåking |