Secure Enclave
Secure Enclave es un subsistema seguro dedicado presente en las versiones más recientes de iPhone, iPad, Mac, Apple TV, Apple Watch y HomePod.
Descripción general
Secure Enclave es un subsistema de seguridad dedicado que se integra en los sistemas en chips (SoC) de Apple. Secure Enclave está aislado del procesador principal para ofrecer una capa adicional de seguridad y está diseñado para mantener la seguridad de los datos sensibles del usuario, aunque el kernel del procesador de aplicaciones se vea comprometido. Sigue los mismos principios de diseño que el SoC: una ROM de arranque para establecer una raíz de confianza de hardware, un motor AES para operaciones criptográficas eficientes y seguras y memoria protegida. Aunque Secure Enclave no incluye almacenamiento, tiene un mecanismo para almacenar información de forma segura en un almacenamiento adjunto independiente del almacenamiento flash NAND que usa el procesador de aplicaciones y el sistema operativo.
Secure Enclave es una característica de hardware de la mayoría de las versiones de iPhone, iPad, Mac, Apple TV, Apple Watch y HomePod; concretamente:
iPhone 5s o posterior
iPad Air o posterior
Ordenadores Mac con chip de Apple
Ordenadores MacBook Pro con Touch Bar (2016 y 2017) con el chip T1 de Apple
Ordenadores Mac basados en Intel con el chip de seguridad T2 de Apple
Apple TV HD o posterior
Apple Watch Series 1 o posterior
HomePod y HomePod mini
Procesador Secure Enclave
El procesador Secure Enclave proporciona la potencia de computación principal para Secure Enclave. Para ofrecer el máximo aislamiento, el procesador Secure Enclave se dedica exclusivamente a los usos de Secure Enclave. Esto ayuda a evitar ataques de canal lateral que dependen de que el software malintencionado comparta el mismo núcleo de ejecución que el software que es objeto del ataque.
El procesador Secure Enclave se ejecuta como una versión personalizada por Apple del microkernel L4. Está diseñado para funcionar de forma eficiente a una velocidad de reloj más baja, lo que contribuye a protegerlo contra ataques de reloj y de energía. El procesador Secure Enclave, a partir de los SoC A11 y S4, incluye un motor de memoria protegida y una memoria encriptada con funciones antirreproducción, arranque seguro, un generador de números aleatorios dedicado y su propio motor AES.
Motor de protección de memoria
Secure Enclave funciona desde una zona dedicada de la memoria DRAM del dispositivo. Varias capas de protección aíslan la memoria protegida de Secure Enclave del procesador de aplicaciones.
Cuando se inicia el dispositivo, la ROM de arranque de Secure Enclave genera una clave de protección de memoria efímera y aleatoria para el motor de protección de memoria. Cada vez que Secure Enclave escribe en la zona de memoria que tiene dedicada, el motor de protección de memoria encripta el bloque de memoria mediante AES en el modo xor-encrypt-xor (XEX) del Mac y calcula una etiqueta de autenticación con código de autenticación de mensajes basado en cifrado (CMAC) para la memoria. El motor de protección de memoria almacena la etiqueta de autenticación junto con la memoria encriptada. Cuando Secure Enclave lee la memoria, el motor de protección de memoria verifica la etiqueta de autenticación. Si coincide, el motor de protección de memoria desencripta el bloque de memoria. Si no coincide, el motor de protección de memoria indica que hay un error a Secure Enclave. Después de un error de autenticación de memoria, Secure Enclave deja de aceptar solicitudes hasta que se reinicie el sistema.
A partir de los SoC A11 y S4 de Apple, el motor de protección de memoria añade protección de reproducción para la memoria de Secure Enclave. Para ayudar a evitar la reproducción de datos cruciales en términos de seguridad, el motor de protección de memoria almacena un número único, 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 un ajuste adicional para la etiqueta de autenticación CMAC. Los valores de antirreproducción de todos los bloques de memoria están protegidos mediante un árbol de integridad radicado en la SRAM dedicada dentro de Secure Enclave. Para las escrituras, el motor de protección de memoria actualiza el valor de antirreproducción y cada nivel del árbol de integridad hasta la SRAM. Para las lecturas, el motor de protección de memoria verifica el valor de antirreproducción y cada nivel del árbol de integridad hasta la SRAM. Las divergencias del valor de antirreproducción se manejan de forma similar a las divergencias de las etiquetas de autenticación.
En el 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 para Secure Enclave, mientras que la segunda se utiliza para los datos compartidos con el motor Neural Engine seguro.
El motor de protección de memoria funciona en línea y de forma transparente para Secure Enclave. Secure Enclave lee y escribe en la memoria como si fuera una DRAM normal sin encriptar, mientras que un observador ajeno a Secure Enclave solo ve la versión encriptada y autenticada de la memoria. El resultado es una sólida protección para la memoria sin compensaciones de rendimiento o complejidad del software.
ROM de arranque de Secure Enclave
Secure Enclave incluye una ROM de arranque de Secure Enclave dedicada. Al igual que la ROM de arranque del procesador de aplicaciones, la ROM de arranque de Secure Enclave es un código inmutable que establece la raíz de confianza de hardware para Secure Enclave.
Al arrancar el sistema, iBoot asigna una zona de la memoria dedicada a Secure Enclave. Antes de usar la memoria, la ROM de arranque de Secure Enclave inicializa el motor de protección de memoria para proporcionar protección criptográfica de la memoria protegida de Secure Enclave.
A continuación, el procesador de aplicaciones envía la imagen del sepOS a la ROM de arranque de Secure Enclave. Después de copiar la imagen del sepOS en la memoria protegida de Secure Enclave, la ROM de arranque de Secure Enclave comprueba el hash criptográfico y la firma de la imagen para verificar que el sepOS tiene permiso para ejecutarse en el dispositivo. Si la imagen del sepOS está firmada correctamente para poder ejecutarse en el dispositivo, la ROM de arranque de Secure Enclave transfiere el control al sepOS. En cambio, si la firma no es válida, la ROM de arranque de Secure Enclave está diseñada para impedir que se pueda usar Secure Enclave de cualquier manera hasta que se restablezca el chip.
En los SoC A10 de Apple y en modelos posteriores, la ROM de arranque de Secure Enclave bloquea un hash del sepOS en un registro específico para este fin. El acelerador de claves públicas usa este hash para las claves vinculadas al sistema operativo.
Monitor de arranque de Secure Enclave
En el SoC A13 de Apple y en modelos posteriores, Secure Enclave incorpora un monitor de arranque diseñado para garantizar una mayor integridad en el hash del sepOS arrancado.
Al arrancar el sistema, la configuración de la protección de la integridad del coprocesador del sistema (SCIP) del procesador Secure Enclave ayuda a impedir que el propio procesador Secure Enclave ejecute cualquier código que no sea la ROM de arranque de Secure Enclave. Asimismo, el monitor de arranque contribuye a impedir que Secure Enclave modifique la configuración de la SCIP directamente. Para que el sepOS cargado se pueda ejecutar, la ROM de arranque de 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 Secure Enclave, aplica un hash al sepOS cargado, actualiza los ajustes de la SCIP para permitir la ejecución del sepOS cargado e inicia la ejecución dentro del código recién cargado. Mientras el sistema sigue arrancando, se usa este mismo proceso siempre que hay nuevo código por ejecutar. 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 cruciales en el hash en ejecución.
Cuando se completa el arranque, el monitor de arranque termina el hash en ejecución y lo envía al acelerador de claves públicas para usarlo en las claves vinculadas al sistema operativo. Este proceso está diseñado para que la vinculación de claves del sistema operativo no se pueda omitir, aunque haya una vulnerabilidad en la ROM de arranque de Secure Enclave.
Generador de números aleatorios verdaderos
El generador de números aleatorios verdaderos sirve para generar datos aleatorios seguros. Secure Enclave utiliza el generador de números aleatorios verdaderos siempre que genera una clave criptográfica aleatoria, una semilla aleatoria u otra entropía. El generador de números aleatorios verdaderos se basa en varios osciladores en anillo posprocesados con CTR_DRBG (un algoritmo basado en cifrados por bloques en modo de contador).
Claves criptográficas raíz
Secure Enclave incluye una clave criptográfica raíz de identificador único (UID). El UID es único para cada dispositivo individual y no está relacionado con ningún otro identificador del dispositivo.
Un UID generado aleatoriamente se asigna al SoC durante la fabricación. A partir del SoC A9, el generador de números aleatorios verdaderos genera durante la fabricación el UID, que se escribe en la configuración mediante un proceso de software que se ejecuta completamente en Secure Enclave. Este proceso protege el UID para que nunca pueda verse fuera del dispositivo durante la fabricación y, por lo tanto, ni Apple ni ninguno de sus proveedores podrá acceder a él ni almacenarlo.
El sepOS utiliza el UID para proteger los secretos específicos del dispositivo. El UID permite vincular los datos a un dispositivo determinado mediante la encriptación. Por ejemplo, la jerarquía de claves que protege el sistema de archivos incluye el UID, de modo que si la unidad de almacenamiento SSD interno se traslada físicamente de un dispositivo a otro, no será posible acceder a los archivos. Entre otros secretos protegidos específicos del dispositivo, se incluyen los datos de Face ID o Touch ID. En un Mac, solo el almacenamiento completamente interno vinculado al motor AES recibe el nivel de encriptación. Por ejemplo, ninguno de los dispositivos de almacenamiento externo conectados por USB ni las unidades de almacenamiento PCIe añadidas al Mac Pro de 2019 están encriptados de esta manera.
Secure Enclave también tiene un identificador de grupo de dispositivos (GID), que es común a todos los dispositivos que utilizan un determinado SoC (por ejemplo, todos los dispositivos que utilizan el SoC A15 de Apple comparten el mismo GID).
El UID y el 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 de Secure Enclave
El motor AES de Secure Enclave es un bloque de hardware que sirve para realizar criptografía simétrica basada en el cifrado AES. El motor AES está diseñado para resistir la filtración de información mediante la temporización y el análisis de tensión estática. A partir del SoC A9, el motor AES también incluye contramedidas de análisis de tensión dinámica.
El motor AES es compatible con el uso de claves de hardware y software. Las claves de hardware se derivan del UID o GID de Secure Enclave. Estas claves permanecen dentro del motor AES y no se hacen visibles ni siquiera para el software del sepOS. Aunque el software puede solicitar operaciones de encriptación y desencriptación con claves de hardware, no es capaz de extraerlas.
En el SoC A10 de Apple y en modelos más recientes, 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 por el modo de funcionamiento del dispositivo. Los bits semilla bloqueables se usan, por ejemplo, para denegar el acceso a los datos protegidos por contraseña al arrancar 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 tienen también un motor de encriptación AES256 (el “motor AES”) integrado 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 o posteriores de la serie A, el subsistema de almacenamiento flash se encuentra en un bus aislado que solo tiene acceso a la memoria que contiene datos del usuario mediante el motor de encriptación de DMA.
En el momento del arranque, el sepOS genera una clave de encapsulación efímera mediante el generador de números aleatorios verdaderos. Secure Enclave transmite esta clave al motor AES mediante cables dedicados para impedir que cualquier software fuera de Secure Enclave acceda a él. A continuación, sepOS puede usar la clave de encapsulación efímera para encapsular claves de archivo para que el controlador del sistema de archivos del procesador de aplicaciones las utilice. Cuando el controlador del sistema de archivos lee o escribe un archivo, envía la clave encapsulada al motor AES, que la desencapsula. El motor AES nunca expone la clave desencapsulada al software.
Nota: El motor AES es un componente independiente tanto de Secure Enclave como del motor AES de Secure Enclave, pero su funcionamiento está estrechamente vinculado con Secure Enclave, como se describe a continuación.
Acelerador de claves públicas
El acelerador de claves públicas (PKA) es un bloque de hardware que sirve para realizar operaciones de criptografía asimétrica. El acelerador de claves públicas admite algoritmos de firma y encriptación RSA y ECC (criptografía de curva elíptica). El acelerador de claves públicas está diseñado para resistir la filtración de información a través de ataques de canal lateral y temporización, como el análisis de tensión estática y dinámica.
El acelerador de claves públicas es compatible con el uso de claves de software y hardware. Las claves de hardware se derivan del UID o GID de Secure Enclave. Estas claves permanecen dentro del acelerador de claves públicas y no se hacen visibles ni siquiera para el software del sepOS.
A partir de los SoC A13, se ha demostrado que las implementaciones de encriptación del acelerador de claves públicas son matemáticamente correctas mediante técnicas de verificación formal.
En el SoC A10 de Apple y en modelos posteriores, el acelerador de claves públicas (PKA) admite claves vinculadas al sistema operativo, lo que también se conoce como Protección de clave sellada (SKP). Estas claves se generan mediante una combinación del UID del dispositivo y el hash del sepOS que se ejecuta en el propio dispositivo. El hash procede de la ROM de arranque de Secure Enclave o del monitor de arranque de Secure Enclave en los SoC A13 de Apple y modelos posteriores. Estas claves también sirven para verificar la versión de sepOS al realizar solicitudes a ciertos servicios de Apple y para mejorar la seguridad de los datos protegidos por código, al ayudar a impedir el acceso al material de claves si se realizan cambios críticos en el sistema sin la autorización del usuario.
Almacenamiento seguro no volátil
Secure Enclave está equipado con un dispositivo de almacenamiento seguro no volátil dedicado. El almacenamiento seguro no volátil se conecta a Secure Enclave mediante un bus I2C específico para este fin, por lo que solo Secure Enclave tiene acceso. Todas las claves de encriptación de datos de usuario se basan en la entropía guardada en el almacenamiento no volátil de Secure Enclave.
En dispositivos con el SoC A12, el SoC S4 y modelos posteriores, Secure Enclave se asocia con un componente de almacenamiento seguro para el almacenamiento de la entropía. El propio componente de almacenamiento seguro está diseñado con código de ROM inmutable, un generador de números aleatorios de hardware, una clave criptográfica única por dispositivo, motores criptográficos y detección de manipulaciones físicas. Secure Enclave y el componente de almacenamiento seguro se comunican mediante un protocolo encriptado y autenticado que proporciona el acceso exclusivo a la entropía.
Los dispositivos que salieron al mercado a partir de otoño de 2020 están equipados con un componente de almacenamiento seguro de 2.ª generación. El componente de almacenamiento seguro de 2.ª generación incorpora cajas de seguridad de contadores. Cada caja de seguridad almacena una sal criptográfica de 128 bits, un verificador de 128 bits, un contador de 8 bits y un valor máximo de 8 bits. El acceso a las cajas de seguridad de contadores se realiza mediante un protocolo encriptado y autenticado.
Las cajas de seguridad albergan la entropía necesaria para desbloquear los datos de usuario protegidos por código. Para el acceso a los datos de usuario, el procesador Secure Enclave enlazado debe obtener el valor de entropía de código correcto del código del usuario y el UID de Secure Enclave. El código del usuario no puede obtenerse con intentos de desbloqueo enviados desde un origen distinto al Secure Enclave enlazado. Si se supera el límite de intentos del código (por ejemplo, 10 intentos en el iPhone), el componente de almacenamiento seguro borra por completo los datos protegidos por el código.
Para crear una caja de seguridad de contadores, Secure Enclave envía al componente de almacenamiento seguro el valor de entropía del código y el valor máximo de intentos. El componente de almacenamiento seguro genera el valor de la sal mediante su generador de números aleatorios. A continuación, obtiene un valor de verificador del código y un valor de entropía de la caja de seguridad a partir de la entropía del código proporcionada, la clave criptográfica única del componente de almacenamiento seguro y el valor de la sal. El componente de almacenamiento seguro inicializa la caja de seguridad de contadores con un recuento de 0, el valor máximo de intentos proporcionado, el valor de verificador del código derivado y el valor de la sal. El componente de almacenamiento seguro devuelve el valor de entropía de la caja de seguridad generado a Secure Enclave.
Para recuperar posteriormente el valor de entropía de la caja de seguridad de una caja de seguridad de contadores, Secure Enclave envía la entropía del 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 supera el valor máximo de intentos, el componente de almacenamiento seguro borra la caja de seguridad de contadores. Si el máximo de intentos no se ha alcanzado, el componente de almacenamiento seguro intenta obtener el valor de verificador del código y el valor de entropía de la caja de seguridad con el mismo algoritmo usado para crear la caja de seguridad de contadores. Si el valor de verificador del código obtenido coincide con el valor de verificador del código almacenado, el componente de almacenamiento seguro devuelve el valor de entropía de la caja de seguridad a Secure Enclave y restablece el contador a 0.
Las claves utilizadas para acceder a los datos protegidos con contraseña se radican en la entropía almacenada en las cajas de seguridad de contadores. Para obtener más información, consulta Descripción general de Protección de datos.
El almacenamiento seguro no volátil se usa para todos los servicios antirreproducción de Secure Enclave. Los servicios antirreproducción de Secure Enclave se usan para la revocación de datos debido a eventos que marcan los límites antirreproducción, entre los que se incluyen los siguientes:
Cambio del código
Activación o desactivación de Face ID o Touch ID
Adición o eliminación de la cara para Face ID o la huella digital para Touch ID
Restablecimiento de Face ID o Touch ID
Adición o eliminación de una tarjeta Apple Pay
Borrar contenidos y ajustes
En arquitecturas que no incluyen un componente de almacenamiento seguro, se utiliza la memoria de solo lectura programable y borrable eléctricamente (EEPROM) para proporcionar servicios de almacenamiento seguro para Secure Enclave. Al igual que los componentes de almacenamiento seguro, la EEPROM se conecta y es accesible solo desde Secure Enclave, pero no contiene funciones de seguridad de hardware dedicadas ni garantiza acceso exclusivo a la entropía (aparte de sus características de conexión física) ni a la funcionalidad de cajas de seguridad de contadores.
Neural Engine seguro
En dispositivos con Face ID (no Touch ID), el motor Neural Engine seguro convierte imágenes 2D y mapas de profundidad en una representación matemática del rostro de un usuario.
En los SoC A11 a A13, el motor Neural Engine seguro está integrado en Secure Enclave. El motor Neural Engine seguro utiliza el acceso directo a memoria (DMA) para garantizar un alto rendimiento. Una unidad de gestión de memoria de entrada/salida (IOMMU) bajo el control del kernel del sepOS limita este acceso directo a las regiones autorizadas de la memoria.
A partir del SoC A14, M1 y posteriores, el motor Neural Engine seguro viene implementado como modo seguro en el motor Neural Engine del procesador de aplicaciones. Un controlador de seguridad del hardware dedicado cambia entre las tareas del procesador de aplicaciones y de Secure Enclave, restableciendo el estado de Neural Engine en cada transición para preservar la seguridad de los datos de Face ID. Un motor dedicado aplica encriptación de memoria, autenticación y control de acceso. Al mismo tiempo, utiliza una clave criptográfica independiente y un intervalo de memoria para limitar el motor Neural Engine a regiones autorizadas de la memoria.
Monitores de reloj y energía
Todos los componentes electrónicos están diseñados para funcionar dentro de una envolvente de frecuencia y tensión limitada. Al funcionar fuera de esta envolvente, la electrónica puede fallar, de modo que podrían omitirse los controles de seguridad. Para ayudar a garantizar que la tensión y la frecuencia permanecen en un rango seguro, Secure Enclave integra en su diseño circuitos de supervisión. Estos circuitos de supervisión están diseñados para tener una envolvente operativa mucho mayor que la del resto de Secure Enclave. Si los monitores detectan un punto de funcionamiento ilegal, el reloj de Secure Enclave se detiene automáticamente y no se reinicia hasta que se vuelva a restablecer el SoC.
Resumen de características de Secure Enclave
Nota: Los productos A12, A13, S4 y S5 que salieron al mercado en otoño de 2020 incorporan un componente de almacenamiento seguro de segunda generación, mientras que los modelos anteriores basados en estos SoC tienen un componente de primera generación.
SoC | Motor de protección de memoria | Almacenamiento seguro | Motor AES | PKA |
---|---|---|---|---|
A8 | Encriptación y autenticación | EEPROM | Sí | No |
A9 | Encriptación y autenticación | EEPROM | Protección DPA | Sí |
A10 | Encriptación y autenticación | EEPROM | Protección DPA y bits semilla bloqueables | Claves vinculadas al sistema operativo |
A11 | Encriptación, autenticación y prevención de reproducción | EEPROM | Protección DPA y bits semilla bloqueables | Claves vinculadas al sistema operativo |
A12 (dispositivos Apple que han salido antes de otoño de 2020) | Encriptación, autenticación y prevención de reproducción | Componente de almacenamiento seguro de 1.ª generación | Protección DPA y bits semilla bloqueables | Claves vinculadas al sistema operativo |
A12 (dispositivos Apple que han salido después de otoño de 2020) | Encriptación, autenticación y prevención de reproducción | Componente de almacenamiento seguro de 2.ª generación | Protección DPA y bits semilla bloqueables | Claves vinculadas al sistema operativo |
A13 (dispositivos Apple que han salido antes de otoño de 2020) | Encriptación, autenticación y prevención de reproducción | Componente de almacenamiento seguro de 1.ª generación | Protección DPA y bits semilla bloqueables | Claves vinculadas al sistema operativo y monitor de arranque |
A13 (dispositivos Apple que han salido después de otoño de 2020) | Encriptación, autenticación y prevención de reproducción | Componente de almacenamiento seguro de 2.ª generación | Protección DPA y bits semilla bloqueables | Claves vinculadas al sistema operativo y monitor de arranque |
A14–A17 | Encriptación, autenticación y prevención de reproducción | Componente de almacenamiento seguro de 2.ª generación | Protección DPA y bits semilla bloqueables | Claves vinculadas al sistema operativo y monitor de arranque |
S3 | Encriptación y autenticación | EEPROM | Protección DPA y bits semilla bloqueables | Sí |
S4 | Encriptación, autenticación y prevención de reproducción | Componente de almacenamiento seguro de 1.ª generación | Protección DPA y bits semilla bloqueables | Claves vinculadas al sistema operativo |
S5 (dispositivos Apple que han salido antes de otoño de 2020) | Encriptación, autenticación y prevención de reproducción | Componente de almacenamiento seguro de 1.ª generación | Protección DPA y bits semilla bloqueables | Claves vinculadas al sistema operativo |
S5 (dispositivos Apple que han salido después de otoño de 2020) | Encriptación, autenticación y prevención de reproducción | Componente de almacenamiento seguro de 2.ª generación | Protección DPA y bits semilla bloqueables | Claves vinculadas al sistema operativo |
S6–S9 | Encriptación, autenticación y prevención de reproducción | Componente de almacenamiento seguro de 2.ª generación | Protección DPA y bits semilla bloqueables | Claves vinculadas al sistema operativo |
T2 | Encriptación y autenticación | EEPROM | Protección DPA y bits semilla bloqueables | Claves vinculadas al sistema operativo |
M1, M2, M3 | Encriptación, autenticación y prevención de reproducción | Componente de almacenamiento seguro de 2.ª generación | Protección DPA y bits semilla bloqueables | Claves vinculadas al sistema operativo y monitor de arranque |