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 dispositivos. O atestado de chave simétrica é uma abordagem simples para autenticar o dispositivo com uma instância do serviço de provisionamento de dispositivos. 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 tem requisitos de segurança rígidos. O atestado de dispositivos usando um TPM ou um certificado X.509 é mais seguro e deve ser usado para as exigências de segurança mais rigorosas.

As inscrições de chaves simétricas também fornecem uma maneira para dispositivos herdados com funcionalidade de segurança limitada inicializarem na nuvem por meio do Azure IoT.

Criação da chave simétrica

Por padrão, o Serviço de Provisionamento de Dispositivos cria novas chaves simétricas com 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 registros desabilitando essa opção. As chaves simétricas devem estar no formato Base 64 e ter um comprimento de chave entre 16 e 64 bytes.

Processo de atestado detalhado

O atestado de chave simétrica com o Serviço de Provisionamento de Dispositivos é executado usando os mesmos Tokens de segurança com suporte dos Hubs IoT para identificar os dispositivos. Esses tokens de segurança são tokens SAS (Assinatura de Acesso Compartilhado).

Os tokens SAS têm uma assinatura com hash que é criada usando a chave simétrica. O Serviço de Provisionamento de Dispositivos 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 o seguinte formato:

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

Estes são os componentes de cada token:

Valor Descrição
{signature} Uma cadeia de caracteres de assinatura HMAC-SHA256. Para registros individuais, essa assinatura é produzida usando a chave simétrica (primária ou secundária) para realizar o hash. Para grupos de registro, uma chave derivada da chave do grupo de registro é usada para executar o hash. O hash é executado em uma mensagem no formato: URL-encoded-resourceURI + "\n" + expiry. Importante: a chave deve ser decodificada de base64 antes de ser usada para executar a computação HMAC-SHA256. Além disso, o resultado da assinatura precisa ser codificada como URL.
{resourceURI} O URI do ponto de extremidade de registro que pode ser acessado com esse token, começando com a ID do escopo da instância do serviço de provisionamento de dispositivos. Por exemplo, {Scope ID}/registrations/{Registration ID}
{expiry} As cadeias de caracteres UTF8 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 em letras minúsculas do URI de recurso em letras minúsculas
{policyName} O nome da política de acesso compartilhado a qual se refere esse token. O nome da política usada durante o provisionamento com atestado de chaves simétricas é registro.

Para obter os exemplos de código que criam um token SAS, consulteTokens SAS.

Inscrições individuais com chaves simétricas

Quando um dispositivo é atestado com um registro individual, ele usa a chave simétrica definida na entrada do registro individual para criar a assinatura com hash para o token SAS.

Inscrições de grupo com chaves simétricas

Diferente de um registro individual, a chave simétrica de um grupo de registro não é usada diretamente pelos dispositivos no momento da provisão. Em vez disso, dispositivos provisionados por meio de um grupo de registro fazem isso usando uma chave de dispositivo derivada. A chave de dispositivo derivada é um hash da ID de registro do dispositivo e é calculada usando a chave simétrica do grupo de registro. Em seguida, o dispositivo pode usar sua chave de dispositivo derivada para assinar o token SAS que usa para se registrar no DPS. Como o dispositivo envia a ID de registro ao se registrar, 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, uma ID de registro exclusiva é definida para cada dispositivo autenticado por meio de grupo de registro. O ID de registro é uma cadeia de caracteres que não diferencia maiúsculas de minúsculas (até 128 caracteres) de caracteres alfanuméricos mais caracteres especiais válidos: - . _ :. O último caractere deve ser alfanumérico ou um traço ('-'). A ID de registro deve ser algo exclusivo 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, uma ID de registro pode ser composta do endereço MAC e do número de série, semelhante à seguinte:

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

Depois que uma ID de registro tiver sido definida para o dispositivo, a chave simétrica do grupo de registro é usada para calcular um hash HMAC-SHA256 da ID do registro para produzir uma chave de dispositivo derivada. Alguns exemplos de abordagens para computar a chave de dispositivo derivada são fornecidas nas guias abaixo.

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

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

Substitua o valor do argumento --registration-id por sua ID de 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

Resultados de exemplo:

"Jsm0lyGpjaVYVP2g3FnmnmG9dI/9qU24wNoykUmermc="

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

Instale a chave do dispositivo derivado

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

Considere o seguinte diagrama que mostra uma tabela de chaves de dispositivo geradas em um alocador inserindo hash em cada ID de registro de dispositivo com chave de registro de grupo (K).

Diagram that shows device keys being assigned at a factory.

A identidade de cada dispositivo é representada pela ID de registro e a chave do dispositivo derivada que instaladas no alocador. 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 forem instaladas de fábrica, um módulo de segurança de hardware HSM deverá ser usado para armazenar com segurança a identidade do dispositivo.

Próximas etapas

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