Esquema para asegurar la integridad de las características de Field Upgradable en un widget genérico

0

Digamos que quiero fabricar widgets genéricos (productos de hardware con un pequeño microcontrolador conectado a un módulo TPM con un bus de comunicación no seguro). En el momento de la fabricación, puedo asignar un secreto específico del dispositivo a cada widget y almacenar ese secreto dentro del TPM de ese dispositivo. Este secreto puede entonces vivir dentro del TPM de modo que nunca pueda cambiar, y nunca puede extraerse del TPM.

Después de que estos widgets genéricos estén en manos de los clientes, debo tener la capacidad de actualizar su capacidad de software (esencialmente desbloquear las funciones de software existentes). La idea es que el cliente devuelva el número de serie del dispositivo que luego puedo usar para buscar en mi base de datos de fabricación el secreto de ese dispositivo. Entonces, debería poder usar este secreto para crear de alguna manera una carga útil desplegable de campo que sea

  • Sólo es válido en la unidad con ese secreto (también conocida como la unidad del cliente)
  • Una vez instalado en el widget (presumiblemente en el TPM), se puede aplicar de forma segura cada vez que se inicie el dispositivo

¿Qué validación de datos? cifrado? ¿Qué esquema puedo usar para lograr esto? Las limitaciones son que mi microcontrolador debe tener un firmware genérico, por lo que no puede tener un secreto por dispositivo. Además, no puedo pagar una implementación completa de AES en mi microcontrolador.

ACTUALIZACIÓN: Se puede considerar que la CPU que tengo tiene un "arranque seguro", por lo que puedo confiar en su código. Por ahora, las únicas capacidades que sé que tengo en el microcontrolador son SHA256, MAC, HMAC, acceso a números (relativamente) aleatorios y las funciones criptográficas simples obvias como XOR de un mensaje con una clave. Sé que este es actualmente un conjunto muy limitado y estoy abierto a expandirlo; Simplemente no sé qué más se necesita para satisfacer mis necesidades.

    
pregunta Paul Grinberg 10.03.2017 - 16:17
fuente

0 respuestas

Lea otras preguntas en las etiquetas