Nøkkeletuier for databeskyttelse
Nøklene for både fil- og nøkkelringdatabeskyttelsesklasser samles inn og administreres i nøkkeletuier på iOS, iPadOS, tvOS og watchOS. Disse operativsystemene bruker følgende nøkkeletuier: bruker, enhet, sikkerhetskopiering, deponering og iCloud-sikkerhetskopiering.
Brukernøkkeletui
Brukernøkkeletuiet er der hvor de innpakkede klassenøklene som brukes i vanlig drift av enheten, er lagret. Når for eksempel en kode oppgis, lastes NSFileProtectionComplete inn fra brukernøkkeletuiet og pakkes ut. Den er en binær plist-fil (.plist) som oppbevares i No Protection-klassen.
For enheter med SoC-er eldre enn A9, krypteres .plist-filinnholdet med en nøkkel som oppbevares i Effaceable Storage. For å gi såkalt «forward security» til nøkkeletuiene blir denne nøkkelen slettet og generert på nytt hver gang en bruker endrer koden.
For enheter med A9 eller nyere SoC-er inneholder .plist-filen en nøkkel som indikerer at nøkkeletuiet lagres i et skap som beskyttes av den Secure Enclave-kontrollerte anti-repetisjonsverdien.
Secure Enclave administrerer brukernøkkeletuiet og kan spørres om låsestatusen til en enhet. Den rapporterer at enheten kun låses opp hvis alle klassenøklene i brukernøkkeletuiet er tilgjengelige og utpakningen har vært vellykket.
Enhetsnøkkeletui
Enhetsnøkkeletuiet brukes til å lagre de pakkede klassenøklene som brukes for operasjoner som involverer enhetsspesifikke data. iPadOS-enheter som er konfigurert for delt bruk, trenger noen ganger tilgang til akkreditiver før en bruker har logget på. Derfor kreves et nøkkeletui som ikke er beskyttet av brukerens kode.
iOS og iPadOS støtter ikke kryptografisk separasjon av filsysteminnhold per-bruker, som betyr at systemet bruker klassenøkler fra enhetsnøkkeletuiet til å pakke per-fil-nøkler. Nøkkelringen bruker imidlertid klassenøklene fra brukernøkkeletuiet til å beskytte objekter i brukernøkkelringen. På iPhone- og iPad-enheter som er konfigurert for bruk av én bruker (standardkonfigurasjonen), er enhetsnøkkeletuiet og brukernøkkeletuiet det samme, og de er beskyttet av brukerens kode.
Nøkkeletuiet for sikkerhetskopiering
Nøkkeletuiet for sikkerhetskopiering blir opprettet når Finder (macOS 10.15 eller nyere) eller iTunes (i macOS 10.14 eller eldre) oppretter en kryptert sikkerhetskopi og denne lagres på samme datamaskin som sikkerhetskopier av enheten. Det opprettes et nytt nøkkeletui med et nytt nøkkelsett, og de sikkerhetskopierte dataene krypteres på nytt til disse nye nøklene. Som forklart tidligere blir nøkkelringobjekter som er ikke-migrerende, værende innpakket med den UID-avledede nøkkelen. Dermed kan de gjenopprettes til enheten som de opprinnelig ble sikkerhetskopiert fra, men det er umulig å få tilgang til dem på en annen enhet.
Nøkkeletuiet, som beskyttes av passordsettet, kjøres gjennom 10 millioner iterasjoner av nøkkelavledingsfunksjonen PBKDF2. Til tross for det store antallet iterasjoner, er det ingen tilknytninger til en bestemt enhet, og et brute-force-angrep som skjer parallelt mot mange datamaskiner kan derfor teoretisk forsøkes utført på nøkkeletuiet for sikkerhetskopiering. Denne trusselen kan reduseres med et sterkt nok passord.
Hvis en bruker velger å ikke kryptere sikkerhetskopien, krypteres ikke filene uansett hvilken databeskyttelsesklasse de har, men nøkkelringen er fortsatt beskyttet med en UID-avledet nøkkel. Dette er grunnen til at nøkkelringobjekter migrerer til en ny enhet kun hvis det er angitt et passord for sikkerhetskopiering.
Deponeringsnøkkeletuiet
Deponeringsnøkkeletuiet brukes til å synkronisere med Finder (macOS 10.15 eller nyere) eller iTunes (i macOS 10.14 eller eldre) via USB og MDM. Dette nøkkeletuiet gjør det mulig for Finder eller iTunes å sikkerhetskopiere og synkronisere uten å be brukeren om å oppgi koden, og det gjør det mulig for en MDM-løsning å fjernslette brukerens kode. Det lagres på datamaskinen som brukes til å synkronisere med Finder eller iTunes, eller på MDM-løsningen som fjernadministrerer enheten.
Deponeringsnøkkeletuiet forbedrer brukeropplevelsen under enhetssynkronisering, som kan kreve tilgang til alle dataklasser. Når en enhet som er låst med kode, kobles til Finder eller iTunes for første gang, bes brukeren om å oppgi koden. Enheten oppretter deretter et deponeringsnøkkeletui som inneholder nøklene i samme klasse som de som brukes på enheten, som beskyttes av en nøkkel som nettopp er blitt generert. Deponeringsnøkkeletuiet og nøkkelen som beskytter det, deles mellom enheten og verten eller tjeneren, og dataene lagres på enheten i klassen «Beskyttet til første brukerautentisering». Dette er grunnen til at koden på enheten må oppgis før brukeren tar sikkerhetskopi ved hjelp av Finder eller iTunes for første gang etter en omstart.
Hvis det er en over-the-air (OTA)-programvareoppdatering, blir brukeren bedt om å oppgi koden ved igangsetting av oppdateringen. Dette brukes til å opprette et kjennetegn for engangsopplåsing på en sikker måte. Det låser opp brukernøkkeletuiet etter oppdateringen. Dette kjennetegnet kan ikke genereres uten at brukerens kode oppgis, og eventuelle kjennetegn som er generert tidligere, blir ugyldiggjort hvis brukeren endrer koden på enheten.
Kjennetegn for engangsopplåsing er for installering av en programvareoppdatering som utføres enten i forgrunnen eller i bakgrunnen. De krypteres med en nøkkel som er avledet fra gjeldende verdi til en monoton teller i Secure Enclave, nøkkeletuiets UUID og UID-en til Secure Enclave.
På A9-SoC-er (eller nyere) bruker ikke kjennetegnet for engangsopplåsing lenger tellere eller Effaceable Storage. Det er i stedet beskyttet av Secure Enclave-kontrollert anti-repetisjonsverdi.
Kjennetegnet for engangsopplåsing for programvareoppdateringer i forgrunnen utløper etter 20 minutter. I iOS 13 og iPadOS 13.1 eller nyere oppbevares kjennetegnet separat og beskyttes av Secure Enclave. Før iOS 13 ble dette kjennetegnet eksportert fra Secure Enclave og skrevet til Effaceable Storage, eller det ble beskyttet av Secure Enclaves anti-repetisjonsmekanisme. En retningslinje-tidtaker økte telleren trinnvis hvis enheten ikke hadde startet på nytt i løpet av 20 minutter.
Programvareoppdateringer i bakgrunnen skjer når systemet oppdager at en oppdatering er tilgjengelig og når ett av følgende er sant:
automatiske oppdateringer konfigureres i iOS 12 eller nyere
brukeren velger Installer senere ved varsel om oppdateringen
Etter at brukeren angir koden, genereres et kjennetegn for engangsopplåsing som kan forbli gyldig i Secure Enclave i opptil 8 timer. Hvis oppdateringen ennå ikke har funnet sted, ødelegges dette kjennetegnet for engangsopplåsing på alle låser og gjenopprettes for hver etterfølgende opplåsing. Hver opplåsing starter 8-timersperioden på nytt. Etter 8 timer vil en retningslinje-tidtaker gjøre kjennetegnet for engangsopplåsing ugyldig.
Nøkkeletuiet for iCloud-sikkerhetskopiering
Nøkkeletuiet for iCloud-sikkerhetskopiering ligner nøkkeletuiet for sikkerhetskopiering. Alle klassenøkler i dette nøkkeletuiet er asymmetriske (bruker Curve25519, i likhet med databeskyttelsesklassen Beskytt hvis de ikke er åpne). Det brukes også et asymmetrisk nøkkeletui til å beskytte den sikkerhetskopierte nøkkelringen for gjenoppretting av iCloud-nøkkelring.