FAVORITAR
FecharPlease loginn

Como funcionam o protocolo de segurança da camada de transporte (TLS) e os elementos seguros

Saiba mais sobre a importância do TLS e os pilares de segurança de embarcados. A criptografia é fraca sem o armazenamento de chave robusto para proteger a chave privada.

O Objetivo do protocolo de segurança da camada de transporte (TLS)

O objetivo do TLS é contribuir para os pilares de segurança dos embarcados:

  • Confidencialidade (criptografar os dados)
  • Integridade (proteger os dados contra adulteração/corrupção)
  • Autenticação (estabeleça confiança entre cliente e host)

TLS e autenticação funcionam de mãos dadas. O TLS iniciará e executará as operações criptográficas para estabelecer um túnel de comunicação autenticado e criptografado. O componente de segurança armazenará e protegerá as chaves criptográficas relevantes solicitadas pelo protocolo TLS, sendo a chave privada de longe a mais crítica. Continue lendo para entender por que a criptografia é fraca sem um armazenamento de chave robusto para proteger, no mínimo, a chave privada.

O TLS é usado para proteger a comunicação entre sites, mas também para dispositivos conectados à Internet das Coisas (IoT) baseados em Protocolo de Internet (IP). O modelo Open Systems Interconnection (OSI) é conceitual e a maioria das tecnologias não se enquadra perfeitamente nessas camadas. Abaixo é mostrado onde o TLS fica entre as camadas de sessão e apresentação.

TLS

TLS e autenticação

Uma parte essencial do TLS é a fase de autenticação. Para o mercado de IoT, é prática comum que tanto a plataforma de nuvem quanto o dispositivo de IoT autentiquem um ao outro – é chamado de autenticação mútua. A tecnologia mais comum usada aproveita dos certificados X509 e a infraestrutura de chave pública porque simplesmente mantém o poder de processamento necessário para executar os algoritmos criptográficos famintos de computação tão otimizados quanto possível nos dispositivos embarcados e mantê-los relativamente acessíveis. Existem vários padrões, como IoT Consumer EN303645, IoT industrial IEC/ISA62443, EV loading ISO15118 e Open Charge Point Protocol (OCPP), que recomendam o uso de armazenamento seguro de chaves para o TLS. A ISO15118 dirá mesmo que se a chave privada é controlada por um invasor e se a transação financeira associada ao pagamento da taxa a entregar ao veículo pode ser falsificada e consequentemente roubada. Além disso, se sua chave privada for roubada, o ataque pode se espalhar por uma rede inteira.

Vamos mergulhar nos princípios de autenticação:

  • Algoritmo de Assinatura Digital (DSA)
  • Assinatura de certificado
  • Verificação do certificado
  • Autenticação de certificado

Algoritmo de Assinatura Digital (DSA)

Aqui explicamos o básico de como funciona um algoritmo de assinatura digital:

  • O DSA usa o conceito de host e indivíduo;
  • O host envia uma mensagem para o indivíduo. Cada um deles tem seu respectivo par de chaves pública/privada onde a chave pública é calculada a partir da chave privada;
  • A chave pública do indivíduo é distribuída para o host;
  • O indivíduo fornecerá uma resposta chamada assinatura;
  • A assinatura é a saída de uma operação de “sinal” criptográfico da mensagem usando a chave privada do assunto;
  • O host verificará a assinatura com a chave pública do indivíduo;
TLS
  • O indivíduo envia uma solicitação de assinatura de certificado (CSR) para a autoridade;
  • A autoridade irá validá-lo com sua chave pública;
  • Depois que o CSR for validado, a parte “a ser assinada” (TBS) do certificado passará pelo DSA discutido anteriormente. Nesta ilustração, vamos nos referir especificamente ao contrato de assinatura digital de curva elíptica (conhecido como ECDSA);
  • A parte do certificado a ser assinada contém:
    • Informações da autoridade
    • Informações do certificado
    • Informações do indivíduo
    • Chave pública do indivíduo
  • Em seguida, precisamos anexar a assinatura no final deste conjunto de dados para ir para o próximo conceito.

Verificação do certificado

Na etapa anterior, o certificado foi assinado com a chave privada da autoridade, criando uma vinculação entre o indivíduo e a autoridade, mas a vinculação ainda não está concluída. O host precisa verificar se a parte TBS assinada do certificado de indivíduo pode ser confiável:

  • O indivíduo fornece ao host (diferente da autoridade) seu TBS e a assinatura;
  • O host usa a chave pública de autoridade previamente distribuída a ele e a utiliza para verificar a assinatura do indivíduo e coleta o TBS do indivíduo;
  • A verificação é feita, no nosso caso, usando uma verificação ECDSA.

Agora que o certificado foi verificado, vamos discutir a autenticação real do certificado.

Autenticação do certificado

  • O indivíduo enviará seu certificado para o host que possui a chave pública de autoridade;
  • O certificado do indivíduo contém a chave pública do assunto;
  • O host enviará um desafio aleatório (também chamado de nonce) ao indivíduo, que o assinará com uma operação de assinatura ECDSA, utilizando a chave privada do indivíduo;
  • A assinatura é enviada de volta ao host que a verificará com a chave pública do indivíduo previamente distribuída.
TLS

Aqui está uma visão diferente de um certificado. Podemos entender o que é assinado, qual é a parte estática do certificado e qual é a parte dinâmica do certificado. CryptoAuthLib é a biblioteca usada com nosso elemento seguro e lida com a análise da parte estática e dinâmica do certificado. A chave pública, assinatura e chave privada são o que será tratado pelas operações criptográficas necessárias dentro do limite seguro do elemento seguro.

TLS

Figura 1: Parte do certificado estático à esquerda, parte dinâmica à direita

TLS

Figura 2: Certificado X509 completo

Criptografia e integridade

Agora que o conceito fundamental de autenticação foi abordado, podemos examinar o conceito de criptografia e integridade e como o TLS cuida deles.

A ideia aqui é que o cliente e, no mundo IoT, o servidor criem o conceito de sigilo de encaminhamento. Para isso, precisamos da geração imediata de chaves simétricas temporárias, também chamadas de chaves efêmeras. Geralmente, as operações assimétricas são lentas e, consequentemente, as chaves simétricas são usadas para criptografia e integridade. Precisamos começar com uma troca de chaves (também chamada de acordo de chaves). O servidor e o cliente calculam um segredo pré-mestre idêntico em cada lado.

TLS

Em termos criptográficos, usaremos uma operação de curva elíptica Diffie Hellman Ephemeral (ECDHE) ilustrada abaixo.

  • Cada cliente e servidor emite um número aleatório representando sua própria chave privada exclusiva;
  • De um lado, a chave privada é executada por meio de um ECDH, mas usa a chave pública do outro lado para calcular o segredo pre-mestre;
  • O outro lado realizará as mesmas operações.
TLS

Cada lado agora tem um segredo pré-mestre idêntico. Em seguida, precisamos de uma função pseudo aleatória (PRF) que gere material de chave adicional:

  • Chaves de criptografia de cliente e servidor
  • Vetores de Inicialização (IVs) de cliente e servidor
  • Chaves de código de autenticação de mensagem (MAC) do cliente e do servidor

Se nos referirmos ao ATECC608 ou TA100, ambos têm algo chamado Key Derivation Function (KDF) no modo PRF necessário para implementar o TLS1.2 PRF com HMAC/SHA256. Vejamos o que o PRF faz dentro do TLS.

A partir do segredo pré-mestre, o PRF gera mais segredos! A partir dos segredos do pré-mestre, executaremos o segredo do pré-mestre junto com uma semente por meio de outro PRF para calcular o segredo do mestre geralmente com comprimento de 48 bytes.

A “semente” é composta pelo nonce cliente, pelo nonce servidor e pelo segredo mestre.

Finalmente, entramos na fase de expansão de chave que pega o segredo mestre da fase anterior, a semente que contém o nonce do cliente, o nonce do servidor e a “expansão de chave”. Tanto a semente quanto o segredo mestre são executados pelo PRF para produzir o material da chave.

Observe que há verificações separadas de criptografia e integridade:

  • AES128 CBC para criptografia
  • HMAC-SHA256 para MAC

Mas também há verificações combinadas de criptografia e integridade:

  • Criptografia autenticada com dados associados (AEAD)
  • GCM – Modo Contador Galois
  • CCM – Contador com CBC-MAC

Abaixo, ilustramos o fluxo criptográfico simétrico que o ATECC608 ou o TA100 implementariam. Ele ilustra como o sigilo de encaminhamento é estabelecido usando as etapas discutidas.

Conjuntos TLS Handshake e Cipher

O TLS foi desenvolvido para ser muito flexível e oferece diferentes conjuntos de cifras. Cada conjunto de criptografia é composto por vários parâmetros de criptografia, os quais acabamos de revisar neste artigo.

  • Algoritmo de troca de chaves
  • Algoritmo de autenticação
  • Cifra
    • Algoritmo, força da chave, modo
  • MAC ou PRF

Você pode consultar uma extensa lista de conjuntos de cifras no link. Se você considerar todos os conjuntos de cifras existentes, deverá considerar quais são as restrições do seu sistema embarcado. Dispositivos de IoT embarcados, como detectores de fumaça ou câmeras de vigilância, não têm a potência de um datacenter – você pensaria que é óbvio, certo? Pense duas vezes. Geralmente, os sistemas embarcados têm poder computacional mínimo, memória limitada e poder restrito e a segurança atinge todos os três, pois a criptografia pode consumir muita computação, consequentemente impactando na capacidade. Para esse assunto, vamos focar nosso exemplo no seguinte conjunto de cifras, o ATECC608 excel, pois fornece uma arquitetura muito otimizada em termos de custo e alto nível de proteção de chave (critérios comuns Joint Interpretation Library (JIL) high): TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 e vamos decompô-lo:

  • Algoritmo de troca/acordo de chave ECDHE
  • Algoritmo de autenticação do servidor ECDSA
  • Algoritmo de cifra AES
  • 128 Força da cifra
  • Modo de cifra GCM
  • SHA256 PRF (Função Pseudo Aleatória)
  • O modo de cifra é AEAD (combinar criptografia e verificação de integridade)

A última parte especifica o algoritmo PRF.

Você precisa de um RSA? Considere o TA100 e o seguinte conjunto de cifras: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256. Vimos que ele é usado em aplicativos automotivos, mas também em aplicativos baseados em Linux®, como gateways, onde o retrofit de criptografia de rede é necessário porque equipamentos conectados antigos, ainda críticos para a infraestrutura, são executados na rede com RSA. Da mesma forma, temos a seguinte criptografia:

  • Algoritmo de troca/acordo de chave ECDHE
  • Algoritmo de autenticação do servidor RSA
  • Algoritmo de cifra AES
  • 128 Força de cifra
  • Modo de cifra CBC
  • SHA256 MAC (Código de Autenticação de Mensagem)

Ele separa algoritmos de criptografia e verificação de integridade. A última parte especifica o algoritmo MAC.

Como você pode ver, a chave privada ECC ou privada RSA é o segredo que é a base mais importante para estabelecer com segurança uma sessão TLS. Se essa chave estiver exposta ou acessível, qualquer criptografia que dependa dela será tão fraca quanto a chave estiver exposta. Assim, o privado deve ser protegido isolando-o nos elementos seguros ATECC608 do TA100. Dessa forma, a chave privada é “air gapped” do código, usuários, desenvolvedores e fabricantes. Esse isolamento é ainda mais reforçado ao usar o serviço de provisionamento seguro da Microchip. Aqui está um conjunto de conjuntos de cifras que o TA100 suportará como exemplo:

TLS1.2: TLS_ECDHE_WITH_AES_128+CBC+SHA256 RSA AES_123 CBC SHA256

TLS1.3: TLS_AES_128_GCM_SHA256

TLS1.3: TLS_AES_128_CCM_SHA256

TLS1.3: TLS_AES_128_CCM_8_SHA256

Como implementar o TLS com o ATECC608 ou TA100: Trust Platform Design Suite

Vamos colocar a mão na massa com código e hardware e ver os detalhes da implementação. Primeiro, baixe o Trust Platform Design Suite. Existem vários casos de uso de TLS disponíveis com o diagrama de transação simplificado e projetos de código C prontos para uso, para ajudá-lo a começar com nosso elemento seguro, microcontrolador e módulo WiFi:

Fora do TPDS, você pode encontrar um exemplo de código do WolfSSL e mbedTLS, aproveitando o PKCS#11 para plataformas Linux®.

Agora vamos detalhar o diagrama de transação real do TLS envolvendo o ATECC608. O TA100 seria conceitualmente semelhante (use talib em vez de atcab para as chamadas de API). Os gráficos abaixo se concentram principalmente nos retornos de chamada CryptoAuthLib entre a unidade de microcontrolador (MCU) e o ATECC608. Você os identificará facilmente pesquisando as chamadas de API “atcab”.

  1. Olá cliente
  1. Olá servidor
  1. Enviar certificados de cliente
  1. Verificar a propriedade da chave privada do cliente
  1. Gerar segredo compartilhado
Saiba mais sobre a importância do TLS e os pilares de segurança de embarcados. A criptografia é fraca sem o armazenamento de chave robusto para proteger a chave privada.

E é assim que o TLS com elemento seguro é implementado. Lembre-se de baixar o Trust Platform Design Suite e testar os projetos de código C. Tenha em mente que esta instalação significa que a pilha TLS que você escolheu precisará ter os retornos de chamada para CryptoAuthlib, como mBedTLS ou WolfSSL. Se o seu sistema tiver algum tipo de SO ou RTOS, você poderá se beneficiar do uso do PKCS#11 para acessar as APIs CrytpoAuthLib e enviar comandos para o elemento seguro. O PKCS#11 removerá quaisquer dependências com o provedor de pilha TLS, mas exigirá um sistema embarcado capaz de se comunicar via PKCS#11. Se você tiver uma implementação bare metal, a explicação que fornecemos atenderá aos requisitos do seu sistema.

Artigo publicado originalmente por Xavier Bignalet em: How Transport Layer Security (TLS) and Secure Elements Work

Microchip na América Latina

A Artimar é representante comercial das principais fábricas mundiais de componentes eletrônicos. Com 60 anos de tradição, atua em parceria com a Microchip por 31 anos, juntos sempre buscando trazer alta tecnologia com novos recursos e produtos que ajudam no setor de eletroeletrônica em toda a América Latina.

A Artimar pode te ajudar a encontrar a melhor solução para o seu projeto. Possuímos uma equipe de especialistas que estão prontos para te ajudar.

Clique abaixo e tenha acesso ao suporte técnico Artimar, distribuidores autorizados Microchip para adquirir os seus produtos ou entre em contato conosco: https://www.artimar.com.br/comprar-microchip/

Traduzido pela Equipe Embarcados. Visite a página da Microchip No Embarcados

(*) Este post foi patrocinado pela Microchip

Sem licença Creative Commons
Home » Comunicações » Como funcionam o protocolo de segurança da camada de transporte (TLS) e os elementos seguros

WEBINARS

LEIA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Comentários:
Notificações
Notificar
guest

0 Comentários
Inline Feedbacks
View all comments
Talvez você goste: