In iOS, ogni file e portachiavi è protetto utilizzando una delle classi di protezione . A seconda della particolare classe utilizzata, la chiave di crittografia per file e / o elementi portachiavi viene calcolata in modo diverso, consentendo (o non consentendo) l'accesso mentre il dispositivo è bloccato.
Le classi di protezione disponibili sono (vedi "Valori di protezione dei file" in " Riferimento classe NSFileManager ":
* NSFileProtectionNone
: il file è accessibile in qualsiasi momento, anche se il dispositivo è bloccato;
* NSFileProtectionComplete
: il file è accessibile solo quando il dispositivo è sbloccato (notare che c'è un periodo di tolleranza di ~ 10 secondi dopo che il dispositivo è stato bloccato durante il quale i file sono ancora accessibili);
* NSFileProtectionCompleteUnlessOpen
: il file può essere creato mentre il dispositivo è bloccato, ma una volta chiuso, è possibile accedere solo quando il dispositivo è sbloccato;
* NSFileProtectionCompleteUntilFirstUserAuthentication
: il file è accessibile solo se il dispositivo è stato sbloccato almeno una volta dall'avvio.
Tieni presente che tutte le classi tranne NSFileProtectionNone
utilizzano il codice di accesso dell'utente per derivare la chiave di crittografia file effettiva, quindi la chiave è crittograficamente legata al codice di accesso.
Per rispondere alle tue domande: NSFileProtectionNone
è ciò che consente a iOS di accedere ai file mentre il dispositivo è bloccato. Questa è la classe di protezione "più debole" di tutti e il suo utilizzo è scoraggiato, ma ci sono casi in cui è necessario il suo utilizzo (come gli esempi forniti). Sì, tutti gli elementi che menzioni sono memorizzati nel file system come qualsiasi altra cosa, ma a causa di NSFileProtectionNone
sono crittografati con una chiave che è non legata al codice di accesso e quindi possono essere calcolati quando il dispositivo è bloccato.