Atestado de chave simétrica

Este artigo descreve o processo de atestado de identidade ao usar chaves simétricas com o Serviço de Provisionamento de Dispositivo. O atestado de chave simétrica é uma abordagem simples para autenticar um dispositivo com uma instância do Serviço de Provisionamento de Dispositivo. Esse método de atestado representa uma experiência de "Olá mundo" para desenvolvedores que são novos no provisionamento de dispositivos ou não têm requisitos de segurança rigorosos. O atestado de dispositivo usando um certificado TPM ou X.509 é mais seguro e deve ser usado para requisitos de segurança mais rigorosos.

Os registros de chave simétrica também fornecem uma maneira de dispositivos herdados com funcionalidade de segurança limitada inicializarem na nuvem por meio do Azure IoT.

Criação de chaves simétricas

Por padrão, o Serviço de Provisionamento de Dispositivo cria novas chaves simétricas com um comprimento de 64 bytes quando novos registros são criados com a opção Gerar chaves simétricas automaticamente habilitada.

Screenshot that shows a new individual enrollment with the autogenerate keys option selected.

Você também pode fornecer suas próprias chaves simétricas para inscrições desativando essa opção. As chaves simétricas devem estar no formato Base 64 e ter um comprimento de chave entre 16 bytes e 64 bytes.

Processo de certificação detalhado

O atestado de chave simétrica com o Serviço de Provisionamento de Dispositivo é realizado usando os mesmos tokens de segurança suportados pelos hubs IoT para identificar dispositivos. Esses tokens de segurança são tokens SAS (Assinatura de Acesso Compartilhado).

Os tokens SAS têm uma assinatura de hash que é criada com a chave simétrica. O Serviço de Provisionamento de Dispositivo recria a assinatura para verificar se um token de segurança apresentado durante o atestado é autêntico ou não.

Os tokens SAS têm a seguinte forma:

SharedAccessSignature sig={signature}&se={expiry}&skn={policyName}&sr={URL-encoded-resourceURI}

Aqui estão os componentes de cada token:

valor Description
{assinatura} Uma cadeia de caracteres de assinatura HMAC-SHA256. Para as inscrições individuais, esta assinatura é produzida com a chave simétrica (primária ou secundária) para execução do hash. Para os grupos de inscrição, uma chave derivada da chave do grupo de inscrição é utilizada para executar o hash. O hash é executado numa mensagem do formulário: URL-encoded-resourceURI + "\n" + expiry. Importante: A chave deve ser decodificada da base64 antes de ser usada para executar o cálculo HMAC-SHA256. Além disso, o resultado da assinatura deve ser codificado por URL.
{resourceURI} URI do ponto de extremidade de registro que pode ser acessado com esse token, começando com a ID de escopo para a instância do Serviço de Provisionamento de Dispositivo. Por exemplo, {Scope ID}/registrations/{Registration ID}
{prazo de validade} UTF8 strings para o número de segundos desde a época 00:00:00 UTC em 1 de janeiro de 1970.
{URL-encoded-resourceURI} Codificação de URL minúscula do URI de recurso minúsculo
{nome_da_política} O nome da política de acesso compartilhado à qual esse token se refere. O nome da política usado ao provisionar com atestado de chave simétrica é registro.

Para obter exemplos de código que criam um token SAS, consulte Tokens SAS.

Inscrições individuais com chaves simétricas

Quando um dispositivo está a atestar uma inscrição individual, o dispositivo utiliza a chave simétrica definida na entrada de inscrição individual para criar a assinatura do hash para o token SAS.

Inscrições de grupo com chaves simétricas

Ao contrário de uma inscrição individual, a chave simétrica de um grupo de inscrição não é usada diretamente pelos dispositivos quando eles provisionam. Em vez disso, os dispositivos provisionados por meio de um grupo de registro o fazem usando uma chave de dispositivo derivada. A chave de dispositivo derivada é um hash do ID de registro do dispositivo e é calculada usando a chave simétrica do grupo de registro. O dispositivo pode então usar sua chave de dispositivo derivada para assinar o token SAS que usa para se registrar no DPS. Como o dispositivo envia sua ID de registro quando se registra, o DPS pode usar a chave simétrica do grupo de registro para regenerar a chave de dispositivo derivada do dispositivo e verificar a assinatura no token SAS.

Primeiro, um ID de registro exclusivo é definido para cada dispositivo autenticado por meio de um grupo de registro. O ID de registo é uma cadeia de caracteres que não diferencia maiúsculas de minúsculas (até 128 caracteres) de carateres alfanuméricos mais carateres especiais válidos: - . _ :. O último caractere deve ser alfanumérico ou traço ('-'). O ID de registo deve ser algo único que identifique o dispositivo. Por exemplo, um endereço MAC ou número de série disponível para identificar exclusivamente um dispositivo. Nesse caso, um ID de registo pode ser composto pelo endereço MAC e número de série semelhante ao seguinte:

sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6

Uma vez definido um ID de registo para o dispositivo, a chave simétrica do grupo de inscrição é utilizada para calcular um hash HMAC-SHA256 do ID de registo para produzir uma chave de dispositivo derivada. Alguns exemplos de abordagens para calcular a chave de dispositivo derivada são dadas nas guias abaixo.

A extensão IoT para a CLI do Azure fornece o compute-device-key comando para gerar chaves de dispositivo derivadas. Este comando pode ser usado a partir de sistemas baseados em Windows ou Linux, no PowerShell ou em um shell Bash.

Substitua o valor do --key argumento pela Chave Primária do seu grupo de inscrição.

Substitua o valor do argumento pelo seu ID de --registration-id registro.

az iot dps enrollment-group compute-device-key --key 8isrFI1sGsIlvvFSSFRiMfCNzv21fjbE/+ah/lSh3lF8e2YG1Te7w1KpZhJFFXJrqYKi9yegxkqIChbqOS9Egw== --registration-id sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6

Exemplo de resultado:

"Jsm0lyGpjaVYVP2g3FnmnmG9dI/9qU24wNoykUmermc="

A chave de dispositivo resultante é então usada para gerar um token SAS a ser usado para atestado. Cada dispositivo em um grupo de inscrição é necessário para atestar o uso de um token de segurança gerado a partir de uma chave derivada exclusiva. A chave simétrica do grupo de inscrição não pode ser usada diretamente para atestado.

Instalar a chave de dispositivo derivada

Idealmente, as chaves do dispositivo são derivadas e instaladas na fábrica. Esse método garante que a chave de grupo nunca seja incluída em nenhum software implantado no dispositivo. Quando o dispositivo é atribuído um endereço MAC ou número de série, a chave pode ser derivada e injetada no dispositivo, no entanto, o fabricante escolhe armazená-lo.

Considere o seguinte diagrama que mostra uma tabela de chaves de dispositivo gerada numa fábrica através do hashing de cada ID de registo do dispositivo com a chave de inscrição do grupo (K).

Diagram that shows device keys being assigned at a factory.

A identidade de cada dispositivo é representada pelo ID de registo e pela chave de dispositivo derivada instalada de fábrica. A chave do dispositivo nunca é copiada para outro local e a chave de grupo nunca é armazenada em um dispositivo.

Se as chaves do dispositivo não estiverem instaladas de fábrica, um módulo de segurança de hardware HSM deve ser usado para armazenar com segurança a identidade do dispositivo.

Próximos passos

Agora que você já entendeu o atestado de chave simétrica, confira os seguintes artigos para saber mais: