Secure Enclave
El Secure Enclave es un subsistema seguro dedicado que está disponible en las versiones más recientes de iPhone, iPad, Mac, Apple TV, Apple Watch y HomePod.
Descripción general
El Secure Enclave es un subsistema seguro dedicado que está integrado en los sistemas en chip (SoC) de Apple. El Secure Enclave se encuentra aislado del procesador principal para brindar una capa adicional de seguridad, y está diseñado para mantener seguros los datos confidenciales del usuario incluso cuando se transgrede el kernel del procesador de aplicaciones. Sigue los mismos principios que el SoC: una ROM de arranque que establece una raíz de confianza del hardware, un motor AES para realizar operaciones criptográficas eficientes y seguras, y memoria protegida. Aunque el Secure Enclave no incluye almacenamiento, cuenta con un mecanismo que permite almacenar información de forma segura en un almacenamiento adjunto separado del almacenamiento flash NAND utilizado por el procesador de aplicaciones y el sistema operativo.
El Secure Enclave es una característica del hardware de la mayoría de las versiones de iPhone, iPad, Mac, Apple TV, Apple Watch y HomePod, en concreto:
iPhone 5s o modelos posteriores
iPad Air o modelos posteriores
Computadoras Mac con Apple Chip
Computadoras MacBook Pro con Touch Bar (2016 y 2017) que cuentan con el chip T1 de Apple
Computadoras Mac basadas en Intel que cuentan con el chip de seguridad T2 de Apple
Apple TV HD o modelos posteriores
Apple Watch Series 1 o modelos posteriores
HomePod y HomePod mini
Procesador Secure Enclave
El procesador Secure Enclave proporciona la potencia informática principal del Secure Enclave. Para proporcionar el aislamiento más potente, el procesador Secure Enclave se utiliza exclusivamente para el Secure Enclave. Esto ayuda a prevenir ataques de canal lateral que dependen de software malicioso que comparte el mismo núcleo de ejecución que el software que se ataca.
El procesador Secure Enclave ejecuta una versión personalizada de Apple del microkernel L4 y está diseñado para funcionar de manera eficiente a una velocidad de reloj más baja, lo que ayuda a protegerlo contra ataques de energía y reloj. El procesador Secure Enclave, a partir del A11 y el S4, incluye un motor de memoria protegida y una memoria encriptada con funcionalidades antirreproducción, arranque seguro, un generador de números aleatorios dedicado y su propio motor AES.
Motor de protección de memoria
El Secure Enclave opera desde una sección dedicada de la memoria DRAM del dispositivo. La memoria protegida del Secure Enclave se encuentra aislada del procesador de aplicaciones mediante varias capas de protección.
Cuando el dispositivo arranca, la ROM de arranque del Secure Enclave genera una clave de protección de memoria efímera y aleatoria para el motor de protección de memoria. Siempre que el Secure Enclave escribe en su sección de memoria dedicada, el motor de protección de memoria encripta el bloque de memoria usando AES en el modo XEX (xor-encrypt-xor) de la Mac y calcula una etiqueta de autenticación CMAC (código de autenticación de mensajes basado en encriptado) para la memoria. El motor de protección de memoria almacena una etiqueta de autenticación junto con la memoria encriptada. Cuando el Secure Enclave lee la memoria, el motor de protección de memoria verifica la etiqueta de autenticación. Si la etiqueta coincide, el motor de protección de memoria desencripta el bloque de memoria; si no coincide, el motor avisa de un error al Secure Enclave. Si ocurre un error de autenticación de memoria, el Secure Enclave deja de aceptar solicitudes hasta que el sistema se reinicie.
A partir de los SoC A11 y S4 de Apple, el motor de protección de memoria agrega protección de reproducción para la memoria del Secure Enclave. Para ayudar a evitar la reproducción de datos críticos para la seguridad, el motor de protección de memoria almacena un número único e irrepetible, llamado valor de antirreproducción, para el bloque de memoria junto con la etiqueta de autenticación. El valor de antirreproducción se utiliza como una modificación adicional para la etiqueta de autenticación de CMAC. Los valores de antirreproducción de todos los bloques de memoria están protegidos mediante un árbol de integridad establecido en una SRAM dedicada dentro del Secure Enclave. Para la escritura, el motor de protección de memoria actualiza el valor de antirreproducción y cada nivel del árbol de integridad hasta llegar a la SRAM. Para la lectura, el motor de protección de memoria verifica el valor de antirreproducción y cada nivel del árbol de integridad hasta llegar a la SRAM. Las discrepancias de los valores de antirreproducción se manejan de forma similar a las discrepancias de las etiquetas de autenticación.
En los SoC A14, M1 y modelos posteriores de Apple, el motor de protección de memoria admite dos claves de protección de memoria efímeras. La primera se usa para los datos privados a los que no accede el Secure Enclave, y la segunda es para los datos que se comparten con el motor neuronal seguro.
El motor de protección de memoria funciona de forma transparente y alineado con el Secure Enclave. El Secure Enclave lee y escribe en la memoria como si fuera una DRAM regular sin encriptar, mientras que un observador fuera del Secure Enclave sólo ve la versión encriptada y autenticada de la memoria. Esto ofrece una protección robusta de la memoria sin necesidad de afectar el rendimiento o aumentar la complejidad del software.
ROM de arranque del Secure Enclave
El Secure Enclave incluye una ROM de arranque dedicada para el Secure Enclave. Parecida a la ROM de arranque del procesador de aplicaciones, la ROM de arranque del Secure Enclave es un código inmutable que establece la ruta de confianza del hardware para el Secure Enclave.
Durante el arranque del sistema, iBoot asigna una región dedicada de la memoria para el Secure Enclave. Antes de usar la memoria, la ROM de arranque del Secure Enclave inicializa el motor de protección de memoria para ofrecer protección criptográfica a la memoria protegida del Secure Enclave.
Entonces, el procesador de aplicaciones envía la imagen sepOS a la ROM de arranque del Secure Enclave. Después de copiar la imagen sepOS en la memoria protegida del Secure Enclave, la ROM de arranque del Secure Enclave revisa el hash criptográfico y la firma de la imagen para verificar que el sepOS tenga autorización para ejecutarse en el dispositivo. Si la imagen sepOS cuenta con la firma adecuada para ejecutarse en el dispositivo, la ROM de arranque del Secure Enclave transfiere el control al sepOS. Si la firma no es válida, la ROM de arranque del Secure Enclave está diseñada para impedir cualquier uso posterior del Secure Enclave hasta el siguiente reinicio del chip.
En los SoC A10 y modelos posteriores de Apple, la ROM de arranque del Secure Enclave bloquea un hash del sepOS en un registro dedicado a este fin. El acelerador de claves públicas utiliza este hash para claves vinculadas al sistema operativo.
Monitor de arranque del Secure Enclave
En los SoC A13 y modelos posteriores de Apple, el Secure Enclave incluye un monitor de arranque diseñado para garantizar una integridad más sólida en el hash del sepOS arrancado.
Durante el arranque del sistema, la configuración de la protección de la integridad del coprocesador del sistema (SCIP) del procesador del Secure Enclave ayuda a evitar que este ejecute cualquier código que no sea la ROM de arranque del Secure Enclave. El monitor de arranque ayuda a evitar que el Secure Enclave modifique la configuración de SCIP directamente. Para hacer que el sepOS cargado sea ejecutable, la ROM de arranque del Secure Enclave envía al monitor de arranque una solicitud con la dirección y el tamaño del sepOS cargado. Al recibir la solicitud, el monitor de arranque restablece el procesador del Secure Enclave, aplica un hash al sepOS cargado, actualiza la configuración del SCIP para permitir la ejecución del sepOS cargado, e inicia la ejecución dentro del código recién cargado. A medida que el sistema arranca, este mismo proceso se utiliza cada vez que hay código nuevo disponible para ejecutarse. Cada vez, el monitor de arranque actualiza un hash en ejecución del proceso de arranque. El monitor de arranque también incluye parámetros de seguridad críticos en el hash en ejecución.
Cuando se completa el arranque, el monitor de arranque finaliza el hash en ejecución y lo envía al acelerador de claves públicas para usarlo con las claves vinculadas al sistema operativo. Este proceso está diseñado de tal forma que la vinculación de la clave al sistema operativo no se puede omitir incluso con una vulnerabilidad en la ROM de arranque del Secure Enclave.
Generador de números aleatorios verdaderos
El generador de números aleatorios verdaderos (TRNG) se usa para generar datos aleatorios seguros. El Secure Enclave usa el TRNG cada vez que genera una clave criptográfica aleatoria, una semilla aleatoria de clave u otra entropía. El TRNG se basa en varios osciladores de anillo posprocesados con CTR_DRBG (un algoritmo basado en encriptados de bloque en modo contador).
Claves criptográficas de raíz
El Secure Enclave incluye una clave criptográfica raíz de identificador único (UID). El UID es único para cada dispositivo y no está relacionado con ningún otro identificador de este.
Un UID generado de forma aleatoria se vincula al SoC al momento de su fabricación. A partir de los SoC A9, el TRNG del Secure Enclave genera el UID durante la fabricación y este se escribe en los fusibles mediante un proceso de software que se ejecuta completamente en el Secure Enclave. Este proceso protege el UID para que no sea visible fuera del dispositivo durante la fabricación y, por lo tanto, que no esté disponible para su acceso o almacenamiento por parte de Apple o de ninguno de sus proveedores.
El sepOS usa el UID para proteger secretos específicos del dispositivo. El UID permite vincular los datos a un dispositivo determinado mediante encriptación. Por ejemplo, la jerarquía de claves que protege el sistema de archivos incluye el UID, de modo que si el almacenamiento SSD interno se traslada físicamente de un dispositivo a otro, no será posible acceder a los archivos. Otros elementos secretos protegidos específicos del dispositivo incluyen los datos de Face ID o Touch ID. En una Mac, sólo el almacenamiento completamente interno vinculado al motor AES recibe este nivel de encriptado. Por ejemplo, ni los dispositivos de almacenamiento externo conectados mediante USB ni el almacenamiento basado en PCIe agregado a la Mac Pro (2019) se encriptan de esta manera.
El Secure Enclave también tiene un ID de grupo de dispositivos (GID) que es común a todos los dispositivos que usan un SoC determinado (por ejemplo, todos los dispositivos que usan el SoC A15 de Apple comparten el mismo GID).
Los UID y GID no están disponibles a través del grupo de acción de pruebas conjuntas (JTAG) u otras interfaces de depuración.
Motor AES del Secure Enclave
El motor AES del Secure Enclave es un bloque de hardware que se utiliza para realizar criptografía simétrica basada en el encriptado AES. Este motor está diseñado para resistir la fuga de información a través de la sincronización y el análisis de potencia estática (SPA). A partir del SoC A9, el motor AES también incluye medidas para contrarrestar el análisis dinámico de potencia (DPA).
El motor AES admite claves de hardware y software. Las claves de hardware derivan del UID o GID del Secure Enclave. Estas claves permanecen dentro del motor AES y no se hacen visibles ni siquiera para el software sepOS. Aunque el software puede solicitar operaciones de encriptado y desencriptado con claves de hardware, no puede extraer las claves.
En los SoC A10 y modelos posteriores de Apple, el motor AES incluye bits semilla bloqueables que diversifican las claves derivadas del UID o GID. Esto permite que el acceso a los datos esté condicionado al modo de funcionamiento del dispositivo. Por ejemplo, los bits semilla bloqueables se usan para denegar el acceso a datos protegidos por contraseña cuando se arranca en el modo de actualización del firmware del dispositivo (DFU). Para obtener más información, consulta Códigos y contraseñas.
Motor AES
Todos los dispositivos Apple con Secure Enclave también cuentan con un motor criptográfico AES256 (el “motor AES”) integrado directamente en la ruta de acceso directo a memoria (DMA), entre el almacenamiento flash NAND (no volátil) y la memoria del sistema principal. Esto permite conseguir una encriptación de archivos muy eficiente. En los procesadores A9 y modelos posteriores de la serie A, el subsistema de almacenamiento flash se encuentra en un bus aislado que sólo tiene acceso a la memoria que contiene los datos del usuario mediante el motor de encriptado DMA.
En el momento del arranque, sepOS genera una clave de encapsulación efímera usando el TRNG. El Secure Enclave transmite esta clave al motor AES mediante cables dedicados diseñados para evitar que cualquier software fuera del Secure Enclave acceda a ella. El sepOS puede usar la clave de encapsulado efímera para encapsular las claves de archivo para que las utilice el controlador del sistema de archivos del procesador de aplicaciones. Cuando el controlador del sistema de archivos lee o escribe un archivo, envía la clave encapsulada al motor AES, que desencapsula la clave. El motor AES nunca expone la clave desencapsulada al software.
Nota: el motor AES es un componente independiente del Secure Enclave y del motor AES del Secure Enclave, pero su funcionamiento está estrechamente vinculado al Secure Enclave, como se muestra a continuación.
Acelerador de claves públicas
El acelerador de claves públicas (PKA) es un bloque de hardware utilizado para realizar operaciones de criptografía asimétrica. El PKA admite algoritmos de encriptado y firma RSA y ECC (criptografía de curva elíptica). El PKA está diseñado para resistir la filtración de información a través de ataques de tiempo y de canal lateral como SPA y DPA.
El PKA admite claves de software y hardware. Las claves de hardware derivan del UID o GID del Secure Enclave. Estas claves permanecen dentro del PKA y no se hacen visibles ni siquiera para el software sepOS.
A partir de los SoC A13, se ha demostrado mediante técnicas de verificación formales que las implementaciones de encriptado de PKA son matemáticamente correctas.
En los SoC A10 y modelos posteriores de Apple, el PKA admite claves vinculadas al sistema operativo, a lo que se le conoce también como protección de claves selladas (SKP). Estas claves se generan mediante una combinación del UID del dispositivo y el hash del sepOS que se ejecuta en el dispositivo. El hash lo proporciona la ROM de arranque del Secure Enclave, o bien el monitor de arranque del Secure Enclave en el caso de los SoC A13 y modelos posteriores de Apple. Estas claves también se utilizan para verificar la versión del sepOS cuando se realizan solicitudes a algunos servicios de Apple, y también se utilizan para mejorar la seguridad de los datos protegidos con código al ayudar a prevenir el acceso al material de codificación si se realizan cambios críticos en el sistema sin la autorización del usuario.
Almacenamiento no volátil seguro
El Secure Enclave está equipado con un dispositivo de almacenamiento seguro no volátil dedicado. El almacenamiento seguro no volátil se conecta al Secure Enclave mediante un bus I2C dedicado, de modo que sólo el Secure Enclave puede acceder a él. Todas las claves de encriptado de datos de usuario tienen su raíz en la entropía almacenada en el almacenamiento no volátil del Secure Enclave.
En los dispositivos con los SoC A12, S4 y modelos posteriores de Apple, el Secure Enclave está enlazado con un componente de almacenamiento seguro para el almacenamiento de entropía. El componente de almacenamiento seguro está diseñado con un código de ROM inmutable, un generador de números aleatorios de hardware, una clave criptográfica única por dispositivo, motores de criptografía y detección de manipulación física. El Secure Enclave y el componente de almacenamiento seguro se comunican mediante un protocolo encriptado y autenticado que ofrece acceso exclusivo a la entropía.
Los dispositivos lanzados por primera vez en el otoño de 2020 y los modelos posteriores están equipados con un componente de almacenamiento seguro de segunda generación. Este componente agrega cajas de seguridad de conteo. Cada caja de seguridad de conteo almacena un valor de sal de 128 bits, un verificador de código de 128 bits, un contador de 8 bits y un valor máximo de intento de 8 bits. El acceso a las cajas de seguridad de conteo se realiza mediante un protocolo encriptado y autenticado.
Las cajas de seguridad de conteo contienen la entropía necesaria para desbloquear los datos de usuario protegidos con código. Para acceder a los datos del usuario, el Secure Enclave enlazado debe derivar el valor de entropía del código correcto a partir del código del usuario y el UID del Secure Enclave. El código del usuario no se puede obtener mediante los intentos de desbloqueo enviados desde una fuente que no sea el Secure Enclave enlazado. Si se excede el límite de intentos de ingreso de código (por ejemplo, 10 intentos en el iPhone), el componente de almacenamiento seguro borra por completo los datos protegidos con código.
Para crear una caja de seguridad de conteo, el Secure Enclave envía al componente de almacenamiento seguro el valor de entropía de código y el de intento máximo. El componente de almacenamiento seguro genera el valor de sal utilizando su generador de números aleatorios; después, deriva un valor de verificación de código y un valor de entropía de caja de seguridad a partir de la entropía de código proporcionada, la clave criptográfica única del componente de almacenamiento seguro y el valor de sal. El componente de almacenamiento seguro inicializa la caja de seguridad de conteo con un recuento de 0, el valor de intento máximo, el valor de verificación de código derivado y el valor de sal. El componente de almacenamiento seguro entonces devuelve el valor de entropía de caja de seguridad generado al Secure Enclave.
Para obtener posteriormente el valor de entropía de una caja de seguridad de conteo, el Secure Enclave envía la entropía de código al componente de almacenamiento seguro. El componente de almacenamiento seguro primero incrementa el contador de la caja de seguridad. Si el contador incrementado excede el valor de intentos máximo, el componente de almacenamiento seguro borra completamente la caja de seguridad de conteo. Si no se ha alcanzado el conteo de intentos máximo, el componente de almacenamiento seguro intenta derivar el valor de verificación de código y el valor de entropía de caja de seguridad con el mismo algoritmo utilizado para crear la caja de seguridad del conteo. Si el valor de verificación de código derivado coincide con el valor almacenado, el componente de almacenamiento seguro devuelve el valor de entropía de caja de seguridad al Secure Enclave y restablece el contador a 0.
Las claves que se utilizan para acceder a los datos protegidos con contraseña se basan en la entropía almacenada en las cajas de seguridad de conteo. Para obtener más información, consulta Descripción general de la protección de datos.
El almacenamiento seguro no volátil se utiliza para todos los servicios antirreproducción en el Secure Enclave. Los servicios antirreproducción en el Secure Enclave se utilizan para la revocación de datos sobre eventos que marcan los límites de la antirreproducción, entre los que se incluyen:
Cambiar el código
Activar o desactivar Face ID o Touch ID
Agregar o eliminar una cara de Face ID o una huella de Touch ID
Restablecer Face ID o Touch ID
Agregar o eliminar una tarjeta de Apple Pay
Borrar todo el contenido y la configuración
En arquitecturas que no cuentan con un componente de almacenamiento seguro, la EEPROM (memoria de sólo lectura programable y borrable eléctricamente) se utiliza para ofrecer servicios de almacenamiento seguro para el Secure Enclave. Al igual que los componentes de almacenamiento seguro, la EEPROM se adjunta y se puede acceder sólo desde el Secure Enclave, pero no contiene funcionalidades de seguridad de hardware dedicadas ni garantiza el acceso exclusivo a la entropía (aparte de sus características de conexión física) ni la funcionalidad de la caja de seguridad de conteo.
Motor neuronal seguro
En dispositivos con Face ID (no Touch ID), el motor neuronal seguro convierte imágenes 2D y mapas de profundidad en representaciones matemáticas de la cara del usuario.
En los SoC del A11 al A13, el motor neuronal seguro se encuentra integrado en el Secure Enclave. El motor neuronal seguro utiliza acceso directo a memoria (DMA) para obtener un alto rendimiento. Una unidad de administración de memoria de entrada-salida (IOMMU) bajo el control del kernel del sepOS limita este acceso directo a las regiones de memoria autorizadas.
A partir del SoC A14, M1 o modelos posteriores, el motor neuronal seguro se implementa como un modo seguro en el motor neuronal del procesador de aplicaciones. Un controlador de seguridad de hardware dedicado cambia entre el procesador de aplicaciones y las tareas del Secure Enclave, lo que restablece el estado del motor neuronal en cada transición para mantener seguros los datos de Face ID. Un motor dedicado aplica el encriptado, autenticación y control de acceso de la memoria. Al mismo tiempo, utiliza una clave criptográfica y un rango de memoria separados para limitar el motor neuronal seguro a las regiones de memoria autorizadas.
Monitores de energía y reloj
Todos los componentes electrónicos están diseñados para funcionar dentro de un voltaje y una envolvente de frecuencia limitados. Cuando se opera fuera de esta envolvente, los componentes electrónicos pueden fallar y luego podrían anularse los controles de seguridad. Para ayudar a garantizar que el voltaje y la frecuencia permanezcan en un intervalo seguro, el Secure Enclave está diseñado con circuitos de monitoreo. Estos circuitos están diseñados para tener una envolvente operativa mucho mayor que el resto del Secure Enclave. Si los monitores detectan un punto de funcionamiento ilegal, los relojes del Secure Enclave se detienen automáticamente y no se reinician hasta el próximo reinicio del SoC.
Resumen de funciones del Secure Enclave
Nota: los productos A12, A13, S4 y S5 lanzados por primera vez en el otoño de 2020 tienen un componente de almacenamiento seguro de segunda generación, mientras que los productos anteriores basados en estos SoC tienen un componente de almacenamiento seguro de primera generación.
SoC | Motor de protección de memoria | Almacenamiento seguro | Motor AES | PKA |
---|---|---|---|---|
A8 | Encriptado y autenticación | EEPROM | Sí | No |
A9 | Encriptado y autenticación | EEPROM | Protección DPA | Sí |
A10 | Encriptado y autenticación | EEPROM | Protección DPA y bits semilla bloqueables | Claves vinculadas al sistema operativo |
A11 | Encriptado, autenticación y prevención de reproducciones | EEPROM | Protección DPA y bits semilla bloqueables | Claves vinculadas al sistema operativo |
A12 (dispositivos Apple lanzados antes del otoño de 2020) | Encriptado, autenticación y prevención de reproducciones | Componente de almacenamiento seguro (generación 1) | Protección DPA y bits semilla bloqueables | Claves vinculadas al sistema operativo |
A12 (dispositivos Apple lanzados después del otoño de 2020) | Encriptado, autenticación y prevención de reproducciones | Componente de almacenamiento seguro (generación 2) | Protección DPA y bits semilla bloqueables | Claves vinculadas al sistema operativo |
A13 (dispositivos Apple lanzados antes del otoño de 2020) | Encriptado, autenticación y prevención de reproducciones | Componente de almacenamiento seguro (generación 1) | Protección DPA y bits semilla bloqueables | Claves vinculadas al sistema operativo y monitor de arranque |
A13 (dispositivos Apple lanzados después del otoño de 2020) | Encriptado, autenticación y prevención de reproducciones | Componente de almacenamiento seguro (generación 2) | Protección DPA y bits semilla bloqueables | Claves vinculadas al sistema operativo y monitor de arranque |
A14–A17 | Encriptado, autenticación y prevención de reproducciones | Componente de almacenamiento seguro (generación 2) | Protección DPA y bits semilla bloqueables | Claves vinculadas al sistema operativo y monitor de arranque |
S3 | Encriptado y autenticación | EEPROM | Protección DPA y bits semilla bloqueables | Sí |
S4 | Encriptado, autenticación y prevención de reproducciones | Componente de almacenamiento seguro (generación 1) | Protección DPA y bits semilla bloqueables | Claves vinculadas al sistema operativo |
S5 (dispositivos Apple lanzados antes del otoño de 2020) | Encriptado, autenticación y prevención de reproducciones | Componente de almacenamiento seguro (generación 1) | Protección DPA y bits semilla bloqueables | Claves vinculadas al sistema operativo |
S5 (dispositivos Apple lanzados después del otoño de 2020) | Encriptado, autenticación y prevención de reproducciones | Componente de almacenamiento seguro (generación 2) | Protección DPA y bits semilla bloqueables | Claves vinculadas al sistema operativo |
S6–S9 | Encriptado, autenticación y prevención de reproducciones | Componente de almacenamiento seguro (generación 2) | Protección DPA y bits semilla bloqueables | Claves vinculadas al sistema operativo |
T2 | Encriptado y autenticación | EEPROM | Protección DPA y bits semilla bloqueables | Claves vinculadas al sistema operativo |
M1, M2, M3 | Encriptado, autenticación y prevención de reproducciones | Componente de almacenamiento seguro (generación 2) | Protección DPA y bits semilla bloqueables | Claves vinculadas al sistema operativo y monitor de arranque |