Protección de datos en dispositivos Apple
En dispositivos Apple con Protección de datos, cada archivo está protegido por una clave por archivo (o por extensión) única. La clave, envuelta con el algoritmo de encapsulación de claves NIST AED, se envuelve aún más con una de varias claves de clase, dependiendo de cómo se debe acceder al archivo. La clave por archivo encapsulada se almacena luego en los metadatos del archivo.
Los dispositivos con el formato APFS pueden permitir la clonación de archivos (copias sin costo y que utilizan la tecnología de copia al escribir). Si se clona un archivo, cada mitad del archivo clonado obtiene una clave nueva para aceptar escrituras entrantes, de modo que los datos nuevos se escriben en el contenido con una nueva clave. Con el paso del tiempo, el archivo podría estar compuesto de varias extensiones (o fragmentos), y cada una estaría asignada a una clave diferente. Sin embargo, la misma clave de clase protege todas las extensiones que comprenden un archivo.
Si se abre un archivo, sus metadatos se desencriptan con la clave del sistema de archivos, lo que revela la clave por archivo encapsulada y una anotación sobre la clase que lo protege. La clave por archivo (o por extensión) se desencapsula con la clave de clase y, después, se proporciona al motor AES de hardware, que desencripta el archivo cuando se lee en la memoria flash. La administración de claves de archivos encapsulados se realiza en el Secure Enclave; la clave de archivo nunca se expone directamente al procesador de aplicaciones. Durante el arranque, el Secure Enclave negocia una clave efímera con el motor AES. Cuando el Secure Enclave desencapsula las claves de un archivo, estas vuelven a encapsularse con la clave efímera y se vuelven a enviar al procesador de aplicaciones.
Los metadatos de todos los archivos del sistema de archivos del volumen de datos se encriptan con una clave aleatoria para el volumen, que se crea la primera vez que se instala el sistema operativo o cuando un usuario borra el contenido del dispositivo. La clave se encripta y encapsula mediante una clave de encapsulado de claves que sólo conoce el Secure Enclave para almacenamiento a largo plazo. La clave de encapsulado de claves cambia cada vez que el usuario borra su dispositivo. En los SoC A9 y modelos posteriores, el Secure Enclave se basa en la entropía, respaldada por sistemas antirreproducción, para lograr borrabilidad y proteger su clave de encapsulado de claves, entre otros recursos. Para obtener más información, consulta Almacenamiento no volátil seguro.
Igual que las claves por archivo o por extensión, la clave de metadatos del volumen de datos nunca se expone directamente al procesador de aplicaciones; en su lugar, el Secure Enclave proporciona una versión efímera y única a cada arranque. Cuando se almacena, la clave encriptada del sistema de archivos se encapsula de forma adicional mediante una “clave borrable” almacenada en Effaceable Storage o mediante una clave de encapsulado de claves de contenido protegida por el mecanismo antirreproducción del Secure Enclave. Esta clave no proporciona confidencialidad de datos adicional. En cambio, fue diseñada para permitir su borrado rápido por petición (si el usuario usa la opción Borrar todo el contenido y configuración, o si un usuario o administrador envía un comando de borrado remoto desde una solución de administración de dispositivos móviles (MDM), Microsoft Exchange ActiveSync o iCloud). Al borrar la clave de esta manera, todos los archivos quedan criptográficamente inaccesibles.
El contenido de un archivo puede estar encriptado con una o varias claves por archivo (o por extensión) que se encapsulan con una clave de clase y se almacenan en los metadatos de un archivo, el cual está encriptado con la clave del sistema de archivos. La clave de clase se protege con el UID de hardware y, en el caso de algunas clases, con el código del usuario. Esta jerarquía proporciona flexibilidad y rendimiento. Por ejemplo, para cambiar la clase de un archivo, basta con volver a encapsular su clave por archivo para que luego un cambio de código vuelva a encapsular la clave de clase.