Clases de protección de datos
Cuando se crea un archivo nuevo en un dispositivo compatible con la protección de datos, la app que lo crea le asigna una clase. Cada clase utiliza una política diferente para determinar si se puede acceder a los datos. En las secciones siguientes, se describen las clases y políticas básicas. Las computadoras Mac basadas en Apple Chip no son compatibles con la Clase D: Sin protección, y se establece un límite de seguridad para el inicio y el cierre de sesión (no para el bloqueo o desbloqueo, como en iPhone y iPad).
Clase | Tipo de protección |
---|---|
Clase A: Protección completa | NSFileProtectionComplete |
Clase B: Protegido a menos que se abra | NSFileProtectionCompleteUnlessOpen |
Clase C: Protegido hasta la primera autenticación del usuario Nota: macOS usa una clave de volumen para recrear las funcionalidades de protección de FileVault. | NSFileProtectionCompleteUntilFirstUserAuthentication |
Clase D: Sin protección Nota: no es compatible con macOS. | NSFileProtectionNone |
Protección completa
NSFileProtectionComplete: la clave de clase está protegida con una clave creada a partir del código o contraseña de usuario y el UID del dispositivo. Poco después de que el usuario bloquea un dispositivo (10 segundos, si la opción Solicitar contraseña está configurada como Inmediatamente), se descarta la clave de clase desencriptada y ya no se puede acceder a los datos en esa clase hasta que el usuario vuelva a ingresar el código o desbloquee o inicie sesión en el dispositivo utilizando Face ID o Touch ID.
En macOS, poco después de que se cierra la sesión del último usuario, se descarta la clave de clase desencriptada y ya no se podrá acceder a los datos en esa clase hasta que un usuario vuelva a ingresar el código o inicie sesión en el dispositivo utilizando Touch ID.
Protegido a menos que se abra
NSFileProtectionCompleteUnlessOpen: algunos archivos pueden requerir escritura mientras el dispositivo está bloqueado o el usuario tiene cerrada la sesión. Por ejemplo, al descargar un archivo adjunto de correo en segundo plano. Este proceso se logra utilizando la criptografía de curva elíptica asimétrica (ECDH sobre Curve25519). La clave por archivo usual está protegida por una clave derivada utilizando el acuerdo de clave de Diffie‑Hellman de un pase, según se describe en el documento NIST SP 800‑56A.
La clave pública efímera del acuerdo se almacena junto a la clave por archivo encapsulada. KDF hace referencia a la función de derivación de claves de concatenación (alternativa aprobada 1), tal como se describe en el apartado 5.8.1 de la publicación SP 800‑56A del NIST. AlgorithmID se omite; PartyUInfo y PartyVInfo son las claves públicas efímera y estática, respectivamente; mientras que SHA256 se utiliza como función hash. En cuanto se cierra el archivo, la clave por archivo se borra de la memoria. Para volver a abrir el archivo, se vuelve a crear el secreto compartido mediante la clave privada de la clase Protegido a menos que se abra y la clave pública efímera del archivo; que se usan para desencapsular la clave por archivo que luego se usa para desencriptar el archivo.
En macOS, la parte privada de NSFileProtectionCompleteUnlessOpen se puede acceder siempre y cuando un usuario del sistema esté autenticado o tenga iniciada la sesión.
Protegido hasta la primera autenticación del usuario
NSFileProtectionCompleteUntilFirstUserAuthentication: esta clase se comporta del mismo modo que Protección completa, con la diferencia de que la clave de clase desencriptada no se elimina de la memoria al bloquear el dispositivo o cerrar la sesión del usuario. La protección de esta clase tiene propiedades similares a la encriptación de volumen completo de escritorio y protege los datos frente a ataques que impliquen un reinicio. Esta es la clase predeterminada para todos los datos de apps de terceros que no tengan una clase de protección de datos asignada por otra vía.
En macOS, esta clase utiliza una clave de volumen a la que se puede acceder siempre que el volumen esté montado, y actúa igual que FileVault.
Sin protección
NSFileProtectionNone: esta clave de clase está protegida sólo con el UID y se mantiene en el Effaceable Storage. Dado que todas las claves necesarias para desencriptar los archivos de esta clase se almacenan en el dispositivo, la encriptación sólo agrega la ventaja del borrado remoto rápido. Aunque un archivo no tenga asignada una clase de protección de datos, se almacena en formato encriptado (igual que todos los datos de un dispositivo iOS y iPadOS).
Esto no es compatible con macOS.
Nota: en macOS, para los volúmenes que no corresponden a un sistema operativo arrancado, se puede acceder a todas las clases de protección siempre y cuando el volumen esté montado. La clase de protección de datos predeterminada es NSFileProtectionCompleteUntilFirstUserAuthentication. La funcionalidad de claves por extensión está disponible tanto para Rosetta 2 como para apps nativas.