Tutti i dispositivi iOS di spedizione (con la possibile eccezione di AppleTV, che non ha app di terze parti) hanno due file system, implementati come due partizioni nella memoria flash. Il primo è montato in sola lettura e contiene solo il sistema operativo. Il secondo contiene i dati dell'utente: le app installate e i relativi dati di supporto, inclusi documenti e cache. Questa seconda partizione, su iPhone 3GS, iPhone 4, 3a e 4a generazione di iPod Touch e iPad solo è crittografata con una chiave gestita da un chip di crittografia hardware su il PCB del dispositivo. Questa chiave non può essere trapelata direttamente dal chip; anche se non so se ci sono attacchi ai canali laterali.
Quando il dispositivo è acceso, il chip di crittografia sblocca la seconda partizione. Ciò significa che questa crittografia protegge solo i dati a riposo. Infatti, è progettato per supportare la pulizia remota rapida: quando il dispositivo riceve il segnale di cancellazione remota, ripristina semplicemente la chiave.
iOS 4 utilizza separatamente la stessa funzione di crittografia per supportare la sua API di protezione dei file. I file memorizzati con l'opzione NSFileProtectionComplete
sono crittografati sul filesystem e la chiave di decrittografia è disponibile solo mentre il dispositivo è sbloccato . Ciò significa che quando blocchi lo schermo, anche se un'app ha un componente in background ancora in esecuzione, non è possibile accedere ai file protetti.
Nel caso di file protetti, se l'utente ha un passcode configurato, il codice di accesso e la chiave del dispositivo vengono combinati per derivare la chiave di protezione. In realtà, è un po 'più complesso: ogni file è protetto da una chiave separata. Queste chiavi sono protette da una chiave di classe. La chiave di classe è protetta da una chiave derivata dalla chiave hardware e dal codice di accesso. Questo ti dà le seguenti proprietà:
- quando il dispositivo è bloccato, i file sono completamente non disponibili perché il kernel non ha il passcode con cui generare la chiave di sblocco.
- la scoperta della forza bruta del codice di accesso dell'utente deve essere eseguita sul dispositivo, il che rallenta i tentativi.
- la cancellazione remota richiede ancora solo il ripristino del codice del dispositivo.