Algoritmos de criptografia
Até aqui discutimos sobre chaves e tipos de criptografia. Vimos, também, que algoritmos são necessários para tornar a criptografia possível. Atualmente, diversos algoritmos de criptografia estão disponíveis, podendo ser encontrados detalhadamente em livros, dissertações, teses e na Internet. Independentemente da fonte de consulta onde você possa querer ler mais a respeito dos algoritmos de criptografia, eles são tratados e divididos em duas grandes categorias: os algoritmos simétricos e os algoritmos assimétricos.
Quando falamos em criptografia ou cifragem de dados através do uso de chaves simétricas, podemos dividir os algoritmos simétricos em dois grupos, os Block Cipher e os Stream Cipher. O primeiro grupo, Block Cipher, basicamente quebra a mensagem em blocos de bits e então submete esses blocos a diversas operações matemáticas, fazendo substituições e transposições de dados em um bloco de cada vez. A chave de cifragem é quem indica quais os tipos de operações que serão realizadas nos blocos durante o processamento. O segundo grupo, Stream Cipher, difere-se do primeiro apenas por não tratar blocos de bits, mas tratar bit a bit da informação. Dentre os diversos algoritmos simétricos, alguns merecem ser destacados por serem (ou terem sido) largamente utilizados. Vejamos alguns destes:
Algoritmo DES (Data Encryption Standard) – Este algoritmo foi criado na década de 70 pela IBM, utilizando chaves de 128 bits. Ele foi modificado pela NSA para usar chaves menores de 64 bits (8 bits para paridade e tamanho efetivo de 56 bits de informação), sendo batizado de DEA (Data Encryption Algorithm). Este é um algoritmo de cifragem em blocos de 64 bits que são submetidos a 16 operações de substituição e transposição diferentes. Em 1998 o DES foi quebrado por um supercomputador utilizando a técnica de “ataque de força bruta”. Este supercomputador possuía 1536 núcleos de processamento de 40Mhz, capazes de realizar 60 milhões de tentativas de combinação por segundo. O termo “ataque de força bruta” significa que todas as possíveis chaves foram utilizadas para tentar decifrar a mensagem. Por mais simples que isto pareça, esta tarefa é extremamente difícil e toma muito tempo de processamento, podendo levar anos, décadas. Quanto maior for a chave (mais bits ela tiver), mais difícil se torna explorar todas as combinações.
3DES (Triple DES) – Este algoritmo utiliza duas ou três chaves de 56 bits, dependendo do modo de operação escolhido, que podem ser: DES-EEE3, DES-EDE3 e DES-EEE2. Os blocos de 64 bits passam por 48 operações de substituição e transposição. O interessante deste algoritmo é que ele é 256 vezes mais forte que o DES. Entretanto, devido a sua complexidade computacional, ele acaba sendo 3 vezes mais lento.
AES (Advanced Encryption Standard) – Este algoritmo de criptografia ficou conhecido como o substituto do DES. Ele consiste em um algoritmo de cifragem em blocos de tamanho variável e suporta chaves de 128, 192 e 256 bits.
IDEA (International Data Encryption Algorithm) – Este algoritmo utiliza cifragem em blocos de 64 bits que passam por 8 operações de substituição e transposição diferentes. Ele utiliza chaves de 128 bits. Seu modo de operação é similar ao DES. Contudo, este algoritmo é patenteado, existindo um custo para sua utilização.
Blowfish – Este algoritmo também utiliza blocos de 64 bits que passam por 16 operações de substituição e transposição. Sua diferença reside no fato que o tamanho da chave pode chegar a 448 bits.
RC5 – Por fim, este algoritmo utiliza cifragem em blocos de 32, 64, e 128 bits. Ele pode utilizar chaves de até 2048 bits.
Dentre os algoritmos assimétricos, podemos destacar os seguintes:
RSA - Sigla dos sobrenomes de seus inventores Ron Rivest, Adi Shamir, e Leonard Adleman. É o algoritmo assimétrico mais popular e utilizado atualmente. Suporta assinatura digital, troca de chaves e cifragem.
ECC (Elliptic Curve Cryptosystem) - Provê a maioria das funcionalidades do RSA, só que utilizando menos recursos por usar chaves menores sem comprometer a segurança. Por esse motivo sua principal aplicação se dá em dispositivos wireless e telefones celulares.
Note que outros algoritmos de criptografia podem ser encontrados na literatura. Os algoritmos descritos acima foram apresentados apenas para ilustrar a ideia de utilização de uma chave para "embaralhar" e depois "desembaralhar" uma informação. A chave, como o próprio nome diz, é o elemento capaz de permitir que a informação seja aberta (lida corretamente). Contudo, é o algoritmo de criptografia o elemento capaz de criptografar ou decifrar a mensagem desejada. Temos que ter em mente que ambos, chave e algoritmo de criptografia, coexistem e são importantes no contexto da segurança de redes de computadores.