Intel SGX es una tecnología nueva e intrigante que se enviará como parte de los próximos procesadores Intel. Está diseñado para permitir la ejecución Software en un enclave seguro. El hardware que se ejecute en el enclave se aislará del código no confiable que se ejecuta en el mismo procesador, por lo que puede ejecutar un código crítico para la seguridad en el enclave y protegerlo de ataques. Si bien SGX no es compatible con los procesadores actualmente disponibles, Intel sugiere que estará disponible pronto. La esperanza es que esto pueda proporcionar una base sólida para ciertos tipos de aislamiento: los desarrolladores podrán ejecutar cierto código (por ejemplo, código de administración de claves criptográficas) en un enclave seguro, con garantías de que otro código no podrá manipularlo. it.
Un registro específico del modelo (MSR) es un registro de configuración especial que controla el funcionamiento del procesador. Por ejemplo, los MSR se pueden usar para habilitar el rastreo de sucursales, contadores de rendimiento, puntos de observación de hardware y otras características especiales útiles. Normalmente, solo el código privilegiado puede leer y escribir la mayoría de los MSR.
Mi pregunta: ¿Cómo interactúa el modo SGX con los MSR? ¿Qué necesitan saber los desarrolladores de código que se ejecuta en modo SGX acerca de los MSR?
La especificación SGX no dice cómo el modo SGX interactúa con los MSR. Sin embargo, podría imaginar que los MSR podrían suponer un riesgo para el código que se ejecuta en un enclave, dependiendo de cómo interactúan los dos. Por ejemplo, si el código que no es de confianza podría habilitar el rastreo de sucursales (a través de un MSR) y luego desencadenar la invocación de un enclave seguro, y si esta configuración se mantuvo a través del interruptor de modo, todas las ramas tomadas por el código del enclave se registrarán en la memoria accesible por no confiable código, entonces esto podría permitir que un código no confiable monte ataques de canal lateral potentes contra el código del enclave.
Entonces, ¿cómo afectan los valores del MSR a la ejecución del código que se ejecuta en un enclave? ¿Se ignoran los MSR cuando se ejecutan en modo enclave? ¿El código diseñado para ejecutarse en un enclave necesita borrar / restablecer todos los MSR antes de hacer algo sensible? ¿Qué necesitan saber los desarrolladores de código que se ejecutarán en un enclave sobre cómo funcionan los MSR en modo SGX, para escribir código seguro y proteger su código de ataques?