Todos los dispositivos iOS de envío (con la posible excepción del AppleTV, que no tiene aplicaciones de terceros) tienen dos sistemas de archivos, implementados como dos particiones en el almacenamiento flash. El primero está montado de solo lectura y solo contiene el sistema operativo. El segundo contiene datos de usuario: las aplicaciones instaladas y sus datos de respaldo, incluidos documentos y cachés. Esta segunda partición, en el iPhone 3GS, iPhone 4, iPod Touch de 3ª y 4ª generación y el iPad solo está cifrada con una clave administrada por un chip de cifrado de hardware en El PCB del dispositivo. Esta llave no puede ser filtrada directamente del chip; aunque no sé si hay ataques de canal lateral.
Cuando el dispositivo está encendido, el chip de cifrado desbloquea la segunda partición. Esto significa que este cifrado solo protege los datos en reposo. De hecho, está diseñado para admitir el borrado remoto rápido: cuando el dispositivo recibe la señal de borrado remoto, simplemente restablece la clave.
iOS 4 utiliza por separado el mismo servicio de cifrado para admitir su API de protección de archivos. Los archivos almacenados con la opción NSFileProtectionComplete
están cifrados en el sistema de archivos, y la clave de descifrado solo está disponible mientras el dispositivo está desbloqueado . Eso significa que cuando bloquea la pantalla, incluso si una aplicación tiene un componente de fondo que aún se está ejecutando, no se puede acceder a los archivos protegidos.
En el caso de archivos protegidos, si el usuario tiene un código de acceso configurado, el código de acceso y la clave del dispositivo se combinan para obtener la clave de protección. En realidad, es un poco más complejo: cada archivo está protegido por una clave separada. Estas claves están protegidas por una clave de clase. La clave de clase está protegida por una clave derivada de la clave de hardware y el código de acceso. Esto le da las siguientes propiedades:
- cuando el dispositivo está bloqueado, los archivos no están disponibles por completo porque el kernel no tiene el código de acceso con el que se genera la clave de desbloqueo.
- el descubrimiento de fuerza bruta del código de acceso del usuario se debe realizar en el dispositivo, lo que ralentiza los intentos.
- la limpieza remota aún implica simplemente restablecer la clave del dispositivo.