Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a: 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.
Apertura de Visual Studio 2019 o 2022
Seleccione Crear un nuevo proyecto.
Elija Aplicación de consola en la lista de plantillas y, a continuación, seleccione Siguiente.
Rellene los campos Nombre del proyecto, Ubicación y Nombre de la solución y, a continuación, seleccione Siguiente.
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.
En el Explorador de soluciones, haga clic con el botón derecho en el nombre del proyecto y seleccione Administrar paquetes NuGet….
Seleccione Examinar y busque
Microsoft.TSS
. Para obtener más información sobre este paquete, consulte Microsoft.TSS.Elija el paquete Microsoft.TSS de la lista y, a continuación, seleccione Instalar.
Edite el archivo Program.cs y reemplace el contenido por el código de ejemplo de TPM de EFLOW: Program.cs.
Seleccione Compilar>Compilar solución para compilar el proyecto. Compruebe que la compilación se ha realizado correctamente.
En el Explorador de soluciones, haga clic con el botón derecho en el proyecto y seleccione Publicar.
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.
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.
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.
Abra una sesión avanzada de PowerShell mediante Ejecutar como administrador.
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"
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"
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 directorioC:\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
Conéctese a la máquina virtual EFLOW.
Connect-EflowVm
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.Ejecute el siguiente comando para extraer todo el contenido del archivo tar.
tar -xvzf TPM.tar
Después de la extracción, debería ver una nueva carpeta con todos los archivos TPM.
Cambie el directorio a la nueva carpeta TPM.
cd TPM
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
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
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.
Pasos siguientes
Aprenda a desarrollar módulos de IoT Edge con contenedores de Linux mediante IoT Edge para Linux en Windows.