Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial Internet of Things >> Tecnologia da Internet das Coisas

Como proteger as comunicações UART em dispositivos IoT

Com blocos criptográficos integrados em MCUs, tornou-se possível para os desenvolvedores para proteger todos os canais de comunicação, incluindo interfaces como UART que não fornecem segurança por si mesmas.
Com o número crescente de violações de dados e privacidade de alto perfil nos sistemas da Internet das Coisas (IoT), as empresas e os consumidores estão mais conscientes da necessidade de segurança ao comprar produtos conectados. Fornecer os melhores produtos ou serviços da categoria não é mais suficiente. Dispositivos que falham em fornecer segurança adequada não serão capazes de competir com aqueles que fornecem segurança ponta a ponta.

Muitos protocolos implementam segurança dentro do padrão e são parte integrante de qualquer controlador. Dispositivos incorporados que se conectam via receptor-transmissor assíncrono universal (UART), no entanto, não são protegidos. UART é uma das interfaces de comunicação digital mais simples entre dispositivos. É um protocolo de comunicação sem ACK que pode ser lido por qualquer dispositivo se a taxa de transmissão for conhecida.

Para evitar que os dados sejam lidos ou injetados no sistema, o canal de comunicação precisa ser protegido pelos sistemas que enviam e recebem os dados. Assim, mesmo que um invasor obtenha acesso ao canal de comunicação com a taxa de transmissão correta, o canal estará protegido.

Segurança simétrica e assimétrica

Os canais de comunicação são frequentemente protegidos por algoritmos criptográficos. Em termos gerais, os algoritmos criptográficos podem ser classificados como simétricos e assimétricos. Com algoritmos de chave simétrica, o remetente e o destinatário compartilham uma única chave secreta. O remetente criptografa a mensagem usando a chave e compartilha a mensagem criptografada com o destinatário. O receptor então usa a mesma chave para decifrar a mensagem.

A principal preocupação de segurança com algoritmos de chave simétrica é como trocar com segurança a chave secreta entre o remetente e o destinatário. Se a chave for capturada por outra entidade durante a troca de chaves, essa entidade também pode descriptografar mensagens enviadas pelo remetente. Assim, é crucial que a chave seja compartilhada com segurança apenas com o remetente e o receptor em algoritmos de chave simétrica.

Para habilitar a troca segura de chaves simétricas, algoritmos de chaves assimétricas são usados. Algoritmos assimétricos usam chaves diferentes para os processos de criptografia e descriptografia. Embora essas chaves sejam diferentes, elas estão matematicamente relacionadas. A chave simétrica pode ser trocada com segurança criptografando-a com uma chave assimétrica e o receptor descriptografando-a usando a chave assimétrica relacionada. Uma desvantagem dos algoritmos assimétricos é que eles envolvem cálculos matemáticos complexos e tendem a ser intensivos em computação.

Para o mais alto nível de segurança, a criptografia RSA é usada como o algoritmo de chave assimétrica. Com RSA, uma entidade de comunicação tem uma chave pública e uma chave privada. A chave pública, como o nome sugere, é compartilhada publicamente e disponível para qualquer pessoa. Em contraste, a chave privada é mantida apenas pela entidade de comunicação. Para enviar uma mensagem à entidade, o remetente criptografa a mensagem usando a chave pública da entidade. Esta mensagem criptografada só pode ser descriptografada pela chave privada. Como a chave privada está disponível apenas para o destinatário pretendido, isso garante que apenas o destinatário possa descriptografar a mensagem.

Criptografia de chave pública e privada

O RSA usa cálculos exponenciais e a fatoração principal de números muito grandes, tornando-o altamente seguro, mas também intensivo em computação. Além disso, a implementação do RSA em tempo real - para evitar latência nas comunicações - aumentaria o custo do sistema ao exigir um mecanismo de processamento de maior desempenho. Muitos sistemas embarcados não requerem este nível de segurança. Em vez disso, eles podem utilizar um algoritmo de criptografia mais enxuto, como o Advanced Encryption Standard (AES), que é mais prático e econômico porque requer menos recursos de processamento.

AES é um algoritmo criptográfico simétrico, o que significa que ambos os lados do canal de comunicação compartilham uma chave secreta comum. A limitação do AES, conforme mencionado acima, reside no compartilhamento seguro da chave entre o remetente e o receptor do UART, sem expô-la a entidades externas. Para resolver isso, o RSA pode ser usado para criptografar a chave AES e trocá-la com segurança. Como a chave comum só precisa ser compartilhada uma vez, o canal de comunicação pode suportar a complexidade e a latência do RSA. Em outras palavras, o atraso para processar o algoritmo RSA afeta apenas a troca de chave inicial, não todas as mensagens.

A troca segura de chaves ocorre em vários estágios (Figura 1). Primeiro, o receptor UART gera um par de chaves RSA e compartilha sua chave pública com o remetente. Não importa se outra entidade vê a chave pública, porque ela só será usada para criptografar mensagens destinadas ao receptor UART. O remetente, então, gera aleatoriamente uma chave AES e a criptografa usando a chave pública do receptor. O receptor descriptografa a chave AES usando a chave privada RSA.


Figura 1:Troca segura de chave secreta AES usando chaves RSA públicas e privadas. (Fonte:Infineon)

Uma vez que apenas o receptor tem acesso à chave privada RSA, a chave AES criptografada só pode ser descriptografada pelo receptor. Isso garante que a chave AES seja conhecida apenas pelo remetente e pelo receptor, e qualquer intruso com acesso ao canal de comunicação não possa derivar a chave. Além disso, todas as mensagens subsequentes entre o remetente e o destinatário são criptografadas com a chave AES, tornando essas mensagens inacessíveis para outras partes que não pretendam recebê-las. Isso também elimina a ameaça de ataques man-in-the-middle (MIM), que envolvem a modificação de mensagens depois de terem sido enviadas, mas antes de serem recebidas.

Firmware vs. hardware

A implementação de algoritmos de segurança em dispositivos embarcados usando firmware apresenta muitos desafios de design. Os algoritmos criptográficos, por sua natureza, tendem a ser intensivos em computação. Eles também aumentam o consumo de memória, adicionam atraso ao processamento e introduzem uma complexidade substancial aos sistemas. Como resultado, a implementação de segurança no firmware consumirá ciclos substanciais da CPU e recursos MCU. Além disso, para atender aos requisitos de aplicativos em tempo real, um MCU de maior desempenho será necessário, aumentando o custo do sistema.

Parte do motivo pelo qual tantos recursos de MCU são usados ​​é porque os MCUs são unidades de processamento de uso geral. Por esse motivo, muitos MCUs integram hardware projetado especificamente para algoritmos criptográficos. Com um mecanismo criptográfico integrado, um MCU pode fornecer criptografia e descriptografia em tempo real de dados em um espaço muito menor e a um custo menor em comparação com um MCU sem recursos de processamento criptográfico baseado em hardware.

O PSoC 6 MCU da Infineon é um exemplo disso. Ele tem um bloco criptográfico dedicado que fornece aceleração de hardware de funções criptográficas. O bloco criptográfico é flexível e pode ser usado para suportar diferentes algoritmos criptográficos para garantir que os dados sejam protegidos. Isso permite que os desenvolvedores introduzam segurança em dispositivos IoT incorporados usando padrões de criptografia como AES, DES, TDES e RSA e verificações de integridade como algoritmo de hash seguro ( SHA) e verificação de redundância cíclica (CRC). Descarregar funções criptográficas do MCU dessa maneira torna possível introduzir segurança de maneira econômica para quase todos os aplicativos incorporados, sem a necessidade de empregar um processador mais poderoso.

Números verdadeiros aleatórios

Proteger um sistema embarcado, entretanto, requer mais do que apenas criptografar as comunicações. Especificamente, a chave AES que o sistema gera precisa ser aleatória. No entanto, os MCUs são determinísticos, então as chaves geradas também seriam determinísticas, permitindo que um hacker use “força bruta” para percorrer as diferentes sementes aleatórias possíveis e potencialmente derivar a chave AES. Portanto, o firmware precisa de uma maneira de gerar verdadeiros números aleatórios para garantir a aleatoriedade da chave AES, de modo que não possa ser submetido a força bruta.

Para fazer isso, o bloco criptográfico deve incluir um True Random Number Generator (TRNG). No bloco criptográfico PSoC 6, por exemplo, o TRNG possui seis osciladores em anel que fornecem fontes físicas de ruído. Os osciladores de anel contêm inversores sensíveis à temperatura que introduzem jitter no sinal do oscilador de anel. Este sinal dá ao MCU acesso a uma verdadeira fonte de número aleatório para garantir a aleatoriedade das chaves AES que ele gera.

Por exemplo, para gerar uma chave de 16 bytes, um número aleatório é gerado 16 vezes e anexado aos números anteriores. Isso possibilita 2 ^ 128 chaves. É mais do que suficiente para evitar que a chave "AES" seja forçada ou adivinhada.

Alguns ataques criptográficos concentram-se na análise das comunicações capturadas. Com recursos suficientes, qualquer chave pode ser quebrada. Para abordar essa possibilidade e aumentar a segurança geral do canal de comunicação, a chave AES é gerada a cada reinicialização. Esta é uma medida simples, mas eficaz, para aumentar a segurança dos sistemas embarcados. Resumindo, mesmo se uma chave for identificada por um invasor, a chave provavelmente não estará mais em uso no momento em que puder ser explorada.

Segurança com confiança

Neste ponto, pode ser tentador considerar a interface UART segura. No entanto, o UART não é um protocolo de comunicação ACK. Isso significa que o protocolo não possui um mecanismo para garantir que uma mensagem recebida pelo receptor seja a) completa e b) não corrompida.

Um estágio final de segurança é necessário para confirmar a integridade da mensagem. Um método eficaz para conseguir isso é usar o algoritmo SHA para fazer o hash da mensagem. Executar uma mensagem por meio de uma função hash criptográfica como SHA produz um hash, uma saída de comprimento fixo. Como as funções hash são funções irreversíveis de mão única, a única maneira de identificar a mensagem que gerou um determinado hash é tentar uma busca de força bruta de todas as entradas possíveis.


Figura 2:Uma função hash garante a integridade das comunicações durante trocas de chaves seguras e transferências de mensagens. (Fonte:Infineon)

Antes de uma mensagem ser enviada, o hash de toda a mensagem é anexado à mensagem (Figura 2). A mensagem mais o hash é então criptografada usando a chave AES. Dessa forma, o hash pode servir como uma verificação de integridade. O receptor, após a descriptografia, calcula o hash da mensagem que ele descriptografou. O receptor então compara o hash recebido e o hash calculado. Se forem iguais, a mensagem não foi modificada. No entanto, se os hashes não corresponderem, isso indica que a integridade da mensagem foi afetada. Isso pode ocorrer porque um hacker tentou modificar a mensagem ou ocorreu um erro durante a transmissão. Em qualquer caso, a comunicação falhou.

Observe que o canal de comunicação pode ser fortalecido para autenticidade assinando a mensagem com a chave privada do remetente. A mensagem assinada pode ser verificada usando a chave pública do remetente para verificar se apenas o remetente poderia ter enviado a mensagem. Dito de outra forma, nenhuma outra parte pode simular ser o remetente, pois não possui a chave privada do remetente, garantindo assim a autenticidade das mensagens. Para obter mais ideias, verifique os Exemplos de código da comunidade, que inclui muitos projetos de outros engenheiros.

A implementação da segurança tornou-se uma consideração necessária no projeto de sistemas IoT embarcados. É crucial que cada dispositivo conectado esteja seguro e proteja os dados do usuário de serem comprometidos. Com blocos criptográficos integrados em MCUs, tornou-se possível para os desenvolvedores proteger todos os canais de comunicação, incluindo interfaces como UART que não fornecem segurança própria.

—Harigovind A e Rakshith M B são engenheiros de aplicação sênior da Infineon Technologies.


>> Este artigo foi publicado originalmente em nosso site irmão, EDN .



Tecnologia da Internet das Coisas

  1. Como o 5G acelerará a IoT industrial
  2. Como a IoT está conectando locais de trabalho
  3. IoT fornecendo benefícios em todo o mundo
  4. Como a IoT está moldando a mobilidade empresarial?
  5. 7 dicas essenciais para manter sua rede IoT em casa e segura
  6. Fazendo pagar a IoT:Como construir um modelo de negócios IoT lucrativo
  7. Fornecendo um futuro seguro para bilhões de dispositivos IoT por meio da resiliência cibernética
  8. Quão perigosa é a ameaça de ataques em cadeia de destruição na IoT?
  9. Como a IoT está revolucionando a segurança no local de trabalho?
  10. Como a IoT está aprimorando a experiência do cliente