Suporte de segurança da camada de transporte (TLS) em Hub IoT

Hub IoT utiliza a Segurança da Camada de Transporte (TLS) para garantir ligações a partir de dispositivos e serviços IoT. Atualmente são suportadas três versões do protocolo TLS, nomeadamente as versões 1.0, 1.1 e 1.2.

Os TLS 1.0 e 1.1 são considerados legados e estão previstos para a depreciação. Para mais informações, consulte Aprecação de TLS 1.0 e 1.1 para Hub IoT. Para evitar problemas futuros, utilize o TLS 1.2 como a única versão TLS ao ligar-se a Hub IoT.

Certificado TLS do servidor da Hub IoT

Durante um aperto de mão TLS, Hub IoT apresenta certificados de servidor com chave RSA para conectar clientes. A sua raiz é a Baltimore Cybertrust Root CA. Como a raiz de Baltimore está em fim de vida, vamos migrar para uma nova raiz chamada DigiCert Global G2. Esta alteração irá afetar todos os dispositivos que se conectam atualmente a Hub IoT. Para preparar esta migração e para todos os outros detalhes, consulte a atualização do certificado IoT TLS.

Certificado de Criptografia de Curva Elíptica (ECC) (pré-visualização)

Hub IoT certificado de ECC server TLS está disponível para pré-visualização pública. Ao oferecer segurança semelhante aos certificados RSA, a validação do certificado ECC (com suites de cifra apenas ECC) utiliza até 40% menos computação, memória e largura de banda. Estas poupanças são importantes para dispositivos IoT devido aos seus perfis e memória mais pequenos, e para suportar casos de utilização em ambientes limitados de largura de banda de rede. A raiz do certificado de servidor ECC é DigiCert Global Root G3.

Para pré-visualizar o certificado de servidor ECC da Hub IoT:

  1. Crie um novo hub IoT com o modo de pré-visualização ligado.
  2. Configure o seu cliente para incluir apenas suítes de cifra ECDSA e excluir quaisquer RSA. Estas são as suítes de cifra suportadas para a pré-visualização do certificado ECC:
    • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
    • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
    • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
    • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
  3. Ligação o seu cliente ao centro de IoT de pré-visualização.

Aplicação TLS 1.2 disponível em regiões selecionadas

Para maior segurança, configuure os seus Hubs IoT apenas para permitir ligações ao cliente que utilizem a versão 1.2 do TLS e para impor o uso de suites de cifra. Esta característica só é suportada nestas regiões:

  • E.U.A. Leste
  • E.U.A. Centro-Sul
  • E.U.A. Oeste 2
  • US Gov - Arizona
  • Us Gov Virginia (O suporte TLS 1.0/1.1 não está disponível nesta região - A aplicação da aplicação do TLS 1.2 deve ser ativada ou a criação de hub IoT falha)

Para ativar a aplicação do TLS 1.2, siga os passos no hub Create IoT em portal do Azure, exceto

  • Escolha uma Região de uma região da lista acima.

  • Gestão -> Advanced -> Segurança da Camada de Transporte (TLS) -> Versão TLS mínima, selecione 1.2. Esta definição só aparece para o hub IoT criado na região apoiada.

    Screenshot showing how to turn on TLS 1.2 enforcement during IoT hub creation

Para utilizar o modelo ARM para a criação, prevê uma nova Hub IoT em qualquer uma das regiões apoiadas e definir a minTlsVersion propriedade 1.2 na especificação de recursos:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "type": "Microsoft.Devices/IotHubs",
            "apiVersion": "2020-01-01",
            "name": "<provide-a-valid-resource-name>",
            "location": "<any-of-supported-regions-below>",
            "properties": {
                "minTlsVersion": "1.2"
            },
            "sku": {
                "name": "<your-hubs-SKU-name>",
                "tier": "<your-hubs-SKU-tier>",
                "capacity": 1
            }
        }
    ]
}

O recurso Hub IoT criado utilizando esta configuração recusará clientes de dispositivos e serviços que tentem ligar-se através das versões TLS 1.0 e 1.1. Da mesma forma, o aperto de mão TLS será recusado se a ClientHello mensagem não enumerar nenhuma das cifras recomendadas.

Nota

A minTlsVersion propriedade é apenas de leitura e não pode ser alterada uma vez que o seu recurso Hub IoT é criado. Por isso, é essencial que teste e valide adequadamente que todos os seus dispositivos e serviços IoT sejam compatíveis com o TLS 1.2 e as cifras recomendadas com antecedência.

Após as falhas, a minTlsVersion propriedade do seu Hub IoT permanecerá eficaz na região geo-emparelhada após o failover.

Suítes cifra

Os hubs IoT configurados para aceitar apenas TLS 1.2 também aplicam a utilização das seguintes suítes de cifra recomendadas:

  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384

Para os hubs IoT não configurados para a execução TLS 1.2, o TLS 1.2 ainda funciona com as seguintes suítes cifras:

  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_RSA_WITH_AES_256_GCM_SHA384
  • TLS_RSA_WITH_AES_128_GCM_SHA256
  • TLS_RSA_WITH_AES_256_CBC_SHA256
  • TLS_RSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
  • TLS_RSA_WITH_AES_256_CBC_SHA
  • TLS_RSA_WITH_AES_128_CBC_SHA
  • TLS_RSA_WITH_3DES_EDE_CBC_SHA

Um cliente pode sugerir uma lista de suítes de cifra mais altas para usar durante ClientHello. No entanto, alguns deles podem não ser apoiados por Hub IoT (por exemplo, ECDHE-ECDSA-AES256-GCM-SHA384). Neste caso, Hub IoT tentarão seguir a preferência do cliente, mas eventualmente negociar a suite de cifra com ServerHello.

Configuração TLS para SDK e IoT Edge

Utilize os links abaixo para configurar o TLS 1.2 e permitiu cifras em Hub IoT SDKs cliente.

Linguagem Versões que suportam TLS 1.2 Documentação
C Tag 2019-12-11 ou mais recente Ligação
Python Versão 2.0.0 ou mais recente Ligação
C# Versão 1.21.4 ou mais recente Ligação
Java Versão 1.19.0 ou mais recente Ligação
NodeJS Versão 1.12.2 ou mais recente Ligação

IoT Edge dispositivos podem ser configurados para utilizar O TLS 1.2 ao comunicar com Hub IoT. Para o efeito, utilize a página de documentação IoT Edge.

Autenticação do dispositivo

Após um aperto de mão TLS bem sucedido, Hub IoT pode autenticar um dispositivo usando uma chave simétrica ou um certificado X.509. Para a autenticação baseada em certificados, este pode ser qualquer certificado X.509, incluindo ECC. Hub IoT valida o certificado contra a impressão digital ou a autoridade de certificados (CA) que fornece. Para saber mais, consulte os certificados X.509 suportados.

Negociação do comprimento máximo do fragmento TLS (pré-visualização)

Hub IoT também apoia a negociação do comprimento máximo do fragmento TLS, que por vezes é conhecida como negociação do tamanho do quadro TLS. Esta funcionalidade está em pré-visualização pública.

Utilize esta função para especificar o comprimento máximo do fragmento de texto simples para um valor inferior ao padrão de 2^14 bytes. Uma vez negociados, Hub IoT e o cliente começam a fragmentar mensagens para garantir que todos os fragmentos são menores do que o comprimento negociado. Este comportamento é útil para calcular ou remexame em dispositivos limitados. Para saber mais, consulte a especificação oficial de extensão TLS.

O suporte oficial da SDK para esta funcionalidade de pré-visualização pública ainda não está disponível. Para começar

  1. Crie um novo hub IoT com o modo de pré-visualização ligado.
  2. Ao utilizar o OpenSSL, ligue para SSL_CTX_set_tlsext_max_fragment_length para especificar o tamanho do fragmento.
  3. Ligação o seu cliente para a pré-Hub IoT de pré-visualização.

Passos seguintes