Modelo de seguridad de Device Update

Device Update para IoT Hub ofrece un método seguro para implementar actualizaciones del firmware, las imágenes y las aplicaciones del dispositivo en los dispositivos IoT. El flujo de trabajo proporciona un canal seguro de un extremo a otro con un modelo de cadena de custodia completo que el dispositivo puede usar para comprobar que una actualización es de confianza, sin modificar e intencional.

Cada paso del flujo de trabajo de Device Update se protege mediante varias características y procesos de seguridad para garantizar que cada paso de la canalización realiza una entrega segura al siguiente. El código de referencia del agente de Device Update identifica y administra adecuadamente las solicitudes de actualización ilegítimas. El agente de referencia también comprueba todas las descargas para asegurarse de que el contenido sea de confianza, sin modificar e intencional.

Resumen

A medida que las actualizaciones se importan en su instancia de Device Update, el servicio carga y comprueba los archivos binarios de la actualización para asegurarse de que un usuario malintencionado no los haya modificado ni intercambiado. Una vez comprobados, el servicio Device Update genera un manifiesto de actualización interno con los códigos hash de archivo del manifiesto de importación y otros metadatos. A continuación, el servicio Device Update firma este manifiesto de actualización.

Una vez importados en el servicio y almacenados en Azure, el servicio Azure Storage cifra automáticamente los archivos binarios de actualización y los metadatos del cliente asociados en reposo. El servicio Device Update no proporciona automáticamente cifrado adicional, pero permite a los desarrolladores cifrar el contenido por sí mismos antes de que el contenido llegue al servicio Device Update.

Cuando se implementa una actualización en dispositivos desde el servicio Device Update, se envía un mensaje firmado a través del canal de IoT Hub protegido al dispositivo. Device Update Agent valida la firma de la solicitud como auténtica.

Cualquier descarga binaria resultante se protege mediante la validación de la firma del manifiesto de actualización. El manifiesto de actualización contiene los códigos hash de los archivos binarios, por lo que una vez que el manifiesto sea de confianza, Device Update Agent confía en los códigos hash y los compara con los archivos binarios. Una vez que el archivo binario de actualización se ha descargado y comprobado, se entrega al instalador del dispositivo.

Detalles de la implementación

Para asegurarse de que el servicio Device Update se reduce verticalmente para dispositivos simples y de bajo rendimiento, el modelo de seguridad usa claves asimétricas sin formato y firmas sin formato. Usan formatos basados en JSON, como los tokens JSON Web Token y las claves JSON Web Key.

Protección del contenido de la actualización mediante el manifiesto de actualización

El manifiesto de actualización se valida con dos firmas. Las firmas se crean mediante una estructura que consta de claves de firma y claves raíz.

El agente de Device Update tiene claves públicas insertadas que se usan para todos los dispositivos compatibles con Device Update. Estas claves públicas son las claves raíz. Microsoft controla las claves privadas correspondientes.

Microsoft también genera un par de claves pública y privada que no se incluye en el agente de Device Update ni se almacena en el dispositivo. Esta clave es la clave de firma.

Cuando se importa una actualización en Device Update para IoT Hub y el servicio genera el manifiesto de actualización, el servicio firma el manifiesto con la clave de firma e incluye la propia clave de firma, que está firmada por una clave raíz. Cuando se envía al dispositivo el manifiesto de actualización, el agente de Device Update recibe los siguientes datos de firma:

  1. El propio valor de la firma.
  2. El algoritmo usado para generar nº 1.
  3. La información de clave pública de la clave de firma utilizada para generar nº 1.
  4. La firma de la clave de firma pública en nº 3.
  5. El identificador de clave pública de la clave raíz utilizada para generar nº 3.
  6. El algoritmo utilizado para generar nº 4.

El agente de Device Update usa la información definida anteriormente para validar que la firma de la clave de firma pública está firmada por la clave raíz. Después, el agente de Device Update valida que la firma del manifiesto de actualización está firmada por la clave de firma. Si todas las firmas son correctas, el manifiesto de actualización es de confianza para el agente de Device Update. Dado que el manifiesto de actualización incluye los códigos hash de archivo que corresponden a los archivos de la actualización, los archivos de la actualización también pueden ser de confianza si los códigos hash coinciden.

Disponer de claves raíz y de firma permite a Microsoft rotar periódicamente la clave de firma, un procedimiento recomendado de seguridad.

Firma web JSON (JWS)

El elemento updateManifestSignature se utiliza para asegurarse de que la información contenida en el elemento updateManifest no se ha manipulado. updateManifestSignature se genera mediante una firma web JSON con claves JSON Web Key, lo que permite la comprobación del origen. La firma es una cadena codificada como dirección URL Base 64 con tres secciones delimitadas por el carácter ".". Consulte los métodos auxiliares de jws_util.h para analizar y comprobar claves y tokens JSON.

La firma web JSON es un estándar propuesto por IETF ampliamente utilizado para firmar el contenido mediante estructuras de datos basadas en JSON. Es una forma de garantizar la integridad de los datos mediante la comprobación de la firma de los datos. Puede encontrar más información en la entrada RFC 7515 correspondiente a la firma web JSON (JWS).

JSON Web Token

Los tokens JSON Web Token son un método abierto estándar del sector para representar las notificaciones de forma segura entre dos partes.

Claves raíz

Cada dispositivo con Device Update debe contener un conjunto de claves raíz. Estas claves son la raíz de confianza de todas las firmas de Device Update. Todas las firmas se deben encadenar mediante una de estas claves raíz para que se considere legítima.

El conjunto de claves raíz cambiará a lo largo del tiempo, ya que es adecuado rotar periódicamente las claves de firma por motivos de seguridad. Como resultado, el software del agente de Device Update deberá actualizarse con el conjunto más reciente de claves raíz a intervalos especificados por el equipo de Device Update. La siguiente rotación planeada de claves raíz se producirá en mayo de 2025.

A partir de la versión 1.1.0 del agente de Device Update, el agente comprobará automáticamente los cambios en las claves raíz cada vez que se produzca una implementación de una actualización en ese dispositivo. Cambios posibles:

  • Hay disponible una nueva clave raíz.
  • Una clave raíz existente está deshabilitada (revocada de forma eficaz), lo que significa que ya no es válida para establecer la confianza.

Si o ambas de las anteriores son true, el agente de Device Update descargará automáticamente desde el servicio DU un nuevo paquete de clave raíz. Este paquete contiene el conjunto completo de todas las claves raíz, así como una lista deshabilitada que contiene información sobre qué claves raíz o claves de firma ya no son válidas. El paquete de clave raíz se firma en sí mismo con cada clave raíz, de modo que se pueda establecer la confianza para el paquete desde las claves raíz originales que forman parte del propio agente DU, así como las claves raíz descargadas posteriormente. Una vez completado el proceso de validación, las nuevas claves raíz se consideran de confianza para validar la confianza con la clave de firma para un manifiesto de actualización determinado, mientras que las claves raíz o las claves de firma enumeradas en la lista deshabilitada ya no son de confianza para ese propósito.

Prototipos

Todas las firmas tienen una clave de firma (pública) firmada por una de las claves raíz. La firma identifica la clave raíz que se usó para firmar la clave de firma.

Device Update Agent debe validar las firmas; para ello, validará primero que la firma de la clave de firma (pública) es correcta, válida y ha sido firmada por una de las claves raíz aprobadas. Una vez que la clave de firma se valide correctamente, la propia firma se puede validar con la clave pública de firma que ahora es de confianza.

Las claves de firma se rotan con una cadencia mucho más rápida que las claves raíz, por lo que se deben esperar mensajes firmados por distintas claves de firma.

El servicio Device Update administra la revocación de las claves de firma, por lo que los usuarios no deben intentar almacenar en caché las claves de firma. Use siempre la clave de firma que acompaña a una firma.

Protección del dispositivo

Es importante asegurarse de que los recursos de seguridad relacionados con Device Update estén adecuadamente protegidos en el dispositivo. Los recursos, como las claves raíz, se deben proteger frente a modificaciones. Hay varias maneras de proteger las claves raíz, como el uso de dispositivos de seguridad (TPM, SGX, HSM u otros dispositivos de seguridad) o incluso codificarlos de forma rígida en el agente de Device Update como se hace en la implementación de referencia. Esta última requiere que el código del agente de Device Update esté firmado digitalmente y que la compatibilidad con la integridad de código del sistema esté habilitada para protegerse frente a la modificación malintencionada del código del agente.

Se pueden garantizar medidas de seguridad adicionales, como asegurarse de que la entrega de componente a componente se realiza de forma segura. Por ejemplo, el registro de una cuenta aislada específica para ejecutar los distintos componentes y limitar las comunicaciones basadas en la red (por ejemplo, las llamadas API REST) solo a localhost.

Pasos siguientes

Obtenga información sobre cómo Device Update usa el control de acceso basado en rol de Azure.