Segurança IoT - Criptografia
Nota do Editor:Proteger a Internet das Coisas é crítico não apenas para a integridade dos fluxos de dados e software dentro de cada aplicativo IoT, mas também para a integridade dos recursos corporativos vinculados a esses aplicativos. A segurança da IoT é um problema complexo, exigindo uma abordagem sistemática para a compreensão de possíveis ameaças e métodos de mitigação correspondentes.
Adaptado de Internet of Things for Architects, por Perry Lea.
Capítulo 12. Segurança de IoT
Por Perry Lea
Criptografia
Criptografia e sigilo são requisitos absolutos de implantações de IoT. Eles são usados para proteger a comunicação, proteger o firmware e autenticação. Com relação à criptografia, geralmente há três formas a serem consideradas:
-
Criptografia de chave simétrica :As chaves de criptografia e descriptografia são idênticas. RC5, DES, 3DES e AES são formas de criptografia de chave simétrica.
-
Criptografia de chave pública :A chave de criptografia é publicada publicamente para que qualquer pessoa use e criptografe os dados. Apenas a parte receptora possui uma chave privada usada para descriptografar a mensagem. Isso também é conhecido como criptografia assimétrica. A criptografia assimétrica gerencia o sigilo dos dados, autentica os participantes e força o não repúdio. A criptografia de Internet e os protocolos de mensagem bem conhecidos, como a curva elíptica, PGP, RSA, TLS e S / MIME, são considerados chaves públicas.
-
Hash criptográfico :Mapeia dados de um tamanho arbitrário para uma sequência de bits (chamada de resumo). Esta função hash foi projetada para ser “unidirecional”. Essencialmente, a única maneira de recriar o hash de saída é forçar todas as combinações de entrada possíveis (não pode ser executado ao contrário). MD5, SHA1, SHA2 e SHA3 são formas de hashes unilaterais. Normalmente, são usados para codificar assinaturas digitais, como imagens de firmware assinadas, código de autenticação de mensagem s ( MAC ) ou autenticação. Ao criptografar uma mensagem curta como uma senha, a entrada pode ser muito pequena para criar efetivamente um hash justo; nesse caso, um sal ou uma string não privada é anexada à senha para aumentar a entropia. Um sal é uma forma de função de derivação chave ( KDF ):
clique para ampliar a imagem
Elementos de criptografia. Aqui estão as funções simétricas, assimétricas e de hash. Observe o uso da chave na criptografia simétrica e assimétrica. Symmetric tem o requisito de usar chaves idênticas para criptografar e descriptografar dados. Embora mais rápida do que a criptografia assimétrica, as chaves precisam ser protegidas.
Criptografia simétrica
Na criptografia, o texto simples se refere à entrada não criptografada e a saída é chamada de texto cifrado, pois é criptografado. O padrão para criptografia é o Padrão de criptografia avançado ( AES ) que substituíram algoritmos DES mais antigos da década de 1970. O AES faz parte da especificação FIPS e do padrão ISO / IEC 18033-3 usado em todo o mundo. Os algoritmos AES usam blocos fixos de 128, 192 ou 256 bits. Mensagens maiores que a largura de bits serão divididas em vários blocos. O AES tem quatro fases básicas de operação durante a codificação. O pseudocódigo para uma criptografia AES genérica é mostrado aqui:
// Código Psuedo para uma cifra AES-128
// em:128 bits (texto simples)
// out:128 bits (texto cifrado)
// w :44 palavras, 32 bits cada (chave expandida)
estado =em
w =KeyExpansion (chave) // Fase de expansão da chave (criptografa efetivamente a própria chave)
AddRoundKey (estado, w [0 , Nb-1]) // Rodada inicial
para rodada =1 etapa 1 a Nr – 1 // 128 bits =10 rodadas, 192 bits =12 rodadas, 256 bits =14 rodadas
SubBytes (estado ) // Fornece não linearidade na cifra
ShiftRows (estado) // Evita que as colunas sejam criptografadas independentemente, o que pode
enfraquecer o algoritmo
MixColumns (estado) // Transforma cada coluna e adiciona difusão à
cifra
AddRoundKey (state, w [round * Nb, (round + 1) * Nb-1]) // Gera uma subchave e
a combina com o estado.
Fim para
SubBytes (estado) // Rodada final e limpeza.
ShiftRows (estado)
AddRoundKey (estado, w [Nr * Nb, (Nr + 1) * Nb-1] )
out =state
Role ou arraste o canto da caixa para expanda conforme necessário. ↑
Os comprimentos da chave AES podem ser 128, 192 ou 256 bits. Geralmente, quanto maior o comprimento da chave, melhor é a proteção. O tamanho da chave é proporcional ao número de ciclos de CPU necessários para criptografar ou descriptografar um bloco:128 bits precisam de 10 ciclos, 192 bits precisam de 12 ciclos e 256 bits precisam de 14 ciclos.
As cifras de bloco representam algoritmos de criptografia baseados em uma chave simétrica e operam em um único bloco de dados. As cifras modernas são baseadas no trabalho de Claude Shannon sobre cifras de produto em 1949. Um modo de operação de cifra é um algoritmo que usa uma cifra de bloco e descreve como aplicar repetidamente uma cifra para transformar grandes quantidades de dados consistindo em muitos blocos. A maioria das cifras modernas também requerem um Vetor de inicialização ( IV ) para garantir textos criptografados distintos, mesmo se o mesmo texto simples for inserido repetidamente. Existem vários modos de operação, como:
-
Livro de código eletrônico (ECB) :Esta é a forma mais básica de criptografia AES, mas é usada com outros modos para construir uma segurança mais avançada. Os dados são divididos em blocos e cada um é criptografado individualmente. Os blocos idênticos produzirão cifras idênticas, o que torna esse modo relativamente fraco.
-
Encadeamento de blocos de criptografia (CBC) :Mensagens em texto simples Xored com o texto cifrado anterior antes de serem criptografadas.
-
Cipher Feedback Chaining (CFB) :Semelhante ao CBC, mas forma um fluxo de cifras (a saída da cifra anterior alimenta a próxima). CFB depende da cifra de bloco anterior para fornecer entrada para a cifra atual que está sendo gerada. Devido à dependência de cifras anteriores, o CFB não pode ser processado em paralelo. As cifras de streaming permitem que um bloco seja perdido em trânsito, mas os blocos subsequentes podem se recuperar do dano.
-
Encadeamento de feedback de saída (OFB) :Semelhante ao CFB, esta é uma cifra de streaming, mas permite que códigos de correção de erros sejam aplicados antes da criptografia.
-
Contador (CTR) :Transforma uma cifra de bloco em uma cifra de fluxo, mas usa um contador. O contador de incremento alimenta cada cifra de bloco em paralelo, permitindo uma execução rápida. O nonce e o contador são concatenados para alimentar a cifra de bloco.
-
CBC com código de autenticação de mensagem (CBC-MAC) :Um MAC (também conhecido como tag ou MIC) é usado para autenticar uma mensagem e confirmar que a mensagem veio do remetente informado. O MAC ou MIC é então adicionado à mensagem para verificação pelo receptor.
Esses modos foram construídos pela primeira vez no final dos anos 1970 e início dos anos 1980 e foram defendidos pelo Instituto Nacional de Padrões e Tecnologia no FIPS 81 como modos DES. Esses modos fornecem criptografia para a confidencialidade das informações, mas não protegem contra modificação ou adulteração. Para fazer isso, uma assinatura digital é necessária e a comunidade de segurança desenvolveu o CBC-MAC para autenticação. Combinar o CBC-MAC com um dos modos legados era difícil até que algoritmos como AES-CCM fossem estabelecidos, que fornecem autenticação e sigilo. CCM significa Contador com Modo CBC-MAC.
CCM é um modo de criptografia importante usado para assinar e criptografar dados e é usado em uma infinidade de protocolos cobertos neste livro, incluindo Zigbee, Bluetooth Low Energy, TLS 1.2 (após troca de chave), IPSEC e 802.11 Wi-Fi WPA2.
O AES-CCM usa cifras duplas:CBC e CTR. AES-CTR ou modo contador é usado para a descriptografia geral do fluxo de texto cifrado que flui. O fluxo de entrada contém uma etiqueta de autenticação criptografada. O AES-CTR irá descriptografar a tag, bem como os dados de carga útil. Uma “tag esperada” é formada a partir desta fase do algoritmo. A fase AES-CBC do algoritmo marca como entrada os blocos descriptografados da saída AES-CTR e o cabeçalho original do quadro. Os dados são criptografados; entretanto, os únicos dados relevantes necessários para autenticação é a tag calculada. Se a tag calculada AES-CBC for diferente da tag esperada AES-CTR, então existe a possibilidade de que os dados foram adulterados em trânsito.
A figura abaixo ilustra um fluxo de dados criptografado de entrada que é autenticado usando AES-CBC e descriptografado usando AES-CTR. Isso garante o sigilo e a autenticidade da origem de uma mensagem:
clique para ampliar a imagem
Modo AES-CCM.
Uma consideração para implantações de IoT em uma malha totalmente conectada é o número de chaves necessárias. Para n nós em uma malha que desejam comunicação bidirecional, há n (n-1) / 2 chaves ou O (n
2
) .
Tecnologia da Internet das Coisas
- O caminho para a segurança industrial da IoT
- Protegendo o vetor de ameaça IoT
- Segurança da IoT - de quem é a responsabilidade?
- Tudo está indo muito
- Segurança IoT - Uma barreira para a implantação?
- Protegendo a IoT por meio de engano
- Automação e IoT:Uma combinação perfeita para logística e segurança de saúde
- A segurança potencializa o verdadeiro potencial da IoT
- Um ano em análise:12 considerações de segurança de IoT
- Visão da máquina é a chave para a indústria 4.0 e IoT