Criptografia é o método usado para “mascarar” ou escrever em códigos mensagens que serão enviadas à alguém sem que uma terceira pessoa possa conhecer o seu conteúdo. Este procedimento antecede a era da computação, embora os computadores tenham impulsionado sua evolução[1]. Existem dezenas de técnicas e algoritmos para aplicar a criptografia em textos e qualquer outro tipo de arquivo no computador, mas basicamente elas se subdividem em duas modalidades: As que usam chaves simétricas (senhas iguais) e as que usam chaves assimétricas (senhas diferentes).
Criptografia por chave simétrica
As técnicas de criptografia por chave simétrica (mesma senha para cifrar e para decifrar) são antigas e bem conhecidas[2] deste o ano 600 a.c., de quando foi reconhecido o procedimento usado para escrita de alguns textos de cunho religioso, chamado Atbash, entre outros tal como o Cifrário de Júlio Cesar e a Cítala[3,4]. Seu funcionamento basicamente resume-se a substituição de letras de acordo com um algoritmo pré-combinado e que basicamente é feito pelas seguintes fórmulas matemática[5]:
Para cifrar:
[Texto cifrado] = [Chave] – [Texto claro]
Para decifrar:
[Texto claro] = [Chave] – [Texto cifrado]
Obviamente este algoritmo e bastante rudimentar e ao longo dos anos ele evoluiu dando a vez para sistemas cada vez mais complexos como Twofish, Serpent, AES, Blowfish, CAST5, RC4, TDES e IDEA[6]. Mas por melhor que seja o algoritmo ele tem o seu calcanhar de aquíles que é o fato de usar funções mateméticas reversíveis que combinam os dados de entrada com a chave secreta nas operações[7] além da necessidade da chave secreta, ou senha, precisar ser compartilhada entre quem envia e quem recebe, de forma que se no momento em que você informa a chave para o seu destinatário um espião a pegar, ele conseguirá decifrar a sua mensagem acabando assim com o sigilo que você esperava[8].
Criptografia por chaves assimétricas
Na criptografia assimétrica (chave para cifrar é diferente da chave para decifrar[9]) não há o risco de a chave para decifrar ser descoberta numa comunicação[7], visto que esta chave, que também é conhecida como chave privada, nunca será fornecida a ninguém. Ao contrário da chave de cifragem, que também é conhecida como chave pública e esta sim será distribuída, já que sem ela será impossível cifrar a mensagem para o destinatário.Entre os vários algoritmos de criptografia por chaves assimétricas estão os: RSA, Elgamal, Diffie-Hellman e as Curvas Elípticas[10] e de forma geral eles se baseiam na expressão[5]:
Para cifrar:
[Texto criptografado] = [Texto claro] ^ [Chave pública] mod [Variante]
Para decifrar:
[Texto claro] = [Texto cifrado] ^ [Chave privada] mod [Variante]
Para obtermos a variante, a chave pública e a chave privada precisamos gerar números primos e números primos relativos (ou primos entre si) que sejam muito longos. Sabendo-se disso primeiro deve calcular da variante tal como segue[5]:
[Variante] = [Número primo 1] * [Número primo 2]
Onde os números primos 1 e 2 devem ser os maiores que se possa obter de maneira aleatória.
Tanto a chave pública quanto a chave privada devem ser primos relativos (números que ao serem fatorados o maior divisor comum entre eles deverá ser 1[11,12]) e satisfazerem a equação a seguir[5]:
( [Chave privada] * [Chave pública] ) mod ( Número Primo1 – 1 ) * ( Número Primo2 – 1 ) = 1
Em particular, o algoritmo RSA gera os números primos a partir do método de tentativas e erros, mas não há garantias de que estes números sejam realmente primos embora os grandes matemáticos provaram que há 99.9% de probabilidade de acerto.
Conclusão
Sabendo-se estes conceitos percebe-se que as diferenças são bem grandes a começar pelos algoritmos empregados, onde nota-se que o processo de criptografia por chave assimétrica é muito mais complexo do que o processo por chaves simétricas de forma que aquele requer muito maior poder computacional e maior tempo para cifragem/decifragem. Com relação a segurança nota-se que no método por criptografia simétrica há um risco muito grande de a sua chave ser descoberta no momento em que você a estiver informando para o destinatário da mensagem, o que não ocorre com a criptografia por chave assimétrica. Devido ao custo computacional ser grande demais ao usar chaves assimétricas, há alguns algoritmos que utilizam-se deste método de criptografia apenas para enviar uma chave simétrica para o cliente no início da comunicação e a partir daí toda comunicação será feita apenas com a cifragem por chave simétrica[9].
Conforme diz MAIA[10] Se tivermos que escolher entre criptografia simétrica e assimétrica devemos escolher utilizar as duas, em um modelo denominado híbrido de forma a aproveitar a agilidade do algoritmo simétrico para crifrar a mensagem em si e também a segurança do algoritmo assimétrico, embora lento, para implementar a distribuição de chaves.
Referências
[1] MOECKE, Cristian Thiago. Criptografia para leigos. Disponível em <http://www.cristiantm.com.br/artigos/criptografia/criptografia-para-leigos/parte-i—introducao>. Acessado em 10-jul-2009
[2] Microsoft. Description of Symmetric and Asymmetric Encryption. Out. 2007. Disponível em <http://support.microsoft.com/?scid=kb%3Ben-us%3B246071&x=13&y=15>. Acessado em 11-jul-2009.
[3] SANTOS, Ronaldo. Cifrário, Cítala e Atbash. Disponível em <http://www.maisdoquematematica.com.br/?p=83>. Acessado em 10-07-2009.
[4] TKOTZ, Viktoria. As cifras hebráicas (Atbash). Disponível em <http://www.numaboa.com/criptografia/substituicoes/monoalfabeticas/simples/168-atbash>. Acessado em 10-jul-2009.
[5] TARDON, James.Linux Journal. Exploring RSA in OpenSSL. Set. 2003. Disponível em <http://www.linuxjournal.com/article/6826>. Acessado em 10-jul-2009.
[6] LIMA, Edson. Criptografia. 1999. Disponível em <http://www.lsi.usp.br/~elima/seguranca_cripto.html>. Acessado em 10-jul-2009.
[7] MACHADO, Marlon Gaspar. TLS (Transport Layer Security). Disponível em <http://www.gta.ufrj.br/grad/01_2/tls/toc2.htm>. Acessado em 10-jul-2009.
[8] Wikipédia. Algoritmo de chave simétrica. Disponível em <http://pt.wikipedia.org/wiki/Criptografia_sim%C3%A9trica>. Acessado em 10-jul-2009.
[9] CARVALHO, Hugo Eiji Tibana. PKI – infra-estrutura de chaves públicas. Out. 2008. Disponível em <http://www.gta.ufrj.br/ensino/eel879/trabalhos_vf_2008_2/hugo/Criptografia.html>. Acessado em 10-jul-2009.
[10] MAIA, Luiz Paulo. Criptografia e Certificação digital. 1999. Disponível em <http://www.training.com.br/lpmaia/pub_seg_cripto.htm>. Acessado em 11-jul-2009.
[11] Babylon Dicionário. Primos entre si. Disponível em <http://www.babylon.com/definition/primos_entre_si/Portuguese>. Acessado em 11-jul-2009.
[12] Matemática Didática. Primos Entre Si. Disponível em <http://www.matematicadidatica.com.br/NumerosPrimosEntreSi.aspx>. Acessado em 11-jul-2009.
Um comentário em “Diferença entre a criptografia com chaves simétricas e a criptografia com chaves assimétricas”