Criptografia: algoritmos de chave simétrica e assimétrica explicados

A criptografia nasceu da necessidade de tornar a transmissão de dados privada, portanto, com base, criptografia é o método que é aplicado a uma mensagem para criptografá-la e descriptografá-la de forma que apenas o texto simples seja visível para o remetente e o receptor da referida mensagem, que seja totalmente ilegível para quem o intercepta no meio da transmissão e, por sua vez, é seguro o suficiente para resistir a qualquer ataque que pode comprometer a informação que está sendo transmitida. Existem dois tipos de criptografia dependendo do tipo de suas chaves. Criptografia cujos algoritmos usam apenas uma chave, ou criptografia simétrica , e a criptografia de algoritmos de duas chaves, criptografia assimétrica . Aqui poderemos ver como cada um funciona e quais são suas propriedades e diferenças.

Criptografia simétrica ou criptografia de uma chave

A criptografia simétrica é a técnica criptográfica mais antiga que existe, mas ainda oferece um alto nível de segurança. Baseia-se no uso de uma única chave secreta que se encarregará de criptografar e descriptografar as informações, sejam informações em trânsito com protocolos como o TLS, ou informações em um dispositivo de armazenamento removível. A criptografia simétrica foi o primeiro método utilizado para criptografar as informações, ela se baseia no fato de que a mesma senha será utilizada tanto para criptografar quanto para descriptografar, portanto, é essencial que todos os usuários que desejam criptografar ou descriptografar a mensagem, tenham esta chave secreta, caso contrário, eles não conseguirão. Graças à criptografia simétrica, podemos fazer comunicações ou armazenar arquivos com segurança.

Criptografia

Criptografia usar uma chave simétrica significa que pelo menos dois usuários devem ter a chave secreta. Usando essa chave, todas as mensagens transmitidas através do canal não seguro, como a Internet, serão criptografadas e descriptografadas, portanto, precisamos da criptografia de dados para manter a confidencialidade. Qualquer usuário que deseja acessar a mensagem criptografada deve ter esta senha de descriptografia, caso contrário, ela ficará ilegível.

O método para criptografar os dados é baseado no fato de que o remetente irá criptografar a mensagem com sua chave privada, ele irá enviá-la pelo canal não seguro, e o destinatário terá que descriptografá-la com a mesma senha ou chave privada que o remetente usou.

Existem vários pontos que um algoritmo de chave simétrica deve atender a fim de ser seguro em uso:

  • Uma vez que a mensagem é criptografado, nem a chave de criptografia nem a mensagem clara podem ser obtidas por qualquer método.
  • Se conhecermos a mensagem clara e a criptografia, mais tempo e dinheiro deve ser gasto na obtenção da chave para acessar a mensagem clara, do que o valor possível da informação que é roubado.

Ataques de força bruta são o verdadeiro inimigo dos algoritmos de criptografia simétrica , deve-se ter em mente que esses algoritmos são públicos e que sua força depende diretamente de quão complexo o algoritmo é internamente, e também do comprimento da chave usada para prevenir esses ataques.

O mais importante na criptografia simétrica é proteger a chave privada ou a senha. O principal problema que surge é a distribuição dessa chave privada ou senha a todos os usuários, remetentes e destinatários das informações, para criptografar e descriptografar as informações da mensagem. É imprescindível que todos os usuários do sistema protejam a chave privada ou senha da melhor maneira possível, pois se cair em mãos erradas, todo o sistema ficará comprometido, tendo que gerar uma nova chave e redistribuir a chave privada para os diferentes participantes.

Uma das diferenças que temos entre a criptografia simétrica e assimétrica é que na simétrica todos os usuários possuem a mesma chave de criptografia / descriptografia, se tivermos mais de um canal de comunicação, teremos tantas chaves privadas quanto canais de comunicação paralelos. Porém, nas assimétricas, cada usuário terá um par de chaves (públicas e privadas) para todos os canais de comunicação, não importando o número de canais seguros a manter, basta proteger a chave privada.

A vantagem dos algoritmos de criptografia simétrica é que eles são rápidos, muito rápidos, além disso, nos últimos anos, a aceleração de criptografia de hardware foi incorporada em processadores de computador, servidores, roteadores e outros dispositivos, desta forma, podemos transferir dados via VPN muito depressa. A velocidade também depende do algoritmo de criptografia simétrica a ser utilizado, por exemplo, AES e ChaCha20 são dois dos mais rápidos e seguros que temos hoje, mas o hardware dos equipamentos influencia muito.

Agora vamos falar em detalhes sobre dois algoritmos simétricos que são usados ​​continuamente hoje, seja em conexões HTTPS com TLS 1.2 e TLS 1.3, em redes privadas virtuais com IPsec, OpenVPN ou WireGuard, e também em outras áreas onde a criptografia de dados é usada, como no VeraCrypt.

AES (Padrão Avançado de Criptografia)

O algoritmo AES simétrico foi responsável por substituindo DES e atualmente é usado em todos os canais e protocolos seguros, como TLS, FTPES, redes virtuais privadas e muito mais. A criptografia AES pode ser usada em software e hardware, AES é um algoritmo de criptografia de bloco, o tamanho do bloco fixo é de 128 bits . O comprimento da chave pode ser escolhido, e nós temos 128, 192 e 256 bits disponíveis , sendo o comprimento de 128 bits o padrão, mas 256 bits também são amplamente utilizados.

Um aspecto muito importante é que o AES é responsável por gerar uma matriz 4 × 4 e, em seguida, uma série de rodadas de criptografia são aplicadas a ela. Para uma chave de 128 bits, 10 rodadas de criptografia são aplicadas, para uma chave de 192 bits, 12 rodadas são aplicadas, e para uma chave de 256 bits, as rodadas aplicadas são 14. Desde o início, muitos criptógrafos duvidam de sua segurança, e é que os ataques foram registrados em uma série de rodadas perto da rodada final, especificamente 7 rodadas para chaves de 128 bits, 8 rodadas para chaves de 192 bits e 9 rodadas para chaves de 256 bits foram descriptografadas.

O modo de criptografia é a forma como os blocos de mensagens criptografados em AES são tratados. Existem diferentes tipos e cada um deles funciona de maneira diferente. Por exemplo, existe AES-CBC, AES-CFB e AES-OFB , vamos explicar o que exatamente é isso que aparece em bibliotecas criptográficas como OpenSSL e LibreSSL.

  • CBC (encadeamento de blocos de criptografia) - Este modo de criptografia tem sido amplamente usado em conjunto com uma função hash para verificar a autenticidade dos dados e ainda é usado hoje. Este modo de criptografia consiste em aplicar XOR a cada bloco de texto simples com o bloco de criptografia anterior. Cada bloco criptografado depende do anterior processado até aquele ponto. Para executar esta opção XOR com o primeiro bloco de texto, um vetor de inicialização IV é usado. Este modo de criptografia é executado sequencialmente, não pode ser tratado em paralelo para aumentar o desempenho na criptografia / descriptografia de dados.
  • OFB (feedback de saída) : neste modo, a chave secreta é usada para criar um bloco pseudo-aleatório ao qual a operação XOR com o texto simples é aplicada para criar o texto cifrado. Nesse caso, também é necessário um vetor de inicialização, que deve ser exclusivo para cada mensagem criptografada. Se um IV diferente não for usado, a segurança do sistema fica comprometida. Também não pode ser paralisado.
  • CFB (feedback de cifra) : é feito da mesma forma que no OFB, mas para produzir o fluxo de chaves ele criptografa o último bloco de criptografia, em vez do último bloco do fluxo de chaves como o OFB faz. A criptografia não pode ser paralelizada, mas a descriptografia pode.
  • GCM ( Galois / modo de contador) : Este modo de criptografia é um dos melhores em termos de segurança e velocidade, o GCM permite processamento paralelo e é compatível com processadores AES-NI para acelerar o desempenho de criptografia / descriptografia de dados. Este modo de criptografia é AEAD, além de criptografar os dados, também é capaz de autenticá-los e verificar a integridade dos dados, para garantir que não tenham sido modificados. O GCM também pode aceitar vetores de inicialização aleatórios.

Como você viu, AES é atualmente um dos algoritmos de criptografia simétrica mais importantes e amplamente usados ​​no mundo, no entanto, o modo de criptografia mais recomendado é AES-GCM, uma vez que incorpora AEAD.

ChaCha20

O algoritmo ChaCha20 é um algoritmo de criptografia simétrica que suporta 128 bits e 256 bits e chaves de alta velocidade, ao contrário do AES, que é uma cifra de bloco, ChaCha20 é uma cifra de fluxo. Possui características semelhantes a seu antecessor Salsa20 mas com uma função primitiva de 12 ou 20 rodadas diferentes. Seu código foi publicado, padronizado pela IETF na RFC 7539 e em implementações de software, é muito mais eficiente e rápido que o AES, por isso rapidamente conquistou um lugar entre os algoritmos mais usados ​​hoje.

Para descobrir por que ele se tornou tão famoso, vamos colocar o Google no meio para que tudo seja entendido com muito mais rapidez. As conexões HTPPS estão focadas em oferecer a máxima segurança nos sites que visitamos todos os dias, foi a próxima etapa do protocolo HTTP que não tinha proteção alguma. A criptografia, no entanto, varia de navegador para navegador. Até alguns anos atrás, Chrome para Android tem usado AES-GCM como seu algoritmo de criptografia simétrica; no entanto, o Google tem trabalhado em uma criptografia mais atual, segura e rápida por muitos anos.

O salto na popularidade ocorre quando, após seu lançamento na versão desktop do Chrome, o novo ChaCha20 para criptografia e Poly1305 para autenticação chega ao Android. Um trabalho titânico que se traduz em um algoritmo simétrico que oferece mais segurança e que é imune a vários tipos de ataques. No entanto, o mais notável é que atinge um desempenho três vezes maior do que protocolos um pouco mais antigos, como AES, desta forma, as capacidades do CPU também são melhor aproveitados e uma redução de 16% na largura de banda utilizada, o que permite aproveitar ainda mais a conexão.

ChaCha20 é amplamente usado em conexões HTTPS, em conexões SSH para gerenciar servidores e até mesmo o popular protocolo VPN WireGuard usa apenas ChaCha20 para criptografia simétrica de dados. É bem possível que em breve também vejamos ChaCha20 em conexões IPsec, entretanto, você deve usar AES-GCM sempre que possível.

Até agora a explicação da criptografia simétrica, comentamos sobre os dois algoritmos que são frequentemente usados ​​hoje, existem muitos mais que no passado foram muito relevantes, especialmente para o desenvolvimento dos atuais, já que as bases dos novos são eles estabeleceu-se na experiência do velho, seus erros e suas vantagens. Algoritmos como DES, 3DES, RC5 ou IDEA abriram caminho para os novos, de modo que hoje temos algoritmos de criptografia realmente fortes, com capacidade de resistir a ataques e proteger todas as nossas informações de mãos indesejadas e maliciosas.

Criptografia assimétrica ou criptografia de chave pública

A criptografia de chave assimétrica também é conhecida como chave pública, usa duas chaves diferentes em cada extremidade da comunicação para criptografar e descriptografar . Cada usuário da comunicação terá uma chave pública e uma chave privada. A chave privada deverá ser protegida e mantida pelo próprio usuário, será secreto e não deve ser conhecido por absolutamente ninguém, nem deve ser enviado a ninguém. A chave pública estará acessível a todos os usuários do sistema que desejam se comunicar.

A força do sistema pelo qual este tipo de algoritmo assimétrico é seguro é que ele se baseia em funções matemáticas que são fáceis de resolver em um sentido , mas de quem resolução na direção oposta é extremamente complicada , a menos que a chave seja conhecida. . As chaves públicas e privadas são geradas simultaneamente e vinculadas entre si. A relação entre as duas deve ser muito complexa, pelo que é muito difícil obtermos uma chave do outro, neste caso, obter a chave privada, uma vez que a chave pública é conhecida por todos os que estão ligados ao sistema.

Os pares de chaves possuem funções diversas e muito importantes, entre as quais destacamos:

  • Criptografe as informações.
  • Garanta a integridade dos dados transmitidos.
  • Garantir a autenticidade do emissor.

Criptografia de chave assimétrica

Se uma pessoa com um par de chaves criptografar uma mensagem com a chave pública do destinatário, essa mensagem só poderá ser descriptografada com a chave privada associada. Se criptografarmos uma mensagem com a chave privada, não poderemos descriptografá-la com a própria chave privada, devemos usar a pública (neste caso não é considerada criptografia, mas a autenticidade do remetente é verificada, com isso verificaremos se o remetente é quem realmente diz ser).

A estrutura matemática de como funciona a criptografia assimétrica é esta:

  • Mensagem + chave pública = mensagem criptografada
  • Mensagem criptografada + chave privada = mensagem descriptografada
  • Mensagem + chave privada = mensagem assinada
  • Mensagem assinada + chave pública = autenticação

Como comentamos antes, ao falar sobre criptografia de chave simétrica, a criptografia simétrica fornece confidencialidade (apenas o destinatário pode ler a mensagem). A criptografia assimétrica fornece outras propriedades: autenticidade, integridade e não repúdio. Para que um algoritmo seja considerado seguro, ele deve estar em conformidade com o seguinte:

  • Se o texto cifrado for conhecido, deve ser muito difícil ou quase impossível extrair o texto simples e a chave privada por qualquer método.
  • Se o texto simples e a criptografia forem conhecidos, deve ser mais caro obter a chave privada do que o texto simples .
  • Se os dados foram criptografados com a chave pública, deve haver apenas uma chave privada capaz de descriptografá-lo , e vice versa.

A vantagem da criptografia assimétrica sobre a criptografia simétrica é que a chave pública pode ser conhecida por todos os usuários do sistema, porém, isso não acontece com a chave privada e, como resultado da criptografia simétrica, os dois usuários devem conhecer a mesma chave. (e a senha deve ser enviada a cada um dos diferentes usuários através do canal de comunicação estabelecido).

Operação do sistema simétrico e assimétrico

A principal desvantagem de este tipo de criptografia é sua lentidão , o uso desse tipo de chave retarda o processo de criptografia da comunicação. A solução para isso é usar criptografia assimétrica e simétrica (como protocolos como IPSec ou OpenVPN para redes virtuais privadas, HTTPS para conexões seguras da web ou em conexões SFTP / FTPES).

Essa combinação de cifras ocorre da seguinte maneira. Criamos a chave do algoritmo simétrico, criptografamos com a chave pública do destinatário, enviamos os dados criptografados pelo canal de comunicação inseguro e, em seguida, o destinatário descriptografa os dados usando sua chave privada. Com a chave do algoritmo simétrico nos dois pontos, é quando a comunicação usando criptografia simétrica pode começar, o que torna a comunicação muito mais rápida do que se usássemos apenas criptografia assimétrica em todas as comunicações.

O exemplo claro de onde este tipo de método combinado é usado são VPNs, como OpenVPN ou IPsec, em que a chave de sessão que é conhecida pelos usuários é regenerada de vez em quando para aumentar ainda mais a segurança da comunicação, sem acarretar um atraso significativo na transferência de dados .

Resposta do desafio

Para aumentar a segurança, este método verifica se o remetente é realmente quem afirma ser , para isso um texto é enviado ao remetente e ele irá criptografá-lo com sua chave privada (o que ele está realmente fazendo é assiná-lo), o remetente irá nos enviar o texto criptografado (assinado) e nós iremos descriptografar a chave (nós iremos verificar a assinatura) aproveitando o fato de termos a chave pública do emissor e, por fim, compararemos que a mensagem obtida é a mesma que enviamos anteriormente.

Se um usuário personificar o emissor real, ele não teria a chave privada, então o “desafio” não teria sido bem-sucedido e os dados não seriam comunicados.

Assinatura digital

A assinatura digital permite ao destinatário de uma mensagem que a origem é autêntica , também podemos verificar se a mensagem foi modificada. Falsificar uma assinatura digital é quase impossível, a menos que eles conheçam a chave privada da pessoa que está assinando (e já dissemos antes que a chave privada deve ser salva e ninguém deveria sabê-la). Aqui estão as duas fases para a realização da assinatura digital:

  • Processo de assinatura: o remetente criptografa os dados com a chave privada e os envia ao destinatário.
  • Verifique a assinatura: o receptor descriptografa os dados usando a chave pública do remetente e verifica se as informações correspondem aos dados originais (se corresponderem, não foram modificados).

Em assinaturas digitais, funções hash como SHA2-256 e SHA2-512 são usadas, pois, como explicamos anteriormente, a criptografia assimétrica é lenta. O remetente da comunicação aplicará a função HASH à mensagem original para obter a impressão digital. A impressão digital será então criptografada com a chave privada e enviada ao destinatário pelo canal inseguro para descriptografia. O destinatário também fará o hash dos seus dados e comparará os resultados (o que obteve e o que recebeu). Se o resultado da comparação desses dados for negativo, ou seja, houver diferenças entre o que foi obtido e o que foi recebido, as informações foram alteradas e os dados da impressão digital terão mudado. Se o resultado for o mesmo, a comunicação ocorrerá sem problemas.

Com tudo isso cumprimos:

  • Autenticidade, o emissor é quem ele diz ser . A assinatura na origem e no destino é a mesma.
  • Integridade, a mensagem não foi modificada . O que é obtido e o que é recebido é o mesmo.
  • Sem repúdio, o remetente não pode negar ter enviado a mensagem ao receptor . A assinatura digital não muda.

Se quisermos introduzir confidencialidade na comunicação, tudo o que temos a fazer é fazer com que o remetente criptografe a mensagem original com a chave pública do destinatário.

Algoritmos de criptografia de chave assimétrica

Agora listaremos os dois algoritmos assimétricos principais que são usados ​​hoje e explicaremos como eles funcionam.

Diffie-Hellman

Não é um algoritmo assimétrico em si, é um protocolo de estabelecimento de chave, é usado para gerar uma chave privada em ambas as extremidades de um canal de comunicação inseguro . É usado para obter a chave privada com a qual as informações serão posteriormente criptografadas em conjunto com um algoritmo de criptografia simétrica. O ponto forte do Diffie-Hellman é que sua segurança reside na dificuldade de calcular o logaritmo discreto de grandes números (Diffie-Hellmann também permite o uso de curvas elípticas).

O problema desse algoritmo é que ele não fornece autenticação, não pode validar a identidade dos usuários, portanto, se um terceiro usuário ficar no meio da comunicação, ele também receberá as chaves e, portanto, poderá estabelecer comunicações com o remetente e o destinatário falsificando identidades. Para evitar isso, existem várias soluções que amenizam e resolvem o problema, como a utilização de certificados digitais.

RSA

O algoritmo assimétrico por excelência, este algoritmo é baseado no par de chaves , o público e o privado de que já falamos anteriormente. A segurança desse algoritmo reside no problema de fatorar inteiros muito grandes e no problema RSA, porque descriptografar totalmente um texto cifrado com RSA atualmente não é possível, embora a descriptografia parcial seja possível. Algumas características muito importantes do RSA é o comprimento da chave, atualmente pelo menos um comprimento de 2048 bits deve ser usado, embora seja recomendado que seja de 4096 bits ou mais para maior segurança.

Vantagem:

  • O problema da distribuição de chaves simétricas (criptografia simétrica) está resolvido.
  • Ele pode ser usado para ser usado em assinaturas digitais.

Desvantagens:

  • A segurança depende da eficiência dos computadores.
  • É mais lento do que algoritmos de chave simétrica.
  • A chave privada deve ser criptografada por algum algoritmo simétrico.

DSA

Esse algoritmo também é puramente assimétrico, uma desvantagem do DSA é que ele deseja muito mais tempo de computação do que o RSA para igualdade de hardware. O DSA é amplamente usado como um algoritmo de assinatura digital, atualmente é um padrão, mas o DSA não é usado para criptografar dados, apenas como uma assinatura digital. Este algoritmo é amplamente utilizado em conexões SSH para verificar a assinatura digital de clientes, além disso, existe uma variante do DSA baseada em curvas elípticas (ECDSA), e está disponível em todas as bibliotecas criptográficas atuais como OpenSSL, GnuTLS ou LibreSSL. Outra característica do DSA é o comprimento da chave, o comprimento mínimo da chave é 512 bits, embora o mais comum seja o uso de 1024 bits.

Agora que você conhece os dois tipos de criptografia e as propriedades de cada um, com isso saberá onde vale a pena usar um tipo e onde o outro . Com o tempo, esses métodos irão variar ou serão atualizados para outros mais seguros, uma vez que com o crescimento do desempenho do computador, os ataques a esse tipo de método de segurança são aprimorados, mas agora, aqueles que estão em vigor e continuam a ser usados ​​para não tendo sido expulsos ainda, são eles que acabamos de explicar a você.