Testimonio de Weeve Technical Deep Dive – Weeve's World

Este blog es una continuación y parte final de 2 series de blogs de la descripción técnica general del producto "Testimonio de Weeve". Estamos cubriendo los detalles técnicos del lado del cliente de Weeve Testimony, se ejecuta en microcontroladores basados ​​en Arm Trustzone como Arm-Cortex-M23 / M33.

En la publicación anterior, describimos los diferentes componentes del cliente Testimony y los pasos necesarios para generar un firmware instrumentado para que el firmware de la aplicación original conozca la aplicación confiable Testimony (Testimony TA, proceso de protección que se ejecuta en Trustzone) y también para pasar el flujo de control información a Testimonio TA.

Ahora veremos qué sucede en tiempo de ejecución. A continuación hay un GIF que anima un poco la cosa. En este ejemplo, veremos cómo se protege una llamada de función C usando Testimony. En el firmware original, se llama a una función Login () desde algún lugar. Ahora, cuando este firmware se parchea o se instrumenta usando la herramienta Testimony Patcher, la llamada para iniciar sesión se reemplaza con otra rutina trampolineBL (). Dado que se modifica el binario original, la herramienta Testimony ya ha puesto a disposición las direcciones de origen y destino originales en BranchTable. El componente verde oscuro en el siguiente diagrama indica que Testimony TA, NotifySecureWorld () es una API en TA.

Weeve Testimonio Control Flujo Integridad en acción

Paso 1. Cuando el proceso mundial normal ejecuta el firmware instrumentado y se ejecuta una instrucción de flujo de control, salta a la rutina TrampolineBL () de los trampolines en lugar de la función original Login (). TrampolineBL () guarda el estado actual del procesador. El estado actual del procesador también proporciona la información desde la cual se llama sourceAddress 0xC5AE a la rutina Trampoline.

Paso 2-3 Usando sourceAddress 0xC5AE, TrampolineBL () busca (BinarySearch ()) la BranchTable para encontrar el originalDestinationAddress 0xC568.

Paso 4–5. Trampoline TrampolineBL () pasa esta tupla de información de flujo de control {sourceAddress, originalDestinationAddress} {0xC5AE, 0xC658} a Testimony Trusted Application (TA) que se ejecuta en Arm Trustzone, una llamada a NotifySecureWorld (). Testimony TA acumula de forma acumulativa la información de flujo de control anterior.

Paso 6–7. Después de regresar de la llamada de Trustzone, se realiza una llamada a la función original prevista () (Branch BX a la dirección 0xC568).

Lo anterior pasos (1 a 7) se ejecutan para todas las ramas de flujo de control, es decir la función llama-devuelve, if-else, goto block y loops de un programa C del binario.

Con la ayuda de Weeve Testimony Run Time Profiler Tool, que se ejecuta varias veces con una entrada variable en todo el programa con una cobertura justa del programa, se captura y almacena un conjunto de hashes dorados. Un único hash dorado representa una ruta de flujo de ejecución válida de "todo el programa para una entrada dada", que no debe confundirse con el hash de una única tupla de información de flujo de control {sourceAddress, originalDestinationAddress}.

Todos estos hashes dorados con las entradas correspondientes del programa se almacenan en una base de datos en un servidor de certificación remoto.

Un servidor de certificación remota desafía a un dispositivo remoto que ejecuta el firmware protegido Weeve Testimony para demostrar su integridad de flujo de control, opcionalmente para una entrada de programa dada. hachís dorado Para esta parte, tenemos la intención de seguir la certificación remota de Arm Platform Security Architecture (PSA) que se muestra a continuación para obtener la máxima interoperabilidad de nuestra solución. El servidor Al recibir la respuesta del dispositivo, el servidor de certificación remota valida si el hash dorado del encuestado coincide con uno de los hash disponibles . Si la verificación de integridad falla, las partes suscritas son notificadas para tomar medidas contra el dispositivo. Dependiendo de la gravedad del caso de uso implementado, estas acciones podrían ser tan simples como rechazar todos los datos que provienen del dispositivo para actualizar de manera forzada el firmware en el dispositivo. ARM PSA Remote Attestation, cortesía de Arm Inc.

Estamos buscando asociarnos con proveedores de microcontroladores y fabricantes de dispositivos que tengan dispositivos basados ​​en Arm-Cortex-M23 / M33 para probar, ajustar y enviar nuestro producto. Actualmente, el cliente Testimony se ejecuta en las placas NRF9160DK de Nordic Semiconductor y ZephyrOS.

Nos encanta OSS y en los próximos meses iniciaremos la implementación del cliente Testimony.
Comuníquese con [email protected] para cualquier información relacionada con nuestros productos y conmigo para sus valiosos comentarios en esta publicación.