Compartir a través de


Acceso dTPM para Azure IoT Edge para Linux en Windows

Se aplica a:Marca de verificación de IoT Edge 1.5 IoT Edge 1.5

Importante

IoT Edge 1.5 LTS es la versión compatible. IoT Edge 1.4 LTS finaliza su ciclo de vida el 12 de noviembre de 2024. Si está usando una versión anterior, consulte Actualización de IoT Edge.

Un chip de módulo de plataforma segura (TPM) es un procesador criptográfico seguro que lleva a cabo operaciones criptográficas. Esta tecnología proporciona funciones de seguridad basadas en hardware. La máquina virtual Azure IoT Edge para Linux en Windows (EFLOW) no tiene un TPM virtual conectado. Sin embargo, puede habilitar o deshabilitar la característica de acceso directo de TPM, que permite que la máquina virtual EFLOW use el TPM del sistema operativo host de Windows. La característica de acceso directo de TPM le permite:

  • Uso de la tecnología TPM para el aprovisionamiento de dispositivos IoT Edge con Device Provisioning Service (DPS)
  • Obtención del acceso de solo lectura a las claves criptográficas almacenadas en el TPM

En este artículo se muestra cómo escribir código de C# de ejemplo para leer claves criptográficas almacenadas en el TPM del dispositivo.

Importante

El acceso a las claves de TPM está limitado a solo lectura. Para escribir claves en el TPM, házlo desde el sistema operativo anfitrión de Windows.

Requisitos previos

  • Un sistema operativo host de Windows con un TPM o vTPM (si usa una máquina virtual del sistema operativo host de Windows).

  • Una máquina virtual EFLOW con el paso a través de TPM habilitado. En una sesión de PowerShell con privilegios elevados, ejecute Set-EflowVmFeature -feature "DpsTpm" -enable para habilitar el acceso directo de TPM. Para más información, consulte Set-EflowVmFeature para habilitar el paso directo de TPM.

  • Asegúrese de que el índice NV (índice predeterminado=3001) se inicializa con 8 bytes de datos. El valor predeterminado de AuthValue usado por el ejemplo es {1,2,3,4,5,6,7,8}, que coincide con el ejemplo de NV (Windows) en las bibliotecas TSS.MSR al escribir en el TPM. Inicialice todos los índices en el host de Windows antes de leer desde la máquina virtual de EFLOW. Para obtener más información sobre los ejemplos de TPM, consulte TSS.MSR.

    Advertencia

    La habilitación del acceso directo de TPM a la máquina virtual puede aumentar los riesgos de seguridad.

Creación del archivo ejecutable dTPM

Siga estos pasos para crear un archivo ejecutable de ejemplo para acceder a un índice de TPM desde la máquina virtual de EFLOW. Para obtener más información sobre EFLOW TPM passthrough, consulte Azure IoT Edge para Linux en Windows Security.

  1. Apertura de Visual Studio 2019 o 2022

  2. Seleccione Crear un nuevo proyecto.

  3. Elija Aplicación de consola en la lista de plantillas y, a continuación, seleccione Siguiente.

    Visual Studio crea una nueva solución

  4. Rellene los campos Nombre del proyecto, Ubicación y Nombre de la solución y, a continuación, seleccione Siguiente.

  5. Elija una plataforma de destino Se prefiere la versión más reciente de .NET 6.0 LTS. Después de elegir una plataforma de destino, seleccione Crear. Visual Studio crea una nueva solución de aplicación de consola.

  6. En el Explorador de soluciones, haga clic con el botón derecho en el nombre del proyecto y seleccione Administrar paquetes NuGet….

  7. Seleccione Examinar y busque Microsoft.TSS. Para obtener más información sobre este paquete, consulte Microsoft.TSS.

  8. Elija el paquete Microsoft.TSS de la lista y, a continuación, seleccione Instalar.

    Captura de pantalla de Visual Studio en la que se muestra cómo agregar paquetes NuGet.

  9. Edite el archivo Program.cs y reemplace el contenido por el código de ejemplo de TPM de EFLOW: Program.cs.

  10. Seleccione Compilar>Compilar solución para compilar el proyecto. Compruebe que la compilación se ha realizado correctamente.

  11. En el Explorador de soluciones, haga clic con el botón derecho en el proyecto y seleccione Publicar.

  12. En el Asistente para publicación, elijaCarpeta>Carpeta. Seleccione Examinar y elija una ubicación de salida para que se genere el archivo ejecutable. Seleccione Finalizar. Una vez creado el perfil de publicación, seleccione Cerrar.

  13. En la pestaña Publicar, seleccione Mostrar todo el vínculo de configuración. Cambie las siguientes configuraciones y seleccione Guardar.

    • Tiempo de ejecución de destino: linux-x64.
    • Modo de implementación: Independiente.

    Captura de pantalla de las opciones de publicación.

  14. Seleccione Publicar y espere a que se cree el archivo ejecutable.

Si la publicación se realiza correctamente, verá los nuevos archivos en la carpeta de salida.

Copiar y ejecutar el archivo ejecutable

Una vez creado el archivo ejecutable y los archivos de dependencia, debe copiar la carpeta en la máquina virtual EFLOW. En los pasos siguientes se muestra cómo copiar todos los archivos necesarios y cómo ejecutar el ejecutable dentro de la máquina virtual EFLOW.

  1. Abra una sesión avanzada de PowerShell mediante Ejecutar como administrador.

  2. Cambie el directorio a la carpeta principal que contiene los archivos publicados. Por ejemplo, si los archivos publicados están en la carpeta TPM en el directorio C:\Users\User. Puede usar el siguiente comando para cambiar a la carpeta primaria.

    cd "C:\Users\User"
    
  3. Cree un archivo tar con todos los archivos creados en los pasos anteriores. Por ejemplo, si tiene todos los archivos en la carpeta TPM, puede usar el siguiente comando para crear el archivo TPM.tar.

     tar -cvzf TPM.tar ".\TPM"
    
  4. Una vez que el archivo TPM.tar se crea correctamente, use el cmdlet Copy-EflowVmFile para copiar el archivo tar creado en la máquina virtual de EFLOW. Por ejemplo, si tiene el nombre de archivo tarTPM.tar en el directorio C:\Users\User. Puede usar el siguiente comando para copiar en la máquina virtual de EFLOW.

    Copy-EflowVmFile -fromFile "C:\Users\User\TPM.tar" -toFile "/home/iotedge-user/" -pushFile
    
  5. Conéctese a la máquina virtual EFLOW.

    Connect-EflowVm
    
  6. Cambie el directorio a la carpeta donde copió el archivo tar y compruebe que el archivo está disponible. Si usó el ejemplo anterior, al conectarse a la máquina virtual de EFLOW, ya está en la carpeta raíz iotedge-user . Ejecute el comando ls para enumerar los archivos y carpetas.

  7. Ejecute el siguiente comando para extraer todo el contenido del archivo tar.

    tar -xvzf TPM.tar
    
  8. Después de la extracción, debería ver una nueva carpeta con todos los archivos TPM.

  9. Cambie el directorio a la nueva carpeta TPM.

    cd TPM
    
  10. Agregue el permiso ejecutable al archivo ejecutable principal. Por ejemplo, si el nombre del proyecto era TPMRead, el archivo ejecutable principal se denomina TPMRead. Ejecute el siguiente comando para que sea ejecutable.

    chmod +x TPMRead
    
  11. Para resolver una incidencia de globalización de ICU, ejecute el siguiente comando. Por ejemplo, si el nombre del proyecto es TPMTest ejecute:

     sed -i '/"configProperties": /a \\t"System.Globalization.Invariant\": true,' TPMTest.runtimeconfig.json
    
  12. El último paso es ejecutar el archivo ejecutable. Por ejemplo, si el nombre del proyecto es TPMTest, ejecute el siguiente comando:

    ./TPMTest
    

    Debería ver una salida similar a la siguiente.

    Captura de pantalla que muestra la salida de EFLOW dTPM.

Pasos siguientes

Aprenda a desarrollar módulos de IoT Edge con contenedores de Linux mediante IoT Edge para Linux en Windows.