
Keybager for databeskyttelse
Nøklene for både fil- og nøkkelringdatabeskyttelsesklasser samles inn og administreres i keybager i iOS, iPadOS, macOS, tvOS, visionOS og watchOS. Disse operativsystemene bruker følgende keybager: bruker, enhet, sikkerhetskopiering, depot og iCloud-sikkerhetskopiering.
Bruker-keybag
Bruker-keybagen 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 bruker-keybagen og pakkes ut. Den er en binær liste med egenskaper (.plist)-fil 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 keybagene blir denne nøkkelen slettet og generert på nytt hver gang en bruker endrer koden.
For enheter med SoC-er med A9 eller nyere, S-serien eller M-serien (unntatt Macer) inneholder .plist-filen en nøkkel som indikerer at keybagen oppbevares i et skap som beskyttes av den Secure Enclave-kontrollerte anti-repetisjonsverdien.
For Macer lagres brukerens keybag i Keychains-mappen i en mappe med navnet på maskinvare-UUID-en. Eksempel:
~/Library/Keychains/123ABCDE-45FG-67HI-8910-1JK234L56M78/user.kb
For enheter med Secure Enclave, vil Secure Enclave administrere bruker-keybagen og kan spørres om låsestatusen til en enhet. Den rapporterer at enheten kun låses opp hvis alle klassenøklene i bruker-keybagen:
er tilgjengelige
har blitt pakket ut
Enhets-keybag
Enhets-keybagen brukes til å lagre de innpakkede klassenøklene som brukes til operasjoner som involverer enhetsspesifikke data.
iOS, iPadOS og visionOS støtter ikke kryptografisk separasjon av filsysteminnhold per-bruker, som betyr at systemet bruker klassenøkler fra enhets-keybagen til å pakke per-fil-nøkler. Nøkkelringen bruker imidlertid klassenøklene fra bruker-keybagen til å beskytte objekter i brukernøkkelringen. På iPad- og iPhone-enheter som er konfigurert for bruk av én bruker (standardkonfigurasjonen), er enhets-keybagen og bruker-keybagen den samme, og de er beskyttet av brukerens kode.
Merk: iPad-enheter konfigurert i Delt iPad-modus krever av og til tilgang til akkreditiver før noen brukere har logget på. I slike tilfeller kreves en keybag som ikke er beskyttet av brukerens kode.
Keybagen for sikkerhetskopiering
Keybagen 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 en ny keybag med et nytt nøkkelsett, og de sikkerhetskopierte dataene krypteres på nytt til disse nye nøklene. Som forklart 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.
Keybagen, 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å keybagen 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.
Depot-keybagen
Depot-keybagen brukes til å synkronisere med Finder eller iTunes via USB og en tjeneste for enhetsadministrering. Denne keybagen 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 tjeneste for enhetsadministrering å fjernslette brukerens kode. Det lagres på datamaskinen som brukes til å synkronisere med Finder eller iTunes, eller på tjenesten for enhetsadministrering som fjernadministrerer enheten.
Depot-keybagen 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 en depot-keybag som inneholder nøklene i samme klasse som de som brukes på enheten, som beskyttes av en nøkkel som nettopp er blitt generert. Depot-keybagen og nøkkelen som beskytter den, 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 bruker-keybagen 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, keybagens 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.1, iPadOS 13 og visionOS 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 16 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 16-timersperioden på nytt. Etter 16 timer vil en retningslinje-tidtaker gjøre kjennetegnet for engangsopplåsing ugyldig.
Keybagen for iCloud-sikkerhetskopiering
Keybagen for iCloud-sikkerhetskopiering ligner keybagen for sikkerhetskopiering. Alle klassenøkler i denne keybagen er asymmetriske (bruker Curve25519, i likhet med databeskyttelsesklassen Beskytt hvis de ikke er åpne). Det brukes også en asymmetrisk keybag til å beskytte den sikkerhetskopierte nøkkelringen for gjenoppretting av iCloud-nøkkelring.