Integración de la seguridad de hardware - AWS IoT Greengrass

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Integración de la seguridad de hardware

nota

Esta función está disponible para la versión 2.5.3 y versiones posteriores del componente núcleo de Greengrass. AWS IoT Greengrass actualmente no admite esta función en los dispositivos principales de Windows.

Puede configurar el software AWS IoT Greengrass Core para que utilice un módulo de seguridad de hardware (HSM) a través de la interfaz PKCS #11. Esta característica le permite almacenar de forma segura los certificados y claves privadas del dispositivo para que no queden expuestos ni duplicados en el software. Puede almacenar la clave privada y el certificado en un módulo de hardware, como un HSM o un módulo de plataforma segura (TPM).

El software AWS IoT Greengrass Core utiliza una clave privada y un certificado X.509 para autenticar las conexiones a los servicios y. AWS IoT AWS IoT Greengrass El componente administrador de secretos utiliza esta clave privada para cifrar y descifrar de forma segura los secretos que se implementan en un dispositivo principal de Greengrass. Al configurar un dispositivo principal para usar un HSM, estos componentes utilizan la clave privada y el certificado que se almacenan en el HSM.

El componente agente MQTT de Moquette también almacena una clave privada para su certificado de servidor MQTT local. Este componente almacena la clave privada en el sistema de archivos del dispositivo, en la carpeta de trabajo del componente. Actualmente, AWS IoT Greengrass no admite el almacenamiento de esta clave privada o certificado en un HSM.

sugerencia

Busque los dispositivos que admiten esta característica en el Catálogo de dispositivos de socios de AWS.

Requisitos

Debe cumplir con los siguientes requisitos para usar un HSM en un dispositivo principal de Greengrass:

  • Núcleo de Greengrass versión 2.5.3 o posterior instalado en el dispositivo principal. Puede elegir una versión compatible al instalar el software AWS IoT Greengrass Core en un dispositivo principal.

  • El componente del proveedor PKCS#11 instalado en el dispositivo principal. Puede descargar e instalar este componente al instalar el software AWS IoT Greengrass principal en un dispositivo principal.

  • Un módulo de seguridad de hardware que admite el esquema de firmas PKCS#1 versión 1.5 y claves RSA con un tamaño de clave RSA-2048 (o mayor) o claves ECC.

    nota

    Para utilizar un módulo de seguridad de hardware con claves ECC, debe utilizar la versión del núcleo de Greengrass 2.5.6 o posterior.

    Para usar un módulo de seguridad de hardware y el administrador de secretos, debe usar un módulo de seguridad de hardware con claves RSA.

  • Una biblioteca de proveedores de PKCS #11 que el software AWS IoT Greengrass principal puede cargar en tiempo de ejecución (mediante libdl) para invocar las funciones de PKCS #11. La biblioteca de proveedores PKCS#11 debe implementar las siguientes operaciones de la API de PKCS#11:

    • C_Initialize

    • C_Finalize

    • C_GetSlotList

    • C_GetSlotInfo

    • C_GetTokenInfo

    • C_OpenSession

    • C_GetSessionInfo

    • C_CloseSession

    • C_Login

    • C_Logout

    • C_GetAttributeValue

    • C_FindObjectsInit

    • C_FindObjects

    • C_FindObjectsFinal

    • C_DecryptInit

    • C_Decrypt

    • C_DecryptUpdate

    • C_DecryptFinal

    • C_SignInit

    • C_Sign

    • C_SignUpdate

    • C_SignFinal

    • C_GetMechanismList

    • C_GetMechanismInfo

    • C_GetInfo

    • C_GetFunctionList

  • El módulo de hardware debe resolverlo la etiqueta de ranura, tal y como se define en la especificación de PKCS#11.

  • Debe almacenar la clave privada y el certificado en el HSM, en la misma ranura, y deben usar la misma etiqueta de objeto e ID de objeto, si el HSM admite el objeto. IDs

  • El certificado y la clave privada debe poder resolverla con etiquetas de objeto.

  • La clave privada debe tener los siguientes permisos:

    • sign

    • decrypt

  • (Opcional) Para usar el componente administrador de secretos, debe usar la versión 2.1.0 o posterior y la clave privada debe tener los siguientes permisos:

    • unwrap

    • wrap

Prácticas recomendadas de seguridad de hardware

Tenga en cuenta las siguientes prácticas recomendadas al configurar la seguridad del hardware en los dispositivos principales de Greengrass.

  • Genere claves privadas directamente en el HSM utilizando el generador de números aleatorios de hardware interno. Este enfoque es más seguro que importar una clave privada que se genere en otro lugar, ya que la clave privada permanece dentro del HSM.

  • Configure las claves privadas para que sean inmutables y prohíba la exportación.

  • Utilice la herramienta de aprovisionamiento que el proveedor de hardware de HSM recomiende para generar una solicitud de firma de certificado (CSR) con la clave privada protegida por hardware y, a continuación, utilice la consola o la API para generar un certificado de cliente. AWS IoT

nota

La práctica recomendada de seguridad para la rotación de claves no se aplica cuando las claves privadas se generan en un HSM.

AWS IoT Greengrass Instale el software principal con seguridad de hardware

Al instalar el software AWS IoT Greengrass Core, puede configurarlo para que utilice una clave privada que genere en un HSM. Este enfoque sigue las prácticas recomendadas de seguridad para generar la clave privada en el HSM, de modo que la clave privada permanezca dentro del HSM.

Para instalar el software AWS IoT Greengrass Core con seguridad de hardware, haga lo siguiente:

  1. Genere una clave privada en los HSM.

  2. Cree una solicitud de firma de certificado (CSR) de la clave privada.

  3. Cree un certificado de cliente a partir de la CSR. Puede crear un certificado firmado por AWS IoT o por otra autoridad de certificación (CA) raíz. Para obtener más información sobre cómo usar otra CA raíz, consulte Crear sus propios certificados de cliente en la Guía para desarrolladores de AWS IoT Core .

  4. Descargue el AWS IoT certificado e impórtelo al HSM.

  5. Instale el software AWS IoT Greengrass principal desde un archivo de configuración que especifique el uso del componente proveedor PKCS #11 y la clave privada y el certificado en el HSM.

Puede elegir una de las siguientes opciones de instalación para instalar el software AWS IoT Greengrass principal con seguridad de hardware:

Actualmente, AWS IoT Greengrass no admite la instalación del software AWS IoT Greengrass principal con seguridad de hardware cuando se instala con el aprovisionamiento automático de recursos o el aprovisionamiento de AWS IoT flotas.

Configuración de la seguridad del hardware en un dispositivo principal existente

Puede importar la clave privada y el certificado de un dispositivo principal a un HSM para configurar la seguridad del hardware.

Consideraciones
  • Debe tener acceso raíz al sistema de archivos del dispositivo principal.

  • En este procedimiento, se apaga el software AWS IoT Greengrass principal para que el dispositivo principal quede desconectado y no esté disponible mientras se configura la seguridad del hardware.

Para configurar la seguridad del hardware en un dispositivo principal existente, haga lo siguiente:

  1. Inicialice el HSM.

  2. Implemente el componente del proveedor PKCS#11 en el dispositivo principal.

  3. Detenga el software AWS IoT Greengrass principal.

  4. Importe la clave privada y el certificado del dispositivo principal al HSM.

  5. Actualice el archivo de configuración del software AWS IoT Greengrass principal para usar la clave privada y el certificado del HSM.

  6. Inicie el software AWS IoT Greengrass principal.

Paso 1: Inicializar el módulo de seguridad de hardware

Complete el siguiente paso para inicializar el HSM en su dispositivo principal.

Cómo inicializar el módulo de seguridad de hardware
  • Inicialice un token PKCS#11 en el HSM y guarde el ID de la ranura y el PIN de usuario correspondientes al token. Consulte la documentación de su HSM para obtener información sobre cómo inicializar un token. El ID de ranura y el PIN de usuario se utilizan más adelante al implementar y configurar el componente del proveedor PKCS#11.

Paso 2: Implementar el componente del proveedor PKCS#11

Complete los siguientes pasos para implementar y configurar el componente del proveedor PKCS#11. Puede implementar el componente en uno o más dispositivos principales.

  1. En el menú de navegación de la consola de AWS IoT Greengrass, elija Componentes.

  2. En la página Componentes, seleccione la pestaña Componentes públicos y, a continuación, elija aws.greengrass.crypto.Pkcs11Provider.

  3. En la página aws.greengrass.crypto.Pkcs11ProviderEn esta página, seleccione Implementar.

  4. En Agregar a la implementación, elija una implementación existente para revisarla o cree una nueva y, a continuación, elija Siguiente.

  5. Si opta por crear una nueva implementación, elija el dispositivo principal o el grupo de objetos de destino para la implementación. En la página Especificar el destino, en Destino de la implementación, elija un dispositivo principal o un grupo de objetos y, a continuación, elija Siguiente.

  6. En la página Seleccionar componentes, en Componentes públicos, seleccione aws.greengrass.crypto.Pkcs11Providery, a continuación, elija Siguiente.

  7. En la página Configurar componentes, seleccione aws.greengrass.crypto.Pkcs11Providery, a continuación, haga lo siguiente:

    1. Seleccione Configurar componente.

    2. En la configuración aws.greengrass.crypto.Pkcs11Providermodal, en Actualización de configuración, en Configuración para fusionar, introduzca la siguiente actualización de configuración. Actualice los siguientes parámetros de configuración con los valores de los dispositivos principales de destino. Especifique el ID de ranura y el PIN de usuario en los que inicializó anteriormente el token PKCS#11. Más adelante, importará la clave privada y el certificado a esta ranura del HSM.

      name

      Un nombre para la configuración de PKCS#11.

      library

      La ruta absoluta del archivo a la biblioteca de la implementación del PKCS #11 que el software AWS IoT Greengrass principal puede cargar con libdl.

      slot

      El ID de la ranura que contiene la clave privada y el certificado del dispositivo. Este valor es diferente del índice o la etiqueta de la ranura.

      userPin

      El PIN del usuario que se utiliza para acceder a la ranura.

      { "name": "softhsm_pkcs11", "library": "/usr/lib/softhsm/libsofthsm2.so", "slot": 1, "userPin": "1234" }
    3. Elija Confirmar para cerrar el cuadro y, a continuación, elija Siguiente.

  8. En la página Configurar ajustes avanzados, mantenga los ajustes de configuración predeterminados y seleccione Siguiente.

  9. En la página Revisar, elija Implementar.

    La implementación puede tardar hasta un minuto para completarse.

Para implementar el componente del proveedor PKCS#11, cree un documento de implementación que incluya aws.greengrass.crypto.Pkcs11Provider en el objeto components y especifique la actualización de configuración del componente. Siga las instrucciones en Crear implementaciones para crear una implementación nueva o revisar una implementación existente.

El siguiente ejemplo de documento de implementación parcial especifica la implementación y la configuración del componente del proveedor PKCS#11. Actualice los siguientes parámetros de configuración con los valores de los dispositivos principales de destino. Guarde el ID de ranura y el PIN de usuario para usarlos más adelante cuando importe la clave privada y el certificado al HSM.

name

Un nombre para la configuración de PKCS#11.

library

La ruta absoluta del archivo a la biblioteca de la implementación de PKCS #11 que el software AWS IoT Greengrass Core puede cargar con libdl.

slot

El ID de la ranura que contiene la clave privada y el certificado del dispositivo. Este valor es diferente del índice o la etiqueta de la ranura.

userPin

El PIN del usuario que se utiliza para acceder a la ranura.

{ "name": "softhsm_pkcs11", "library": "/usr/lib/softhsm/libsofthsm2.so", "slot": 1, "userPin": "1234" }
{ ..., "components": { ..., "aws.greengrass.crypto.Pkcs11Provider": { "componentVersion": "2.0.0", "configurationUpdate": { "merge": "{\"name\":\"softhsm_pkcs11\",\"library\":\"/usr/lib/softhsm/libsofthsm2.so\",\"slot\":1,\"userPin\":\"1234\"}" } } } }

La implementación puede tardar varios minutos en completarse. Puede usar el AWS IoT Greengrass servicio para comprobar el estado de la implementación. Puede consultar los registros del software AWS IoT Greengrass principal para comprobar que el componente del proveedor PKCS #11 se implementa correctamente. Para obtener más información, consulte los siguientes temas:

Si la implementación falla, puede solucionar el problema de la implementación en cada dispositivo principal. Para obtener más información, consulte Solución de problemas AWS IoT Greengrass V2.

Paso 3: Actualizar la configuración en el dispositivo principal

El software AWS IoT Greengrass Core utiliza un archivo de configuración que especifica cómo funciona el dispositivo. Este archivo de configuración incluye dónde encontrar la clave privada y el certificado que el dispositivo utiliza para conectarse a la Nube de AWS. Complete los siguientes pasos para importar la clave privada y el certificado del dispositivo principal al HSM y actualice el archivo de configuración para usar el HSM.

Cómo actualizar la configuración del dispositivo principal para utilizar la seguridad del hardware
  1. Detenga el software AWS IoT Greengrass principal. Si configuró el software AWS IoT Greengrass Core como un servicio del sistema con systemd, puede ejecutar el siguiente comando para detener el software.

    sudo systemctl stop greengrass.service
  2. Busque los archivos de clave privada y certificado del dispositivo principal.

    • Si instaló el software AWS IoT Greengrass Core con el aprovisionamiento automático o el aprovisionamiento de flota, la clave privada está en /greengrass/v2/privKey.key y el certificado está en. /greengrass/v2/thingCert.crt

    • Si instaló el software AWS IoT Greengrass Core con el aprovisionamiento manual, la clave privada existe de forma /greengrass/v2/private.pem.key predeterminada y el certificado existe de forma predeterminada. /greengrass/v2/device.pem.crt

    También puede comprobar las propiedades system.privateKeyPath y system.certificateFilePath en /greengrass/v2/config/effectiveConfig.yaml para encontrar la ubicación de estos archivos.

  3. Importe la clave privada y el certificado al HSM. Consulte la documentación de su HSM para obtener información sobre cómo importar claves privadas y certificados hacia él. Importe la clave privada y el certificado con el ID de ranura y el PIN de usuario en los que inicializó anteriormente el token PKCS#11. Debe usar la misma etiqueta de objeto e ID de objeto para la clave privada y el certificado. Guarde la etiqueta de objeto que especifique al importar cada archivo. Esta etiqueta se utiliza más adelante cuando se actualiza la configuración del software AWS IoT Greengrass principal para utilizar la clave privada y el certificado en el HSM.

  4. Actualice la configuración AWS IoT Greengrass principal para usar la clave privada y el certificado en el HSM. Para actualizar la configuración, modifique el archivo de configuración AWS IoT Greengrass principal y ejecute el software AWS IoT Greengrass principal con el archivo de configuración actualizado para aplicar la nueva configuración.

    Haga lo siguiente:

    1. Cree una copia de seguridad del archivo de configuración AWS IoT Greengrass principal. Puede utilizar esta copia de seguridad para restaurar el dispositivo principal si tiene problemas al configurar la seguridad del hardware.

      sudo cp /greengrass/v2/config/effectiveConfig.yaml ~/ggc-config-backup.yaml
    2. Abra el archivo de configuración de AWS IoT Greengrass Core en un editor de texto. Por ejemplo, puede ejecutar el comando siguiente para usar GNU nano para editar el archivo. Reemplace /greengrass/v2 con la ruta a la carpeta raíz de Greengrass.

      sudo nano /greengrass/v2/config/effectiveConfig.yaml
    3. Reemplace el valor de system.privateKeyPath por el URI PKCS#11 para la clave privada del HSM. iotdevicekeySustitúyala por la etiqueta del objeto en la que importaste anteriormente la clave privada y el certificado.

      pkcs11:object=iotdevicekey;type=private
    4. Reemplace el valor de system.certificateFilePath por el URI PKCS#11 del certificado en el HSM. iotdevicekeySustitúyala por la etiqueta de objeto en la que importaste anteriormente la clave privada y el certificado.

      pkcs11:object=iotdevicekey;type=cert

    Una vez finalizados estos pasos, la system propiedad del archivo de configuración AWS IoT Greengrass principal debería tener un aspecto similar al del ejemplo siguiente.

    system: certificateFilePath: "pkcs11:object=iotdevicekey;type=cert" privateKeyPath: "pkcs11:object=iotdevicekey;type=private" rootCaPath: "/greengrass/v2/rootCA.pem" rootpath: "/greengrass/v2" thingName: "MyGreengrassCore"
  5. Aplique la configuración en el archivo effectiveConfig.yaml actualizado. Ejecute Greengrass.jar con el parámetro --init-config en el que desee aplicar la configuración en effectiveConfig.yaml. Reemplace /greengrass/v2 con la ruta a la carpeta raíz de Greengrass.

    sudo java -Droot="/greengrass/v2" \ -jar /greengrass/v2/alts/current/distro/lib/Greengrass.jar \ --start false \ --init-config /greengrass/v2/config/effectiveConfig.yaml
  6. Inicie el software AWS IoT Greengrass Core. Si configuró el software AWS IoT Greengrass Core como un servicio del sistema con systemd, puede ejecutar el siguiente comando para iniciar el software.

    sudo systemctl start greengrass.service

    Para obtener más información, consulte Ejecute el software AWS IoT Greengrass principal.

  7. Compruebe los registros del software AWS IoT Greengrass principal para comprobar que el software se inicia y se conecta al Nube de AWS. El software AWS IoT Greengrass principal utiliza la clave privada y el certificado para conectarse a los AWS IoT Greengrass servicios AWS IoT y.

    sudo tail -f /greengrass/v2/logs/greengrass.log

    Los siguientes mensajes de registro a nivel de información indican que el software AWS IoT Greengrass principal se ha conectado correctamente a los servicios AWS IoT and AWS IoT Greengrass .

    2021-12-06T22:47:53.702Z [INFO] (Thread-3) com.aws.greengrass.mqttclient.AwsIotMqttClient: Successfully connected to AWS IoT Core. {clientId=MyGreengrassCore5, sessionPresent=false}
  8. (Opcional) Tras comprobar que el software AWS IoT Greengrass principal funciona con la clave privada y el certificado del HSM, elimine la clave privada y los archivos de certificado del sistema de archivos del dispositivo. Ejecute el siguiente comando y reemplace las rutas de los archivos por las rutas a los archivos de clave privada y certificado.

    sudo rm /greengrass/v2/privKey.key sudo rm /greengrass/v2/thingCert.crt

Uso del hardware sin compatibilidad con PKCS#11

La biblioteca de PKCS#11 suele ser proporcionada por el proveedor de hardware o es de código abierto. Por ejemplo, con un hardware que cumpla con los estándares (como el TPM1 .2), podría ser posible utilizar el software de código abierto existente. Si el hardware no tiene la correspondiente implementación de la biblioteca PKCS#11, o bien si desea escribir un proveedor de PKCS#11 personalizado, póngase en contacto con su representante de Enterprise Support de Amazon Web Services para plantearle cualquier pregunta relacionada con la integración.

Véase también