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 Greengrassactualmente 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 función le permite almacenar de forma segura la clave privada y el certificado 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 de administrador de secretos utiliza esta clave privada para cifrar y descifrar de forma segura los secretos que se despliegan en un dispositivo central 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 broker 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 admitan esta función en el catálogo de dispositivos AWS asociados.

Requisitos

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

  • Greengrass nucleus v2.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 está instalado en el dispositivo principal. Puede descargar e instalar este componente al instalar el software AWS IoT Greengrass Core en un dispositivo principal.

  • Módulo de seguridad de hardware que admite el esquema de firmas PKCS #1 v1.5 y claves RSA con un tamaño de clave RSA-2048 (o mayor) o claves ECC.

    nota

    Para usar un módulo de seguridad de hardware con claves ECC, debe usar Greengrass nucleus v2.5.6 o posterior.

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

  • Una biblioteca de proveedores PKCS #11 que el software AWS IoT Greengrass principal puede cargar en tiempo de ejecución (mediante libdl) para invocar las funciones PKCS #11. La biblioteca de proveedores PKCS #11 debe implementar las siguientes operaciones de la API 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 los ID de objeto.

  • El certificado y la clave privada deben poder resolverse mediante etiquetas de objetos.

  • La clave privada debe tener los siguientes permisos:

    • sign

    • decrypt

  • (Opcional) Para usar el componente de 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 recomienda 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 consistente en rotar las claves no se aplica cuando se generan claves privadas en un HSM.

Instale el software AWS IoT Greengrass 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 principal con seguridad de hardware, haga lo siguiente:

  1. Genere una clave privada en el HSM.

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

  3. Cree un certificado a partir de la CSR. Puede crear un certificado firmado por AWS IoT o por otra entidad emisora de certificados (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 AWS IoT Core desarrolladores.

  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 IoTflotas.

Configura 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 root 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: inicialice el módulo de seguridad de hardware

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

Para inicializar el módulo de seguridad de hardware
  • Inicialice un token PKCS #11 en el HSM y guarde el ID de ranura y el PIN de usuario correspondientes al token. Consulta la documentación de tu 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 de proveedor PKCS #11.

Paso 2: Implemente el componente de proveedor PKCS #11

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

  1. En el menú de navegación de la AWS IoT Greengrassconsola, 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.Pkcs11Provider, elija Implementar.

  4. En Añadir 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 cosas de destino para la implementación. En la página Especificar el destino, en Destino del despliegue, elija un dispositivo principal o un grupo de cosas y, a continuación, elija Siguiente.

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

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

    1. Seleccione Configurar componente.

    2. En el aws.greengrass.crypto.Pkcs11Provider modal Configurar, 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 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 utilizará para acceder a la ranura.

      { "name": "softhsm_pkcs11", "library": "/usr/lib/softhsm/libsofthsm2.so", "slot": 1, "userPin": "1234" }
    3. Selecciona Confirmar para cerrar el modal y, a continuación, selecciona 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 en completarse.

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

El siguiente ejemplo de documento de despliegue parcial especifica el despliegue y la configuración del componente de 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

Nombre para la configuración 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 utilizará 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 utilizar 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: Actualice la configuración del 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 utiliza el dispositivo para conectarse alNube 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.

Para 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 la clave privada y los archivos de 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 system.certificateFilePath propiedades system.privateKeyPath y /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 importarle claves privadas y certificados. Importe la clave privada y el certificado utilizando 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 del AWS IoT Greengrass núcleo en un editor de texto. Por ejemplo, puede ejecutar el siguiente comando para usar GNU nano para editar el archivo. /greengrass/v2Sustitúyala por la ruta a la carpeta raíz de Greengrass.

      sudo nano /greengrass/v2/config/effectiveConfig.yaml
    3. Sustituya el valor de por el URI PKCS #11 para la clave privada del HSM. system.privateKeyPath Sustituya iotdevicekey por la etiqueta del objeto donde importó anteriormente la clave privada y el certificado.

      pkcs11:object=iotdevicekey;type=private
    4. Sustituya el valor de por el system.certificateFilePath URI PKCS #11 del certificado en el HSM. Sustituya iotdevicekey por la etiqueta de objeto en la que importó 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 effectiveConfig.yaml archivo actualizado. Ejecute Greengrass.jar con el --init-config parámetro en el que desee aplicar la configuracióneffectiveConfig.yaml. /greengrass/v2Sustitúyala por 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 principal. 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 alNube 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 andAWS 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 sustituya 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

Utilice hardware que no sea compatible 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 hardware que cumplan los estándares (como TPM1.2), se puede utilizar software de código abierto. Sin embargo, si su hardware no tiene una implementación de biblioteca PKCS #11 correspondiente o si desea crear un proveedor PKCS #11 personalizado, póngase en contacto con su representante de Amazon Web Services Enterprise Support si tiene preguntas relacionadas con la integración.

Véase también