Integração de segurança de hardware - AWS IoT Greengrass

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Integração de segurança de hardware

nota

Esse recurso está disponível para a versão 2.5.3 e posterior do componente núcleo do Greengrass. AWS IoT Greengrassatualmente não oferece suporte a esse recurso nos dispositivos principais do Windows.

Você pode configurar o software AWS IoT Greengrass Core para usar um módulo de segurança de hardware (HSM) por meio da interface PKCS #11. Esse recurso permite que você armazene com segurança a chave privada e o certificado do dispositivo para que eles não sejam expostos ou duplicados no software. Você pode armazenar a chave privada e o certificado em um módulo de hardware, como um HSM ou um Trusted Platform Module (TPM).

O software AWS IoT Greengrass Core usa uma chave privada e um certificado X.509 para autenticar conexões com os serviços e. AWS IoT AWS IoT Greengrass O componente gerenciador de segredos usa essa chave privada para criptografar e descriptografar com segurança os segredos que você implanta em um dispositivo principal do Greengrass. Quando você configura um dispositivo principal para usar um HSM, esses componentes usam a chave privada e o certificado que você armazena no HSM.

O componente de agente Moquette MQTT também armazena uma chave privada para seu certificado de servidor MQTT local. Esse componente armazena a chave privada no sistema de arquivos do dispositivo na pasta de trabalho do componente. Atualmente, AWS IoT Greengrass não é compatível com o armazenamento dessa chave privada ou certificado em um HSM.

dica

Pesquise dispositivos compatíveis com esse recurso no Catálogo de dispositivos do AWS parceiro.

Requisitos

Você deve atender aos seguintes requisitos para usar um HSM em um dispositivo principal do Greengrass:

  • Greengrass nucleus v2.5.3 ou posterior instalado no dispositivo principal. Você pode escolher uma versão compatível ao instalar o software AWS IoT Greengrass Core em um dispositivo principal.

  • O componente do provedor PKCS #11 instalado no dispositivo principal. Você pode baixar e instalar esse componente ao instalar o software AWS IoT Greengrass Core em um dispositivo principal.

  • Um módulo de segurança de hardware que suporta o esquema de assinatura PKCS #1 v1.5 e chaves RSA com tamanho de chave RSA-2048 (ou maior) ou chaves ECC.

    nota

    Para usar um módulo de segurança de hardware com chaves ECC, você deve usar o Greengrass nucleus v2.5.6 ou posterior.

    Para usar um módulo de segurança de hardware e um gerenciador secreto, você deve usar um módulo de segurança de hardware com chaves RSA.

  • Uma biblioteca do provedor PKCS #11 que o software AWS IoT Greengrass Core pode carregar em tempo de execução (usando libdl) para invocar as funções do PKCS #11. A biblioteca do provedor PKCS #11 deve implementar as seguintes operações da 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

  • O módulo de hardware deve ser solucionado pelo rótulo do slot, conforme definido na especificação PKCS#11.

  • Você deve armazenar a chave privada e o certificado no HSM no mesmo slot, e eles devem usar o mesmo rótulo de objeto e ID de objeto, se o HSM suportar IDs de objeto.

  • O certificado e a chave privada devem ser resolvidos por rótulos de objetos.

  • A chave privada deve ter as seguintes permissões:

    • sign

    • decrypt

  • (Opcional) Para usar o componente gerenciador de segredos, você deve usar a versão 2.1.0 ou posterior, e a chave privada deve ter as seguintes permissões:

    • unwrap

    • wrap

Práticas recomendadas de segurança de hardware

Considere as seguintes melhores práticas ao configurar a segurança de hardware nos dispositivos principais do Greengrass.

  • Gerar chaves privadas diretamente no HSM usando o hardware interno gerador de número aleatório. Essa abordagem é mais segura do que importar uma chave privada que você gera em outro lugar, porque a chave privada permanece dentro do HSM.

  • Configure as chaves privadas para serem imutáveis e proibir a exportação.

  • Use a ferramenta de provisionamento recomendada pelo fornecedor de hardware do HSM para gerar uma solicitação de assinatura de certificado (CSR) usando a chave privada protegida por hardware e, em seguida, use o console ou a API para gerar um certificado de cliente. AWS IoT

nota

A melhor prática de segurança para alternar chaves não se aplica quando você gera chaves privadas em um HSM.

Instale o software AWS IoT Greengrass Core com segurança de hardware

Ao instalar o software AWS IoT Greengrass Core, você pode configurá-lo para usar uma chave privada gerada em um HSM. Essa abordagem segue as melhores práticas de segurança para gerar a chave privada no HSM, de forma que a chave privada permaneça dentro do HSM.

Para instalar o software AWS IoT Greengrass Core com segurança de hardware, faça o seguinte:

  1. Gere uma chave privada no HSM.

  2. Crie uma solicitação de assinatura de certificado (CSR) a partir da chave privada.

  3. Crie um certificado do CSR. Você pode criar um certificado assinado por AWS IoT ou por outra autoridade de certificação (CA) raiz. Para obter mais informações sobre como usar outra CA raiz, consulte Criar seus próprios certificados de cliente no Guia do AWS IoT Core desenvolvedor.

  4. Faça o download do AWS IoT certificado e importe-o para o HSM.

  5. Instale o software AWS IoT Greengrass Core a partir de um arquivo de configuração que especifica o uso do componente provedor PKCS #11 e da chave privada e do certificado no HSM.

Você pode escolher uma das seguintes opções de instalação para instalar o software AWS IoT Greengrass Core com segurança de hardware:

Atualmente, AWS IoT Greengrass não oferece suporte à instalação do software AWS IoT Greengrass Core com segurança de hardware quando você instala com provisionamento automático de recursos ou provisionamento de AWS IoT frota.

Configurar a segurança do hardware em um dispositivo principal existente

Você pode importar a chave privada e o certificado de um dispositivo principal para um HSM para configurar a segurança do hardware.

Considerações
  • Você deve ter acesso root ao sistema de arquivos do dispositivo principal.

  • Neste procedimento, você desliga o software AWS IoT Greengrass Core para que o dispositivo principal fique off-line e indisponível enquanto você configura a segurança do hardware.

Para configurar a segurança do hardware em um dispositivo principal existente, faça o seguinte:

  1. Inicialize o HSM.

  2. Implante o componente do provedor PKCS #11 no dispositivo principal.

  3. Pare o software AWS IoT Greengrass principal.

  4. Importe a chave privada e o certificado do dispositivo principal para o HSM.

  5. Atualize o arquivo de configuração do software AWS IoT Greengrass principal para usar a chave privada e o certificado no HSM.

  6. Inicie o software AWS IoT Greengrass principal.

Etapa 1: Inicializar o módulo de segurança de hardware

Conclua a etapa a seguir para inicializar o HSM em seu dispositivo principal.

Para inicializar o módulo de segurança de hardware
  • Inicialize um token PKCS #11 no HSM e salve o ID do slot e o PIN do usuário para o token. Consulte a documentação do seu HSM para saber como inicializar um token. Você usa o ID do slot e o PIN do usuário posteriormente ao implantar e configurar o componente provedor PKCS #11.

Etapa 2: Implantar o componente do provedor PKCS #11

Conclua as etapas a seguir para implantar e configurar o componente provedor PKCS #11. Você pode implantar o componente em um ou mais dispositivos principais.

  1. No menu de navegação AWS IoT Greengrassdo console, escolha Componentes.

  2. Na página Componentes, escolha a guia Componentes públicos e, em seguida, escolha aws.greengrass.crypto.Pkcs11Provider.

  3. Na página aws.greengrass.crypto.Pkcs11Provider, escolha Implantar.

  4. Em Adicionar à implantação, escolha uma implantação existente para revisar ou escolha criar uma nova implantação e, em seguida, escolha Avançar.

  5. Se você optar por criar uma nova implantação, escolha o dispositivo principal ou grupo de itens de destino para a implantação. Na página Especificar destino, em Destino de implantação, escolha um dispositivo principal ou grupo de itens e, em seguida, escolha Avançar.

  6. Na página Selecionar componentes, em Componentes públicos, selecione e aws.greengrass.crypto.Pkcs11Provider, em seguida, escolha Avançar.

  7. Na página Configurar componentes aws.greengrass.crypto.Pkcs11Provider, selecione e faça o seguinte:

    1. Escolha Configurar componente.

    2. No aws.greengrass.crypto.Pkcs11Provider modal Configurar, em Atualização de configuração, em Configuração para mesclar, insira a seguinte atualização de configuração. Atualize os seguintes parâmetros de configuração com valores para os dispositivos principais de destino. Especifique o ID do slot e o PIN do usuário em que você inicializou o token PKCS #11 anteriormente. Posteriormente, você importa a chave privada e o certificado para esse slot no HSM.

      name

      Um nome para a configuração PKCS #11.

      library

      O caminho absoluto do arquivo para a biblioteca da implementação do PKCS #11 que o software AWS IoT Greengrass Core pode carregar com libdl.

      slot

      O ID do slot que contém a chave privada e o certificado do dispositivo. Esse valor é diferente do índice do slot ou do rótulo do slot.

      userPin

      O PIN do usuário a ser usado para acessar o slot.

      { "name": "softhsm_pkcs11", "library": "/usr/lib/softhsm/libsofthsm2.so", "slot": 1, "userPin": "1234" }
    3. Escolha Confirmar para fechar o modal e, em seguida, escolha Avançar.

  8. Na página Definir configurações avançadas, mantenha as configurações padrão e escolha Avançar.

  9. Na página Review, escolha Deploy.

    A implantação pode levar até um minuto para ser concluída.

Para implantar o componente do provedor PKCS #11, crie um documento de implantação que inclua aws.greengrass.crypto.Pkcs11Provider no components objeto e especifique a atualização de configuração do componente. Siga as instruções Criar implantações para criar uma nova implantação ou revisar uma implantação existente.

O exemplo de documento de implantação parcial a seguir especifica a implantação e a configuração do componente provedor PKCS #11. Atualize os seguintes parâmetros de configuração com valores para os dispositivos principais de destino. Salve o ID do slot e o PIN do usuário para usar posteriormente ao importar a chave privada e o certificado para o HSM.

name

Um nome para a configuração PKCS #11.

library

O caminho absoluto do arquivo para a biblioteca da implementação do PKCS #11 que o software AWS IoT Greengrass Core pode carregar com libdl.

slot

O ID do slot que contém a chave privada e o certificado do dispositivo. Esse valor é diferente do índice do slot ou do rótulo do slot.

userPin

O PIN do usuário a ser usado para acessar o slot.

{ "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\"}" } } } }

A implantação pode levar vários minutos para ser concluída. Você pode usar o AWS IoT Greengrass serviço para verificar o status da implantação. Você pode verificar os registros do software AWS IoT Greengrass principal para verificar se o componente do provedor PKCS #11 foi implantado com êxito. Para ver mais informações, consulte:

Se a implantação falhar, você poderá solucionar o problema da implantação em cada dispositivo principal. Para ter mais informações, consulte Solução de problemas AWS IoT Greengrass V2.

Etapa 3: atualizar a configuração no dispositivo principal

O software AWS IoT Greengrass Core usa um arquivo de configuração que especifica como o dispositivo opera. Esse arquivo de configuração inclui onde encontrar a chave privada e o certificado que o dispositivo usa para se conectar aoNuvem AWS. Conclua as etapas a seguir para importar a chave privada e o certificado do dispositivo principal para o HSM e atualizar o arquivo de configuração para usar o HSM.

Para atualizar a configuração no dispositivo principal para usar a segurança de hardware
  1. Pare o software AWS IoT Greengrass principal. Se você configurou o software AWS IoT Greengrass Core como um serviço do sistema com o systemd, você pode executar o comando a seguir para interromper o software.

    sudo systemctl stop greengrass.service
  2. Encontre a chave privada e os arquivos de certificado do dispositivo principal.

    • Se você instalou o software AWS IoT Greengrass Core com provisionamento automático ou provisionamento de frota, a chave privada existe em/greengrass/v2/privKey.key, e o certificado existe em. /greengrass/v2/thingCert.crt

    • Se você instalou o software AWS IoT Greengrass Core com provisionamento manual, a chave privada existe /greengrass/v2/private.pem.key por padrão e o certificado existe /greengrass/v2/device.pem.crt por padrão.

    Você também pode verificar as system.certificateFilePath propriedades system.privateKeyPath e /greengrass/v2/config/effectiveConfig.yaml para encontrar a localização desses arquivos.

  3. Importe a chave privada e o certificado para o HSM. Consulte a documentação do seu HSM para saber como importar chaves privadas e certificados para ele. Importe a chave privada e o certificado usando o ID do slot e o PIN do usuário em que você inicializou o token PKCS #11 anteriormente. Você deve usar o mesmo rótulo de objeto e ID de objeto para a chave privada e o certificado. Salve o rótulo do objeto que você especifica ao importar cada arquivo. Você usa esse rótulo posteriormente ao atualizar a configuração do software AWS IoT Greengrass principal para usar a chave privada e o certificado no HSM.

  4. Atualize a configuração AWS IoT Greengrass principal para usar a chave privada e o certificado no HSM. Para atualizar a configuração, você modifica o arquivo de configuração AWS IoT Greengrass principal e executa o software AWS IoT Greengrass principal com o arquivo de configuração atualizado para aplicar a nova configuração.

    Faça o seguinte:

    1. Crie um backup do arquivo de configuração AWS IoT Greengrass principal. Você pode usar esse backup para restaurar o dispositivo principal se tiver problemas ao configurar a segurança do hardware.

      sudo cp /greengrass/v2/config/effectiveConfig.yaml ~/ggc-config-backup.yaml
    2. Abra o arquivo de configuração AWS IoT Greengrass principal em um editor de texto. Por exemplo, você pode executar o seguinte comando para usar o GNU nano para editar o arquivo. /greengrass/v2Substitua pelo caminho para a pasta raiz do Greengrass.

      sudo nano /greengrass/v2/config/effectiveConfig.yaml
    3. Substitua o valor do pelo system.privateKeyPath URI PKCS #11 para a chave privada no HSM. Substitua iotdevicekey pelo rótulo do objeto em que você importou a chave privada e o certificado anteriormente.

      pkcs11:object=iotdevicekey;type=private
    4. Substitua o valor do pelo system.certificateFilePath URI PKCS #11 para o certificado no HSM. Substitua iotdevicekey pelo rótulo do objeto em que você importou a chave privada e o certificado anteriormente.

      pkcs11:object=iotdevicekey;type=cert

    Depois de concluir essas etapas, a system propriedade no arquivo de configuração AWS IoT Greengrass principal deve ser semelhante ao exemplo a seguir.

    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 a configuração no effectiveConfig.yaml arquivo atualizado. Execute Greengrass.jar com o --init-config parâmetro no qual aplicar a configuraçãoeffectiveConfig.yaml. /greengrass/v2Substitua pelo caminho para a pasta raiz do 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 o software AWS IoT Greengrass principal. Se você configurou o software AWS IoT Greengrass Core como um serviço do sistema com o systemd, você pode executar o comando a seguir para iniciar o software.

    sudo systemctl start greengrass.service

    Para ter mais informações, consulte Execute o software AWS IoT Greengrass Core.

  7. Verifique os registros do software AWS IoT Greengrass principal para verificar se o software é iniciado e se conecta aoNuvem AWS. O software AWS IoT Greengrass Core usa a chave privada e o certificado para se conectar aos AWS IoT Greengrass serviços AWS IoT e.

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

    As seguintes mensagens de registro em nível de informação indicam que o software AWS IoT Greengrass Core se conecta com êxito aos serviços AWS IoT e. 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) Depois de verificar se o software AWS IoT Greengrass Core funciona com a chave privada e o certificado no HSM, exclua a chave privada e os arquivos do certificado do sistema de arquivos do dispositivo. Execute o comando a seguir e substitua os caminhos dos arquivos pelos caminhos para a chave privada e os arquivos de certificado.

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

Use hardware sem suporte ao PKCS #11

Em geral, a biblioteca PKCS#11 é fornecida pelo fornecedor de hardware ou é de código aberto. Por exemplo, com hardware compatível com os padrões (como TPM1.2), pode ser possível usar software de código aberto existente. No entanto, se o seu hardware não tiver uma implementação correspondente da biblioteca PKCS #11 ou se você quiser criar um provedor PKCS #11 personalizado, entre em contato com seu representante do Amazon Web Services Enterprise Support com perguntas relacionadas à integração.

Consulte também