Nyckelsamlingar för dataskydd
I iOS, iPadOS, tvOS och watchOS samlas nycklarna till både filens och nyckelringens dataskyddsklasser in och hanteras i nyckelsamlingar. Dessa operativsystem använder följande nyckelsamlingar: användare, enhet, säkerhetskopia, deponerad och iCloud-säkerhetskopia.
Användarnyckelsamling
Användarnyckelsamlingen är den nyckelsamling där de paketerade klassnycklarna som används vid normal körning av enheten förvaras. När användaren exempelvis anger en lösenkod läses NSFileProtectionComplete in från användarnyckelsamlingen och packas upp. Det är en binär egenskapslistfil (.plist) som lagras i klassen No Protection.
För enheter med SoC äldre än A9 är innehållet i .plist-filen krypterat med en nyckel som finns i ett raderingsbart lagringsutrymme. För att skydda nyckelsamlingarna raderas och omskapas den här nyckeln varje gång en användare ändrar sin lösenkod.
För enheter med A9 eller senare SoC:er innehåller .plist-filen en nyckel som indikerar att nyckelsamlingen lagras i ett utrymme som skyddas av det Secure Enclave-styrda anti-replay-värdet.
Secure Enclave hanterar användarnyckelsamlingen och kan svara på sökningar angående enhetens låsningsstatus. Det rapporterar att enheten är upplåst endast om alla klassnycklarna i användarnyckelsamlingen är tillgängliga och har packats upp.
Enhetsnyckelsamling
Enhetsnyckelsamlingen används till att förvara de paketerade klassnycklarna som används vid åtgärder som innehåller enhetsspecifika data. iPadOS-enheter som har konfigurerats för delad användning behöver ibland få tillgång till inloggningsuppgifter innan en användare har loggat in. Därför krävs det en nyckelsamling som inte är skyddad med användarens lösenkod.
iOS och iPadOS har inte stöd för kryptografisk uppdelning av filsystemsinnehåll per användare, vilket betyder att systemet använder klassnycklar från enhetsnyckelsamlingen till att paketera filnycklar. Nyckelringen använder däremot klassnycklar från användarnyckelsamlingen till att skydda objekt i användarens nyckelring. På iPhone-och iPad-enheter som har konfigurerats för att användas av endast en användare (den förvalda konfigurationen) är enhetsnyckelsamlingen densamma som användarnyckelsamlingen och båda skyddas av användarens lösenkod.
Nyckelsamlingen för säkerhetskopiering
Nyckelsamlingen för säkerhetskopiering skapas när en krypterad säkerhetskopia görs i Finder (i macOS 10.15 eller senare) eller i iTunes (macOS 10.14 eller tidigare) och sparas på den dator som enheten säkerhetskopieras till. I samband med detta skapas en ny nyckelsamling med en ny uppsättning nycklar och säkerhetskopierade data krypteras om med de nya nycklarna. Som beskrivits tidigare förblir icke-flyttbara nyckelringsobjekt paketerade tillsammans med den UID-härledda nyckeln. Det innebär att de kan återskapas till den enhet som de ursprungligen säkerhetskopierades från, men inte är tillgängliga på andra enheter.
Nyckelsamlingen – skyddad med det inställda lösenordet – kör genom 10 miljoner iterationer av nyckelhärledningsfunktion PBKDF2. Trots det höga iterationsantalet finns det ingen koppling till en specifik enhet, och därför skulle ett automatiserat intrångsförsök som körs parallellt på många datorer teoretiskt sett kunna utföras på nyckelsamlingen för säkerhetskopiering. Den här typen av hot kan undvikas med ett tillräckligt starkt lösenord.
Om användaren väljer att inte kryptera säkerhetskopian krypteras inte några av filerna, oavsett deras dataskyddsklass, men nyckelringen skyddas fortfarande med en UID-härledd nyckel. Det är därför nyckelringsobjekt bara flyttas till en ny enhet om användaren har ställt in ett lösenord för säkerhetskopiering.
Deponerad nyckelsamling
Den deponerade nyckelsamling används för synkronisering med Finder (i macOS 10.15 eller senare) eller iTunes (macOS 10.14 eller tidigare) via USB och MDM. Med den här nyckelsamlingen kan Finder eller iTunes säkerhetskopiera och synkronisera utan att användaren behöver ange någon lösenkod. Den tillåter också att en MDM-lösning kan fjärradera en användares lösenkod. Samlingen förvaras på datorn som används till att synkronisera med Finder eller iTunes, eller i MDM-lösningen som fjärradministrerar enheten.
En deponerad nyckelsamling ger en bättre användarupplevelse vid synkronisering av enheter eftersom det då kan krävas tillgång till alla dataklasser. När en enhet med lösenkodslås ansluts till Finder eller iTunes för första gången blir användaren ombedd att ange lösenkoden. Enheten skapar sedan en deponerad nyckelsamling som innehåller samma klassnycklar som de som används på enheten, skyddade av en ny nyckel. Den deponerade nyckelsamlingen och nyckeln som skyddar den delas upp mellan enheten och värden eller servern. Data lagras på enheten i klassen Protected Until First User Authentication. Det är därför användaren måste ange lösenkoden till enheten innan den säkerhetskopieras med Finder eller iTunes första gången efter en omstart.
Om det rör sig om en trådlös programuppdatering uppmanas användaren att ange sin lösenkod när uppdateringen startas. Denna används till att skapa en engångsupplåsningstoken som låser upp användarnyckelsamlingen efter uppdateringen. Denna token går inte att generera utan att användarens lösenkod anges, och en eventuellt tidigare genererad token blir ogiltig om användarens lösenkod ändras.
En engångsupplåsningstoken är avsedd för antingen övervakad eller oövervakad installation av en programuppdatering. Den krypteras med en nyckel som härleds från det aktuella värdet av en monoton räknare i Secure Enclave, nyckelsamlingens UUID och Secure Enclaves UID.
På SoC:er med A9 (eller senare) är engångsupplåsningstoken inte längre beroende av räknare eller raderingsbart lagringsutrymme. Istället skyddas den av ett Secure Enclave-styrt anti-replay-värde.
En engångsupplåsningstoken för övervakade programuppdateringar upphör att gälla efter 20 minuter. I iOS 13 och iPadOS 13.1 eller senare lagras token i ett utrymme som skyddas av Secure Enclave. Före iOS 13 exporterades denna token från Secure Enclave och sparades i det raderingsbara lagringsutrymmet eller skyddades av Secure Enclaves anti-replay-mekanism. En policytimer räknade upp räknaren om enheten inte hade startat om inom 20 minuter.
Oövervakade programuppdateringar sker när systemet upptäcker att det finns en uppdatering och när något av följande är sant:
Automatiska uppdateringar är konfigurerade i iOS 12 eller senare.
Användaren väljer Installera senare när det visas ett meddelande om uppdateringen.
När användaren anger sin lösenkod skapas en engångsupplåsningstoken som är giltig i upp till åtta timmar i Secure Enclave. Så länge uppdateringen inte har installerats förstörs denna engångsupplåsningstoken vid varje låsning och återskapas vid varje efterföljande upplåsning. Varje upplåsning startar om nedräkningen på åtta timmar. Efter åtta timmar gör en policytimer denna engångsupplåsningstoken ogiltig.
Nyckelsamlingen för iCloud-säkerhetskopiering
Nyckelsamlingen för iCloud-säkerhetskopiering liknar nyckelsamlingen för säkerhetskopiering. Alla klassnycklar i denna nyckelsamling är asymmetriska (de använder Curve25519, precis som dataskyddsklassen Protected Unless Open). En asymmetrisk nyckelsamling används även till att skydda den säkerhetskopierade nyckelringen för återställning av iCloud-nyckelring.