Partilhar via


Modelo de segurança da Atualização de Dispositivo

A Atualização de Dispositivo para o Hub IoT oferece um método seguro para implantar atualizações de firmware, imagens e aplicativos de dispositivos em seus dispositivos IoT. O fluxo de trabalho fornece um canal seguro de ponta a ponta com um modelo completo de cadeia de custódia que um dispositivo pode usar para provar que uma atualização é confiável, inalterada e intencional.

Cada etapa no fluxo de trabalho de Atualização de Dispositivo é protegida por meio de vários recursos e processos de segurança para garantir que cada etapa no pipeline execute uma transferência segura para a próxima. O código de referência do agente de Atualização de Dispositivo identifica e gerencia adequadamente quaisquer solicitações de atualização ilegítimas. O agente de referência também verifica cada download para garantir que o conteúdo seja confiável, inalterado e intencional.

Resumo

À medida que as atualizações são importadas para uma instância de Atualização de Dispositivo, o serviço carrega e verifica os arquivos binários de atualização para garantir que um usuário mal-intencionado não os tenha modificado. Uma vez verificado, o serviço de Atualização do Dispositivo gera um manifesto de atualização interno com hashes de ficheiro a partir do manifesto de importação e outros metadados. O serviço de Atualização de Dispositivo assina este manifesto de atualização.

Uma vez importado para o serviço e armazenado no Azure, o serviço de Armazenamento do Azure criptografa automaticamente os arquivos binários de atualização e os metadados do cliente associados em repouso. O serviço de Atualização de Dispositivo não fornece criptografia adicional automaticamente, mas permite que os desenvolvedores criptografem o próprio conteúdo antes que o conteúdo chegue ao serviço de Atualização de Dispositivo.

Quando uma atualização é implantada em dispositivos a partir do serviço de Atualização de Dispositivo, uma mensagem assinada é enviada pelo canal protegido do Hub IoT para o dispositivo. O agente de Atualização de Dispositivo valida a assinatura para determinar se ela é autêntica.

Qualquer download binário resultante é protegido através da validação da assinatura do manifesto de atualização. O manifesto de atualização contém hashes de ficheiro binário, por isso, quando o manifesto é de confiança, o agente de Atualização de Dispositivo confia nos hashes e fá-los corresponder aos binários. Uma vez que o binário de atualização é baixado e verificado, ele é entregue ao instalador no dispositivo.

Detalhes da implementação

Para garantir que o serviço de Atualização de Dispositivo seja reduzido para dispositivos simples e de baixo desempenho, o modelo de segurança usa chaves assimétricas brutas e assinaturas brutas. Eles usam formatos baseados em JSON, como JSON Web Tokens & JSON Web Keys.

Protegendo o conteúdo de atualização por meio do manifesto de atualização

O manifesto de atualização é validado usando duas assinaturas. As assinaturas são criadas usando uma estrutura que consiste em chaves de assinatura e chaves raiz .

O agente de Atualização de Dispositivo contém chaves públicas incorporadas que são usadas para todos os dispositivos compatíveis com a Atualização de Dispositivo. Essas chaves públicas são as chaves raiz . A Microsoft controla as chaves privadas correspondentes.

A Microsoft também gera um par de chaves pública/privada que não está incluído no agente de Atualização de Dispositivo ou armazenado no dispositivo. Esta chave é a chave de assinatura .

Quando uma atualização é importada para a Atualização de Dispositivo para Hub IoT e o serviço gera o manifesto de atualização, o serviço assina o manifesto usando a chave de assinatura e inclui a própria chave de assinatura, que é assinada por uma chave raiz. Quando o manifesto de atualização é enviado para o dispositivo, o agente de Atualização de Dispositivo recebe os seguintes dados de assinatura:

  1. O próprio valor da assinatura.
  2. O algoritmo usado para gerar #1.
  3. As informações de chave pública da chave de assinatura usada para gerar #1.
  4. A assinatura da chave de assinatura pública em #3.
  5. O ID de chave pública da chave raiz usada para gerar #3.
  6. O algoritmo usado para gerar #4.

O agente de Atualização de Dispositivo usa essas informações para validar que a assinatura da chave de assinatura pública é assinada pela chave raiz. Em seguida, o agente de Atualização de Dispositivo valida se a assinatura do manifesto de atualização está assinada pela chave de assinatura. Se todas as assinaturas estiverem corretas, o agente de Atualização de Dispositivo confiará no manifesto de atualização. Dado que o manifesto de atualização inclui os hashes de ficheiro que correspondem aos próprios ficheiros de atualização, os ficheiros de atualização também poderão ser de confiança se os hashes corresponderem.

Ter chaves raiz e de assinatura permite que a Microsoft role periodicamente a chave de assinatura, uma prática recomendada de segurança.

Assinatura Web JSON (JWS)

O updateManifestSignature é usado para garantir que as informações contidas no updateManifest não sejam modificadas. O updateManifestSignature é produzido usando uma assinatura Web JSON com chaves Web JSON, permitindo a verificação da fonte. A assinatura é uma cadeia de caracteres codificada Base64Url com três seções delineadas por ".". Consulte os métodos auxiliares jws_util.h para analisar e verificar chaves e tokens JSON.

JSON Web Signature é um padrão IETF proposto amplamente utilizado para assinar conteúdo usando estruturas de dados baseadas em JSON. É uma forma de garantir a integridade dos dados, verificando a assinatura dos dados. Mais informações podem ser encontradas no JSON Web Signature (JWS) RFC 7515.

JSON Web Token

Os Web Tokens JSON são um método aberto e padrão do setor para representar declarações com segurança entre duas partes.

Chaves raiz

Cada dispositivo de Atualização de Dispositivo deve conter um conjunto de chaves raiz. Essas chaves são a raiz da confiança para todas as assinaturas da Atualização de Dispositivo. Qualquer assinatura deve ser encadeada através de uma dessas chaves raiz para ser considerada legítima.

O conjunto de chaves raiz mudará com o tempo, pois é adequado girar periodicamente as chaves de assinatura para fins de segurança. Como resultado, o software do agente de Atualização de Dispositivo deve ser atualizado com o conjunto mais recente de chaves raiz em intervalos especificados pela equipe de Atualização de Dispositivo. A próxima rotação de chaves raiz planejada ocorrerá em agosto de 2025.

A partir da versão 1.1.0 do agente de Atualização de Dispositivo, o agente verifica automaticamente se há alterações nas chaves raiz sempre que ocorre uma implantação de uma atualização nesse dispositivo. Possíveis alterações:

  • Uma nova chave raiz está disponível.
  • Uma chave raiz existente está desativada (efetivamente "revogada"), o que significa que não é mais válida para estabelecer confiança.

Se uma ou ambas forem verdadeiras, o agente de Atualização de Dispositivo baixará automaticamente do serviço DU um novo pacote de chave raiz. Este pacote contém o conjunto completo de todas as chaves raiz e uma lista desabilitada contendo informações sobre quais chaves raiz e/ou chaves de assinatura não são mais válidas. O pacote de chave raiz é assinado com cada chave raiz, de modo que a confiança para o pacote pode ser estabelecida tanto a partir das chaves raiz originais que fazem parte do próprio agente DU quanto de quaisquer chaves raiz baixadas posteriormente. Quando o processo de validação estiver concluído, todas as novas chaves raiz serão consideradas confiáveis para validar a confiança com a chave de assinatura para um determinado manifesto de atualização, enquanto quaisquer chaves raiz ou chaves de assinatura listadas na lista desabilitada não serão mais confiáveis para essa finalidade.

Assinaturas

Uma chave de assinatura (pública) assinada por uma das chaves raiz acompanha todas as assinaturas. A assinatura identifica qual chave raiz foi usada para assinar a chave de assinatura.

Um agente de Atualização de Dispositivo deve validar assinaturas validando primeiro se a assinatura da chave de assinatura (pública) é adequada, válida e assinada por uma das chaves raiz aprovadas. Depois que a chave de assinatura for validada com êxito, a própria assinatura poderá ser validada usando a chave pública de assinatura agora confiável.

As chaves de assinatura são giradas em uma cadência mais rápida do que as chaves raiz, portanto, espere mensagens assinadas por várias chaves de assinatura diferentes.

O serviço de Atualização de Dispositivo gerencia a revogação de chaves de assinatura, se necessário, portanto, os usuários não devem tentar armazenar em cache as chaves de assinatura. Use sempre a chave de assinatura que acompanha uma assinatura.

Proteger o dispositivo

É importante garantir que os ativos de segurança relacionados à Atualização de Dispositivo estejam devidamente protegidos no seu dispositivo. Ativos como chaves raiz precisam ser protegidos contra modificações. Há várias maneiras de proteger as chaves raiz, como usar dispositivos de segurança (TPM, SGX, HSM, outros dispositivos de segurança) ou codificá-los no agente de Atualização de Dispositivo, como é feito hoje na implementação de referência. Este último requer assinatura digital do código do agente de Atualização de Dispositivo e ativação do suporte de Integridade de Código do sistema para proteger contra modificações maliciosas do código do Agente.

Outras medidas de segurança podem ser justificadas, como garantir que a transferência de componente para componente seja realizada de forma segura. Por exemplo, registrar uma conta isolada específica para executar os vários componentes e limitar as comunicações baseadas em rede (por exemplo, chamadas de API REST) apenas para localhost.

Próximos passos

Saiba como a Atualização de Dispositivo usa o controle de acesso baseado em função do Azure