AES & RSA: Quais as Vantagens, Desvantagens e Usos Mais Apropriados?
Ao buscar por métodos seguros e eficientes para criptografar dados, geralmente somos apresentados por algumas opções que são consideradas padrões na indústria. Entre elas, duas parecem ser as mais populares: AES, de Advanced Encryption Standard; e RSA, que tem esse nome devido aos seus três criadores, os cientistas do MIT Rivest, Shamir e Adleman. Mas, afinal, qual das duas devem ser usadas?
A escolha, geralmente, deve ser feita ao considerar, no mínimo, dois fatores: o poder computacional necessário para criptografar/descriptografar os dados; e se há a necessidade de fazer uso de uma chave síncrona ou assíncrona─essa última acrescentando uma camada adicional de proteção por somente divulgar uma chave pública, sendo incapaz de descriptografar os dados sem o uso de uma chave privada.
Ao considerarmos o poder computacional, especialmente quando há a necessidade de codificar/decodificar grandes volumes de dados em equipamentos com capacidade computacional limitada, optar pelo AES tem sido a escolha mais popular. Inicialmente adotado pelo governo dos EUA a partir do ano de 2001, e atualmente em uso em todo o mundo nas mais diversas aplicações, o algoritmo basicamente “divide” os dados em blocos de 128 bits, passando-os por uma série de transformações matemáticas que empregam uma chave criptográfica que pode assumir 128 bits, 192 bits ou 256 bits de tamanho. A dimensão da chave representa a complexidade necessária para criptografar/descriptografar os dados, e quanto maior for, mais difícil—e complexa—se torna todo o processo.
Uma das vantagens desse método é que, mesmo adotando a chave mais simples (128 bits), quebrá-la não é uma tarefa fácil. Podendo assumir 2128 chaves distintas, um ataque de força bruta, que tenta combinar todas as possíveis permutações de letras e símbolos possíveis, levaria, de acordo com um estudo realizado pelo engenheiro de sistemas e especialista em segurança Mohit Arora (ARORA, 2012), em torno de alguns trilhões de anos.
Em outro estudo, The AES-256 Cryptosystem Resists Quantum Attacks, e que foi publicado pelo International Journal of Advanced Computer Research, ao empregar a chave de 256 bits, tentar quebrá-la usando computação quântica também não se provou viável, considerando as tecnologias atualmente disponíveis.
Esse método, no entanto, apresenta uma desvantagem: por ser simétrico, a mesma chave usada para criptografar os dados deve ser usada para descriptografá-los. Isso pode representar um ponto fraco em relação à segurança, já que, para que ocorra a comunicação codificada entre duas partes, a mesma chave deverá ser compartilhada entre ambas. Para os casos em que isso representa um risco, como a possibilidade da chave ser interceptada por terceiros, adotar um método assimétrico, como o RSA, pode ser o mais indicado.
Nesse método, há o conceito de uma chave pública, e outra privada. Para codificar os dados, de forma que somente o destinatário possa decifrá-los, será usada a chave pública. O destinatário, para decodificar os dados, usará a sua chave privada. A grande vantagem de empregar esse método é que, mesmo se a chave pública for indevidamente obtida, ela não servirá para decodificar os dados, pois somente tem serventia para criptografá-los.
Contudo, esse método é um pouco mais exigente quando consideramos o poder computacional necessário para ser usado. Basicamente, para gerar o par de chaves, são escolhidos dois números primos de grande magnitude. Vamos chamá-los de P e Q.
A partir desses valores, serão calculados outros valores, resultando, basicamente, em um conjunto de três valores: e, d e N (N é o produto de P e Q). A chave pública, que será usada para codificar a mensagem, é composta pelos valores e e N, da seguinte forma:
Letra Cifrada = (Letra) ^ e mod N
Sendo que:
- Letra: é o valor correspondente à letra que vai ser codificada (pode ser o seu valor ASCII, por exemplo)
- ^ e: o valor da letra é elevado ao valor obtido por e
- mod N: por fim, a letra cifrada representa o resto do valor obtido no passo anterior, divido por N
A decodificação é realizada de forma similar, mas usando outros valores:
Letra Decifrada = (Letra Cifrada) ^ d mod N
Sendo que:
- Letra Cifrada: é o valor correspondente à letra cifrada (pode ser o seu valor ASCII, por exemplo)
- ^ d: o valor da letra é elevado ao valor obtido por d
- mod N: por fim, a letra decifrada representa o resto do valor obtido no passo anterior, divido por N
Essa chave pode ser representada por 1024 bits, 2048 bits ou 4096 bits de tamanho. Esse nível maior de segurança tem um custo: além de exigir equipamentos mais robustos, toda a operação de codificação/decodificação se torna mais lenta, em contraste com algoritmos como o supracitado AES.
No vídeo abaixo, de apenas 5 minutos, é demonstrado como o algoritmo RSA funciona para tornar a troca de informações mais seguras (se precisar, ative a legenda em Português):
Artigo escrito por Eduardo Stuart para um trabalho acadêmico da disciplina Segurança de Sistemas e Criptografia, ministrada para o curso de Sistemas de Informação da Universidade Veiga de Almeida. Originalmente publicado em 28 de fevereiro de 2021.