En iOS, cada elemento de archivo y llavero está protegido mediante una de las clases de protección . Dependiendo de la clase en particular utilizada, la clave de cifrado para archivos y / o elementos de llavero se calcula de manera diferente, lo que permite (o no) el acceso mientras el dispositivo está bloqueado.
Las clases de protección disponibles son (consulte "Valores de protección de archivos" en " Referencia de clases de NSFileManager ":
* NSFileProtectionNone
: se puede acceder al archivo en cualquier momento, incluso si el dispositivo está bloqueado;
* NSFileProtectionComplete
: se puede acceder al archivo solo cuando el dispositivo está desbloqueado (tenga en cuenta que hay un período de gracia de ~ 10 segundos después de que el dispositivo esté bloqueado durante el cual todavía se puede acceder a los archivos);
* NSFileProtectionCompleteUnlessOpen
: el archivo se puede crear mientras el dispositivo está bloqueado, pero una vez cerrado, solo se puede acceder cuando el dispositivo está desbloqueado;
* NSFileProtectionCompleteUntilFirstUserAuthentication
: se puede acceder al archivo solo si el dispositivo se ha desbloqueado al menos una vez desde el inicio.
Tenga en cuenta que todas las clases, excepto NSFileProtectionNone
, utilizan el código de acceso del usuario para derivar la clave de cifrado real del archivo, por lo que la clave está unida criptográficamente al código de acceso.
Para responder a sus preguntas: NSFileProtectionNone
es lo que permite a iOS acceder a los archivos mientras el dispositivo está bloqueado. Esta es la clase de protección "más débil" de todas y se desaconseja su uso, pero hay casos en que su uso es necesario (como los ejemplos que proporciona). Sí, todos los elementos que menciona se almacenan en el sistema de archivos como en todo lo demás, pero debido a NSFileProtectionNone
están encriptados con una clave que no está asociada a la contraseña y que, por lo tanto, se puede calcular cuando el dispositivo está bloqueado.