Investigadores de NCC Group vulnerabilidades () en los chips de Qualcomm, que permiten determinar el contenido de las claves de cifrado cerradas, ubicadas en el enclave aislado de Qualcomm QSEE (Entorno de Ejecución Segura de Qualcomm), basado en la tecnología ARM TrustZone. El problema se manifiesta en SoC Snapdragon, que se han popularizado en smartphones basados en la plataforma Android. Las correcciones que resuelven el problema ya forman parte de la actualización de abril de Android y en nuevas versiones del firmware para chips de Qualcomm. Qualcomm tardó más de un año en preparar la corrección: la información sobre la vulnerabilidad fue enviada a Qualcomm el 19 de marzo de 2018.
Recordemos que la tecnología ARM TrustZone permite crear entornos protegidos aislados a nivel de hardware, completamente separados del sistema principal y ejecutados en un procesador virtual separado mediante un sistema operativo especializado. La función principal de TrustZone es garantizar la ejecución aislada de los manejadores de claves de cifrado, autenticación biométrica, datos de pago y otra información confidencial. La interacción con el sistema operativo principal se realiza de manera indirecta a través de una interfaz de despacho. Las claves de cifrado cerradas se almacenan dentro de un almacenamiento de claves aislado a nivel de hardware, lo que permite prevenir su filtración en caso de compromiso del sistema principal si se implementa correctamente.
La vulnerabilidad se relaciona con un error en la implementación del algoritmo de procesamiento de curvas elípticas, que llevaba a la filtración de información sobre el progreso del procesamiento de datos. Los investigadores desarrollaron una técnica de ataque por canales laterales, que permite reconstruir el contenido de las claves personales a partir de las filtraciones indirectas. . Las filtraciones se determinan mediante el análisis de la actividad del bloque de predicción de saltos y el cambio en el tiempo de acceso a los datos en la memoria. En el experimento, los investigadores demostraron con éxito la recuperación de claves ECDSA de 224 y 256 bits desde un almacenamiento de claves aislado por hardware utilizado en el smartphone Nexus 5X. Para recuperar la clave, se requería la generación de aproximadamente 12,000 firmas digitales, lo que tomó más de 14 horas. Se utilizó un conjunto de herramientas para llevar a cabo el ataque. .
La causa principal del problema es el uso compartido de componentes de hardware comunes y caché para cálculos en TrustZone y en el sistema principal; la isolación se realiza a nivel de separación lógica, pero utilizando bloques de cálculo comunes y dejando rastros de los cálculos y la información sobre las direcciones de salto en el caché del procesador común. Mediante el método Prime+Probe, que se basa en la evaluación del cambio en el tiempo de acceso a la información en caché, se pueden rastrear flujos de datos y señales de ejecución de código relacionado con cálculos de firmas digitales en TrustZone con bastante precisión al verificar la existencia de ciertos patrones en la caché.
La mayor parte del tiempo requerido para generar una firma digital utilizando claves ECDSA en los chips Qualcomm se emplea en la realización de operaciones de multiplicación en un ciclo, utilizando un vector de inicialización invariable para cada firma (). Si un atacante puede recuperar al menos algunos bits de información sobre este vector, surge la posibilidad de realizar un ataque de recuperación secuencial de toda la clave privada.
En el caso de Qualcomm, se identificaron dos puntos de filtración de información similar en el algoritmo de multiplicación: al realizar operaciones de búsqueda en tablas y en el código de extracción condicional de datos basado en el valor del último bit en el vector 'nonce'. A pesar de las medidas de Qualcomm para contrarrestar las filtraciones de información a través de canales externos, el método de ataque desarrollado permite eludir estas medidas y determinar algunos bits del valor 'nonce', que son suficientes para recuperar claves ECDSA de 256 bits.
Fuente: opennet.ru
