Fundamentos de Criptografia: Diferencas entre AES e RSA
Aprenda os principios da criptografia simetrica e assimetrica e seus casos de uso na pratica.

Protegendo Segredos no Mundo Digital
Fazemos transferencias bancarias pela internet, conversamos com amigos por mensageiros e pagamos com cartao em lojas online. Em todos esses momentos, nossas informacoes sensiveis sao transmitidas para servidores em algum lugar do mundo. Como entao os hackers nao conseguem interceptar essas informacoes no meio do caminho? A resposta esta na criptografia.
Criptografia e o processo de transformar dados legiveis (texto plano) em uma forma ilegivel (texto cifrado). E como quando criancas trocavam cartas secretas com amigos usando regras combinadas para substituir letras. A diferenca e que a criptografia moderna e matematicamente muito mais complexa, a ponto de ser impossivel quebrar mesmo usando todos os computadores existentes.
Hoje existem dois metodos de criptografia amplamente utilizados: AES (criptografia simetrica) e RSA (criptografia assimetrica). Os nomes podem parecer dificeis, mas entendendo os conceitos, fica claro por que sao necessarios dois metodos e quando usar cada um.
Chaves Simetricas e Assimetricas: A Diferenca Fundamental
No mundo da criptografia, uma 'chave' e como a chave que abre uma fechadura. Na criptografia simetrica, usa-se uma unica chave para trancar e destrancar. Pense na porta da frente de uma casa - uma unica chave tranca e abre. E simples e rapido, mas ha um problema: como entregar a chave com seguranca para a outra pessoa?
A criptografia assimetrica resolve esse problema de forma elegante. Usa duas chaves: uma e a chave publica (public key), que pode ser compartilhada com qualquer pessoa, e a outra e a chave privada (private key), que nunca deve ser revelada. O que e trancado com a chave publica so pode ser aberto com a chave privada. E como uma caixa de correio - qualquer pessoa pode colocar cartas, mas so quem tem a chave pode abrir e retirar.
| Caracteristica | Simetrica (AES) | Assimetrica (RSA) |
|---|---|---|
| Quantidade de chaves | 1 | 2 (publica/privada) |
| Velocidade | Rapida | Lenta (100-1000x) |
| Distribuicao de chaves | Precisa de canal seguro | Chave publica pode ser compartilhada |
| Uso principal | Criptografia de grandes volumes | Troca de chaves, assinatura digital |
AES: Criptografia Simetrica Rapida e Poderosa
AES (Advanced Encryption Standard) e o algoritmo de criptografia padrao adotado pelo governo americano em 2001. Quando o DES anterior se tornou inseguro devido ao avanco do poder computacional, foi selecionado atraves de uma competicao entre criptografos do mundo todo. O algoritmo Rijndael, criado por criptografos belgas, foi o vencedor.
A forca do AES e a velocidade. Processadores modernos possuem instrucoes dedicadas para operacoes AES (AES-NI), permitindo criptografar dados de gigabytes instantaneamente. O AES e usado quando voce criptografa um arquivo com senha, protege informacoes sensiveis em bancos de dados ou criptografa um disco inteiro.
Dependendo do tamanho da chave, divide-se em AES-128, AES-192 e AES-256. Os numeros representam a quantidade de bits da chave. AES-256 tem 2^256 combinacoes possiveis de chave, o que e mais que o numero de atomos no universo. Com a tecnologia atual, e impossivel quebrar por forca bruta.
Porem, ao usar AES, ha uma decisao importante: a escolha do modo de operacao. O modo ECB nunca deve ser usado porque o mesmo bloco de texto plano sempre gera o mesmo texto cifrado, expondo padroes. O recomendado atualmente e o GCM (Galois/Counter Mode). O GCM tambem verifica a integridade dos dados junto com a criptografia, permitindo detectar se o texto cifrado foi adulterado.
const crypto = require('crypto');
function encrypt(text, key) {
const iv = crypto.randomBytes(12); // GCM recomenda IV de 12 bytes
const cipher = crypto.createCipheriv('aes-256-gcm', key, iv);
let encrypted = cipher.update(text, 'utf8', 'hex');
encrypted += cipher.final('hex');
const authTag = cipher.getAuthTag();
return {
iv: iv.toString('hex'),
encrypted,
authTag: authTag.toString('hex')
};
}
RSA: O Sinonimo de Criptografia de Chave Publica
RSA e um algoritmo nomeado com as iniciais de tres professores do MIT - Rivest, Shamir e Adleman - em 1977. Baseia-se no principio matematico de que e dificil fatorar numeros grandes. Multiplicar dois numeros primos grandes e facil, mas encontrar os dois primos originais a partir do resultado e astronomicamente dificil.
A maior vantagem do RSA e resolver o problema de distribuicao de chaves. A chave publica pode, literalmente, ser publicada. Se alguem quiser enviar uma mensagem criptografada para voce, basta criptografar com sua chave publica. So voce, que possui a chave privada, pode abrir.
O RSA tambem e usado para assinaturas digitais. Nesse caso, funciona ao contrario: assina-se com a chave privada e verifica-se com a chave publica. Como so voce possui a chave privada, uma assinatura valida e prova de que a mensagem realmente veio de voce. E usado para verificar a autenticidade de pacotes de atualizacao de software ou documentos legais.
Porem, o RSA e lento. E centenas a milhares de vezes mais lento que o AES, nao sendo adequado para criptografar grandes volumes de dados diretamente. Por isso, na pratica, usa-se uma abordagem hibrida.
Criptografia Hibrida: O Melhor dos Dois Mundos
A maioria dos sistemas de criptografia do mundo real usa AES e RSA juntos. Simplificando o que acontece quando voce acessa um site via HTTPS:
Primeiro, quando o navegador se conecta ao servidor, o servidor envia seu certificado contendo sua chave publica. O navegador gera uma chave AES aleatoria (chave de sessao) e a criptografa com a chave publica RSA do servidor, enviando-a. O servidor descriptografa com sua chave privada e obtem a chave AES. Agora ambos os lados tem a mesma chave AES, e toda a comunicacao subsequente e criptografada com este AES rapido.
A beleza dessa abordagem e combinar a vantagem de distribuicao de chaves do RSA com a velocidade do AES. O RSA criptografa apenas dados pequenos (a chave AES), entao a lentidao nao e problema, e a comunicacao real de grandes volumes fica a cargo do rapido AES.
Cuidados na Implementacao de Criptografia
Os algoritmos de criptografia em si sao poderosos, mas usados incorretamente se tornam inuteis. Alguns erros comuns devem ser evitados.
Nunca coloque chaves hardcoded no codigo-fonte. Vez ou outra vemos noticias de vazamento de chaves AWS em codigo no GitHub resultando em invasoes. Chaves devem usar variaveis de ambiente ou servicos especializados de gerenciamento como AWS KMS ou HashiCorp Vault.
O IV (Vetor de Inicializacao) do AES deve usar um novo valor aleatorio a cada vez. Reusar o mesmo IV com a mesma chave pode quebrar a criptografia. O IV nao e secreto, entao pode ser armazenado junto com o texto cifrado. O importante e nao reutilizar.
Nao tente implementar algoritmos de criptografia por conta propria. Usar bibliotecas comprovadas e muito mais seguro. Criptografia e uma area onde um unico erro sutil pode derrubar toda a seguranca.
Conclusao
A criptografia e a base do mundo digital moderno. Entendendo os principios do AES e RSA, voce naturalmente entendera como o HTTPS funciona, por que senhas devem ser armazenadas como hash e o que sao assinaturas digitais.
Use as ferramentas de criptografia do Toolypet para criptografar e descriptografar textos diretamente. Quando conceitos que pareciam abstratos se transformarem em experiencias concretas, sua compreensao de seguranca dara um passo adiante.