Autenticar identidades com certificados X.509

O Hub IoT usa certificados X.509 para autenticar dispositivos. A autenticação x.509 permite a autenticação de um dispositivo IoT na camada física como parte do estabelecimento da conexão padrão do protocolo TLS.

Um Certificado de Autoridade de Certificação X.509 é um certificado digital que pode assinar outros deles. Um certificado digital será considerado um certificado X.509 se estiver em conformidade com o padrão de formatação de certificado prescrito pelo padrão RFC 5280 da IETF. Uma AC (autoridade de certificação) significa que o respectivo titular pode assinar outros certificados.

Este artigo descreve como usar certificados de AC (autoridade de certificação) X.509 para autenticar dispositivos que se conectam ao Hub IoT, que inclui as seguintes etapas:

  • Como adquirir um certificado de autoridade de certificação X.509
  • Como registrar seu certificado de autoridade de certificação X.509 no Hub IoT
  • Como assinar dispositivos usando certificados de AC X.509
  • Como são autenticados os dispositivos assinados com a AC X.509

Importante

A funcionalidade a seguir para dispositivos que usam a autenticação de autoridade de certificação (CA) do certificado X.509 ainda não está disponível e o modo de visualização deve ser habilitado:

  • HTTPS, MQTT por WebSockets e AMQP por protocolos WebSockets.
  • Carregamentos de arquivos (todos os protocolos).

Geralmente, esses recursos estão em disponibilidade geral em dispositivos que usam a autenticação de impressão digital X.509. Para saber mais sobre a autenticação X.509 com o Hub IoT, confira Certificados X.509 com suporte.

O recurso de AC X.509 permite a autenticação de dispositivo no Hub IoT usando uma AC (autoridade de certificação). Ele simplifica o processo inicial de regitro de dispositivo e a logística da cadeia de fornecimento durante a fabricação do dispositivo.

Autenticação e autorização

A autenticação é o processo de provar que você é quem diz ser. A autenticação verifica a identidade de um usuário ou dispositivo no Hub IoT. Às vezes, a autenticação é abreviada para AuthN. A autorização é o processo de confirmação de permissões para um usuário ou dispositivo autenticado no Hub IoT. Ela especifica quais recursos e comandos você tem permissão para acessar e o que você pode fazer com esses recursos e comandos. Às vezes, a autorização é abreviada para AuthZ.

Este artigo descreve a autenticação usando certificadosX.509. Você pode usar qualquer certificado X. 509 para autenticar um dispositivo com o IoT Hub, carregando uma impressão digital do certificado ou uma autoridade de certificação (CA) do Hub IoT do Azure.

Os certificados X.509 são usados para autenticação no Hub IoT, não para autorização. Ao contrário da ID do Microsoft Entra e das assinaturas de acesso compartilhado, você não pode personalizar permissões com certificados X.509.

Impor autenticação X.509

Para maior segurança, um hub IoT pode ser configurado para não permitir a autenticação de SAS para dispositivos e módulos, deixando o X.509 como a única opção de autenticação aceita. Atualmente, esse recurso não está disponível no portal do Azure. Para configurar, defina disableDeviceSAS e disableModuleSAS como true nas propriedades de recurso do Hub IoT:

az resource update -n <iothubName> -g <resourceGroupName> --resource-type Microsoft.Devices/IotHubs --set properties.disableDeviceSAS=true properties.disableModuleSAS=true

Benefícios da autenticação do Certificado de Autoridade de Certificação X.509

A autenticação da AC (autoridade de certificação) X.509 é uma abordagem para autenticar dispositivos no Hub IoT usando um método que simplifica bastante o gerenciamento de ciclo de vida e criação da identidade do dispositivo na cadeia de fornecimento.

Um atributo distinto da autenticação de AC X.509 é uma relação de um para muitos que um Certificado de Autoridade de Certificação tem com os respectivos dispositivos downstream. Essa relação permite o registro de qualquer número de dispositivos no Hub IoT registrando um Certificado de Autoridade de Certificação X.509 uma vez. Caso contrário, certificados exclusivos teriam que ser pré-registrados para cada dispositivo antes que um dispositivo possa se conectar. Essa relação de um para muitos também simplifica as operações de gerenciamento do ciclo de vida de certificados do dispositivo.

Outro atributo importante da autenticação de AC X.509 é a simplificação da logística da cadeia de fornecimento. A autenticação segura de dispositivos requer que cada dispositivo tenha um segredo único como uma chave como base para a relação de confiança. Na autenticação baseada em certificado, esse segredo é uma chave privada. Um fluxo de dados de fabricação de dispositivo típico envolve várias etapas e responsáveis. Gerenciar com segurança chaves privadas de dispositivo em vários responsáveis e manter a confiança é difícil e caro. Usar autoridades de certificação resolve esse problema, inscrevendo cada responsável em uma cadeia de confiança de criptografia em vez de confiar a confiança deles com chaves privadas de dispositivo. Cada responsável inscreve dispositivos na respectiva etapa do fluxo de fabricação. O resultado geral é uma cadeia de fornecimento ideal com responsabilidade interna por meio do uso da cadeia de confiança de criptografia.

Esse processo resulta na maior parte da segurança quando os dispositivos protegem suas chaves privadas exclusivas. Para isso, recomendamos o uso de HSMs (Módulos Seguros de Hardware) capazes de gerar chaves privadas internamente.

O DPS (Serviço de Provisionamento de Dispositivos) no Hub IoT do Azure facilita o provisionamento de grupos de dispositivos para hubs. Para obter mais informações, confira Tutorial: provisionar vários dispositivos X.509 usando grupos de registro.

Obter um certificado de Autoridade de Certificação X.509

O certificado de autoridade de certificação X.509 é a parte superior da cadeia de certificados para cada um dos seus dispositivos. Você pode adquirir ou criar um dependendo de como pretende usá-lo.

Para ambientes de produção, recomendamos que você adquira um certificado X.509 da AC de um fornecedor profissional de serviços de certificado. Adquirir um Certificado de Autoridade de Certificação tem a vantagem de ter uma AC raiz atuando como um terceiro confiável para garantir a legitimidade de seus dispositivos. Considere essa opção se os dispositivos fizerem parte de uma rede IoT aberta na qual interagem com produtos ou serviços de terceiros.

Você também pode criar um certificado de autoridade de certificação X.509 autoassinado para fins de teste. Para obter mais informações sobre como criar certificados para teste, consulte Criar e fazer upload certificados para teste.

Observação

Não recomendamos o uso de certificados autoassinados para ambientes de produção.

Independentemente de como você obtém o certificado da AC X.509, mantenha sempre a chave privada correspondente secreta e protegida. Essa precaução é necessária para estabelecer a confiança na autenticação de AC X.509.

Inscrever dispositivos em uma cadeia de certificados de confiança

O proprietário de um certificado de autoridade de certificação X.509 pode assinar criptograficamente uma AC intermediária, que, por sua vez, pode assinar outra AC intermediária e assim por diante, até a última autoridade de AC encerrar esse processo assinando um certificado de dispositivo. O resultado é uma cadeia em cascata de certificados conhecida como uma cadeia de certificados de confiança. Essa delegação de confiança é importante porque estabelece uma cadeia de custódia criptograficamente variável e evita o compartilhamento de chaves de assinatura.

Diagram that shows the certificates in a chain of trust.

O certificado do dispositivo (também chamado de certificado folha) deve ter seu CN (nome comum) definido como a ID do dispositivo (CN=deviceId) que foi usada ao registrar o dispositivo IoT no Hub IoT do Azure. Essa configuração é necessária para autenticação.

Para módulos que usam a autenticação X.509, o certificado do módulo deve ter seu CN (nome comum) formatado como CN=deviceId/moduleId.

Saiba como criar uma cadeia de certificados como feito durante a assinatura de dispositivos.

Registrar o Certificado de Autoridade de Certificação X.509 no Hub IoT

Registre o certificado da AC X.509 no Hub IoT, que o utiliza para autenticar dispositivos durante o registro e a conexão. O registro do Certificado de Autoridade de Certificação X.509 é um processo de duas etapas que inclui o upload do arquivo do certificado e, em seguida, o estabelecimento da prova de posse.

O processo de upload implica o carregamento de um arquivo que contém o certificado. Esse arquivo nunca deve conter nenhuma chave privada.

A etapa de prova de posse envolve um processo de desafio criptográfico e processo de resposta entre você e o Hub IoT. Considerando que o conteúdo de certificados digitais é público e, portanto, suscetível a espionagem, o Hub IoT precisa verificar se você realmente tem o certificado de autoridade de certificação. Você pode optar por verificar automaticamente ou manualmente a propriedade. Para verificação manual, o Hub IoT do Azure gera um desafio aleatório que você assina com a chave privada correspondente do certificado de autoridade de certificação. Se você manteve a chave privada em segredo e a protegeu conforme recomendado, somente você tem o conhecimento para concluir esta etapa. A confidencialidade de chaves privadas é a fonte de confiança nesse método. Depois de assinar o desafio, conclua esta etapa carregando um arquivo que contém os resultados.

Saiba como registrar o Certificado de Autoridade de Certificação.

Autenticar dispositivos assinados com certificados de AC X.509

Cada Hub IoT tem um registro de identidade que armazena informações sobre os dispositivos e módulos com permissão para se conectar a ele. Antes de um dispositivo ou módulo poder se conectar, deve existir uma entrada para esse dispositivo ou módulo no registro de identidade do Hub IoT. O dispositivo ou módulo autentica com o hub IoT com base em credenciais armazenadas no registro de identidade.

Com o Certificado de Autoridade de Certificação X.509 registrado e os dispositivos assinados em uma cadeia de certificados de confiança, a etapa final é a autenticação do dispositivo quando ele se conecta. Quando um dispositivo assinado pela AC X.509 se conecta, ele carrega a cadeia de certificados para validação. A cadeia inclui todos os certificados de AC e de dispositivo intermediários. Com essas informações, o Hub IoT autentica o dispositivo em um processo de duas etapas. O Hub IoT valida criptograficamente a cadeia de certificados para consistência interna e, em seguida, emite um desafio de prova de posse para o dispositivo. O Hub IoT declara o dispositivo como autêntico em uma resposta bem-sucedida de prova de posse do dispositivo. Esta declaração pressupõe que a chave privada do dispositivo é protegida e que somente o dispositivo pode responder a esse desafio. Recomendamos o uso de chips seguros como HSM (Módulos Seguros de Hardware) em dispositivos para proteger as chaves privadas.

Uma conexão bem-sucedida do dispositivo com o Hub IoT conclui o processo de autenticação e também é uma indicação de uma configuração apropriada. Toda vez que um dispositivo se conecta, o Hub IoT renegocia a sessão TLS e verifica o certificado X.509 do dispositivo.

Revogar um certificado de dispositivo

O Hub IoT não verifica as listas de certificados revogados da autoridade certificadora ao autenticar dispositivos com a autenticação baseada em certificado. Se você tiver um dispositivo que precisa ser impedido de se conectar ao Hub IoT devido a um certificado potencialmente comprometido, desabilite-o no registro de identidade. Para saber mais, confira Desabilitar ou excluir um dispositivo em um hub IoT.

Cenário de exemplo

A empresa X faz Widgets inteligentes X projetados para instalação profissional. A empresa X terceiriza a instalação e a produção. A fábrica Y produz Widgets inteligentes X e o técnico Z os instala. A empresa X deseja que o Widget inteligente X seja enviado diretamente da fábrica Y para o técnico Z para instalação e, em seguida, que ele se conecte diretamente à instância de Hub IoT da empresa X. Para fazer isso, a Empresa X precisará concluir algumas operações de configuração única para preparar o Widget inteligente X para conexão automática. Esse cenário de ponta a ponta inclui as seguintes etapas:

  1. Adquirir o Certificado de Autoridade de Certificação X.509

  2. Registrar o Certificado de Autoridade de Certificação X.509 no Hub IoT

  3. Inscrever dispositivos em uma cadeia de certificados de confiança

  4. Conectar os dispositivos

Estas etapas são demonstradas no Tutorial: Criar e carregar certificados para teste.

Adquirir o certificado

A empresa X pode adquirir um Certificado de Autoridade de Certificação X.509 de uma autoridade de certificado raiz pública ou criar um por meio de um processo autoassinado. Qualquer uma das opções envolve duas etapas básicas: gerar um par de chaves pública/privada e assinar a chave pública em um certificado.

Detalhes sobre como realizar essas etapas diferem com vários provedores de serviço.

Diagram showing the flow for generating an X.509 CA certificate.

Comprar um certificado

Adquirir um Certificado de Autoridade de Certificação tem a vantagem de ter uma AC raiz bem conhecida atuando como um terceiro confiável para garantir a legitimidade de dispositivos IoT quando os dispositivos se conectarem. Escolha essa opção se os dispositivos interagirem com produtos ou serviços de terceiros.

Para adquirir um certificado de AC X.509, escolha um provedor de serviços de certificado raiz. O provedor de AC raiz orientará você sobre como criar o par de chaves públicas/privadas e como gerar uma CSR (solicitação de assinatura de certificado) para os serviços correspondentes. Uma CSR é o processo formal de se candidatar para um certificado de uma autoridade de certificação. O resultado desta aquisição é um certificado para uso como um certificado de autoridade. Por causa da ubiquidade de certificados X.509, é provável que o certificado tenha sido formatado corretamente de acordo com o padrão RFC 5280 da IETF.

Criará um certificado autoassinado

O processo para criar um Certificado de Autoridade de Certificação X.509 autoassinado é semelhante à compra de um, exceto que ele não envolve um signatário de terceiros, como a autoridade de certificação raiz. Em nosso exemplo, a empresa X assinaria seu certificado de autoridade em vez de uma autoridade de certificação raiz.

Você pode escolher essa opção para teste até que esteja pronto para comprar um certificado de autoridade. Você também pode usar um Certificado de Autoridade de Certificação X.509 autoassinado em produção se os dispositivos não se conectarem a nenhum serviço de terceiros fora do Hub IoT.

Registrar o certificado no Hub IoT

A Company-X precisa registrar a AC X.509 no Hub IoT, onde serve para autenticar Widgets Smart-X à medida que eles se conectam. Este processo único habilita a capacidade de autenticar e gerenciar qualquer quantidade de dispositivos do Widget inteligente X. A relação um para muitos entre certificados de autoridade de certificação e certificados de dispositivo é uma das principais vantagens de usar o método de autenticação de AC X.509. A alternativa seria carregar impressões digitais do certificado individuais para cada dispositivo do Widget inteligente X, aumentando assim os custos operacionais.

Registrar o Certificado de Autoridade de Certificação X.509 é um processo de duas etapas: carregar o certificado e fornecer a prova de posse.

Diagram showing the process flow for registering an X.509 CA certificate.

Carregar o certificado

O processo de upload do Certificado de Autoridade de Certificação X.509 é apenas isso: carregar o Certificado de Autoridade de Certificação para o Hub IoT. O Hub IoT espera o certificado em um arquivo.

O arquivo de certificado não deve, em hipótese alguma, conter nenhuma chave privada. Práticas recomendadas de padrões que regem a PKI (Infraestrutura de chave pública) exigem que o conhecimento da chave privada da empresa X resida exclusivamente dentro dela.

Provar posse

O Certificado de Autoridade de Certificação X.509, assim como qualquer certificado digital, é de informações públicas que são suscetíveis à interceptação. Dessa maneira, um interceptador pode interceptar um certificado e tentar carregá-lo como seu próprio. Em nosso exemplo, o Hub IoT precisa garantir que o Certificado de Autoridade de Certificação carregado pela empresa X realmente pertence a ela. Ele o faz ao desafiar a empresa X a provar que ela tem a posse do certificado por meio de um fluxo de PoP (prova de posse).

Para o fluxo de prova de posse, o Hub IoT gera um número aleatório a ser assinado pela empresa-X usando a chave privada. Se a empresa-X seguisse as práticas recomendadas de PKI e protegesse a chave privada, somente ela seria capaz de responder corretamente ao desafio da prova de posse. O Hub IoT prossegue para registrar o Certificado de Autoridade de Certificação X.509 após uma resposta bem-sucedida do desafio de prova de posse.

Uma resposta bem-sucedida para o desafio de prova de posse do Hub IoT conclui o registro da AC X.509.

Inscrever dispositivos em uma cadeia de certificados de confiança

A IoT requer uma identidade exclusiva para cada dispositivo que se conecta. Para a autenticação baseada em certificado, essas identidades estão na forma de certificados. Em nosso exemplo, autenticação baseada em certificado significa que cada Smart-X-Widget deve ter um certificado de dispositivo exclusivo.

Uma maneira válida, mas ineficiente, de fornecer certificados exclusivos em cada dispositivo é pré-gerar certificados para Widgets Smart-X e confiar aos parceiros da cadeia de suprimentos com as chaves privadas correspondentes. Para a empresa X, isso significa confiar na fábrica Y e no técnico Z. Esse método vem com desafios que devem ser superados para garantir a confiança, da seguinte maneira:

  • Ter de compartilhar as chaves privadas de dispositivo com parceiros da cadeia de fornecimento, além de ignorar práticas recomendadas de PKI de nunca compartilhar as chaves privadas, torna a criação da relação de confiança na cadeia de fornecimento cara. Isso exige sistemas como salas seguras para abrigar chaves privadas de dispositivos e processos como auditorias de segurança periódicas. Ambos aumentam o custo para a cadeia de fornecimento.

  • Responsabilizar-se com segurança por dispositivos na cadeia de fornecimento e posteriormente gerenciá-los na implantação se torna uma tarefa individual para cada par de chave para dispositivo do ponto de geração do certificado exclusivo do dispositivo (e chave privada,) até a desativação do dispositivo. Isso impede o gerenciamento de grupo de dispositivos, a menos que o conceito de grupos seja explicitamente criado no processo de alguma forma. Portanto, a responsabilidade segura e o gerenciamento de ciclo de vida do dispositivo tornam-se um fardo enorme para as operações.

A autenticação de Certificado de Autoridade de Certificação X.509 oferece soluções elegantes para esses desafios usando cadeias de certificados. Uma cadeia de certificados resulta de uma AC assinando uma AC intermediária que, por sua vez, assina outra AC intermediária e assim por diante até que uma AC intermediária final assina um dispositivo. Em nosso exemplo, a Empresa X assina a Fábrica-Y, que, por sua vez, assina o Técnico Z que assina finalmente o Widget inteligente X.

Diagram showing an example of a certificate chain hierarchy.

Esta cascata de certificados acima na cadeia representa a transmissão de autoridade lógica. Muitas cadeias de fornecimento seguem essa transmissão lógica em que cada AC intermediária é inserida na cadeia enquanto recebe todos os certificados de AC de upstream e a última AC intermediária finalmente assina cada dispositivo e insere todos os certificados de autoridade da cadeia no dispositivo. Essa entrega é comum quando a empresa de fabricação contratada com uma hierarquia de fábricas encomenda uma fábrica específica para fazer a fabricação. Embora a hierarquia possa ter diversos níveis (por exemplo, por geografia/tipo de produto/linha de produção), somente a fábrica no final interage com o dispositivo, mas a cadeia é mantida desde o topo da hierarquia.

As cadeias alternativas podem ter diferentes ACs intermediárias interagindo com o dispositivo, caso em que a AC que interage com o dispositivo insere o conteúdo da cadeia de certificados nesse ponto. Modelos híbridos também são possíveis em que somente algumas das AC têm interação física com o dispositivo.

O diagrama a seguir mostra como a cadeia de certificados de confiança se reúne em nosso exemplo de Widget inteligente X.

Diagram showing the certificate chain of trust from the certificates of one company to the certificates of another company.

  1. A empresa X nunca interage fisicamente com nenhum dos Widgets inteligentes X. Ele inicia a cadeia de certificados de confiança assinando o Certificado de Autoridade de Certificação intermediário da fábrica Y.
  2. A fábrica Y agora tem o próprio Certificado de Autoridade de Certificação intermediário e uma assinatura da empresa X. Ele passa cópias desses itens para o dispositivo. Ele também usa o Certificado de Autoridade de Certificação intermediário para assinar o Certificado de Autoridade de Certificação intermediário do técnico Z e o certificado de dispositivo do Widget inteligente X.
  3. O técnico Z agora tem o próprio Certificado de Autoridade de Certificação intermediário e uma assinatura da fábrica Y. Ele passa cópias desses itens para o dispositivo. Ele também usa o Certificado de Autoridade de Certificação intermediário para assinar o certificado de dispositivo do Widget inteligente X.
  4. Cada dispositivo do Widget inteligente X agora tem o próprio certificado de dispositivo exclusivo e cópias das chaves públicas e assinaturas de cada Certificado de Autoridade de Certificação intermediário com o qual interagiu em toda a cadeia de fornecimento. Esses certificados e assinaturas podem ser rastreados até a raiz da empresa X original.

O método de AC de autenticação introduz a responsabilidade segura sobre a cadeia de fornecimento de fabricação do dispositivo. Por causa do processo de cadeia de certificados, as ações de cada membro da cadeia são registradas criptograficamente e podem ser verificadas.

Esse processo se baseia na suposição de que o par de chaves pública/privada do dispositivo exclusivo é criado de maneira independente e que a chave privada está sempre protegida dentro do dispositivo. Felizmente, existem chips de silício seguros na forma de HSM (Módulos Seguros de Hardware) que são capazes de gerar chaves internamente e proteger chaves privadas. A empresa X somente precisa adicionar um desses chips seguros na lista de materiais de componentes do Widget inteligente X.

Autenticar dispositivos

Depois que o Certificado de Autoridade de Certificação de nível superior é registrado no Hub IoT e os dispositivos têm os respectivos certificados exclusivos, como eles se conectam? Registrando um certificado de AC X.509 no Hub IoT uma vez, como possivelmente milhões de dispositivos se conectam e são autenticados pela primeira vez? Por meio do mesmo upload de certificado e do fluxo de prova de posse que encontramos anteriormente com o registro do certificado de AUTORIDADE de certificação X.509.

Dispositivos fabricados para autenticação de AC X.509 são equipados com certificados de dispositivo exclusivos e uma cadeia de certificados de sua respectiva cadeia de fornecimento de fabricação. A conexão do dispositivo, mesmo pela primeira vez, acontece em um processo de duas etapas: o upload da cadeia de certificados e a prova de posse.

Durante o carregamento da cadeia de certificados, o dispositivo carrega o certificado exclusivo e a respectiva cadeia de certificados no Hub IoT. Usando o Certificado de Autoridade de Certificação X.509 previamente registrado, o Hub IoT valida que a cadeia de certificados carregada é consistente internamente e que a cadeia foi originada pelo proprietário válido do Certificado de Autoridade de Certificação X.509. Tal como acontece com o processo de registro de AC X.509, o Hub IoT usa um processo de resposta de desafio de prova de posse para verificar se a cadeia e, portanto, o certificado do dispositivo, pertence ao dispositivo que o carrega. Uma resposta bem-sucedida aciona o Hub IoT para aceitar o dispositivo como autêntico e conceda a ele a conexão.

Em nosso exemplo, cada Widget inteligente X deve carregar seu certificado de dispositivo exclusivo junto com certificados de AC X.509 da Fábrica Y e do Técnico Z e, em seguida, responder ao desafio de prova de posse do Hub IoT.

Diagram showing the flow for validating a device certificate.

A base da confiança depende da proteção de chaves privadas, incluindo as chaves privadas de dispositivo. Portanto, nunca é demais enfatizar a importância de chips de silicone seguros na forma de HSM (Módulos Seguros de Hardware) para proteger as chaves privadas de dispositivo e da prática recomendada geral de nunca compartilhar nenhuma chave privada, como quando uma fábrica confia em outra sua chave privada.

Próximas etapas

Use o Serviço de Provisionamento de Dispositivos para provisionar vários dispositivos X.509 usando grupos de registro.

Para saber mais sobre os campos que compõem um certificado X.509, consulte certificados X.509.

Se você tiver um certificado de CA raiz ou um certificado de CA subordinado e quiser carregá-lo no seu hub IoT, verifique se você é o proprietário desse certificado. Para obter mais informações, consulte Tutorial: Criar e carregar certificados para teste.