Criptografia (do grego kryptos, oculto, e graphein, escrever) o nome dado a um conjunto de regras que visa codificar a informao a de maneira que s o emissor e o receptor consiga decifr-la. A troca de informaes sigilosas uma prtica antiga, existente h centenas de anos, e que at bem pouco tempo era predominante em meio aos livros e documentos. O surgimento da internet e a facilidade que esta proporciona de transmitir dados de maneira precisa e extremamente rpida fez de tal prtica um recurso essencial para permitir que apenas emissor e receptor obtenham acesso livre informao tratada. A criptografia segue quatro princpios bsicos: confidencialidade, autenticao, integridade da informao e no repudiabilidade (ou seja, o remetente no pode negar o envio da informao). Neste trabalho de pesquisa, abordaremos sobre algoritmos usados para a criptografia, como: , de forma a complementar a disciplina de Anlise de Algoritmos.
2. TIPOS DE CRIPTOGRAFIA
2.1. CRIPTOGRAFIA HASH
A criptografia hash permite que, atravs de uma string de qualquer tamanho, seja calculado um identificador digital de tamanho fixo, chamado de valor hash. O valor hash geralmente formado por 16 bytes (no caso do MD-2, MD-4 e MD- 5) ou 20 bytes (no caso do SHA-1), mas pode se estender, embora no passe de 512 bytes. Seja uma funo hash H, e x uma string qualquer, teremos que H(x) ser o valor hash para a string x. As caractersticas bsicas de uma funo hash so: O valor de entrada da funo possui qualquer tamanho; O valor de sada da funo possui tamanho fixo; H(x) relativamente fcil de ser computado, para qualquer valor de x; H(x) uma funo one-way; H(x) livre de coliso. 4
Uma funo hash dita one-way pois uma vez obtido o valor hash h para uma string x, computacionalmente impossvel fazer o processo inverso, ou seja, encontrar um valor x tal que H(x) = h. Diz-se ainda que H(x) livre de coliso, significando que as funes hash devem garantir uma probabilidade mnima de que duas strings diferentes acabem por resultar no mesmo valor hash. Qualquer alterao na string original que deu origem ao identificador digital, mesmo que de um nico bit, acabar por gerar uma alterao significativa no valor hash final.
2.2. CHAVES SIMTRICAS
o tipo mais simples de criptografia, j que tanto o emissor quanto o receptor da mensagem possuem a mesma chave, ou seja, a mesma chave usada tanto na codificao quanto na decodificao. Para ser realizada, basta que o emissor, antes de enviar a mensagem criptografada, envie a chave privada que ser utilizada para descriptograf-la. Fig. 1 Esquema de funcionamento das chaves simtricas. Existem diversos algoritmos criptogrficos que fazem uso da Chave Simtrica, tais como: DES (Data Encryption Standard), criado pela IBM em 1977, usa criptografia de 56 bits, o que corresponde a cerca de 72 quadrilhes de chaves diferentes. Apesar de ser um valor bastante alto, foi quebrado por em 1997 por fora bruta (tentativa e erro), em um desafio feito na Internet. DEA (Internacional Data Encryption Algorithm), criado em 1991 por Massey e Xuejia Lai, utiliza chaves de 128 bits com uma estrutura semelhante ao anteriormente citado DES, porm, possui uma implementao mais simples. RC (Rons Code ou Rivest Cipher), desenvolvido por Ron Rivest, largamente utilizado em e- mails. Possui diversas verses (RC2, RC4, RC5 e RC6), com chaves que vo de 8 1024 bits. Podemos citar ainda o 3DES, o Twofish e o Blowfish, entre outros. Porm, a Chave Simtrica apresenta alguns problemas graves, tais como a necessidade da troca constante dessas chaves e a impossibilidade de serem usados com fins de autentificao (j que a transmisso da chave privada de 5
um para o outro pode no ser segura e acabar caindo em outras mos), apesar de seus algoritmos serem mais rpidos do que os algoritmos assimtricos.
2.3. CHAVES ASSIMTRICAS
Diferentemente do mtodo de Chave Simtrica, esse tipo utiliza duas chaves, uma pblica e uma privada. O sistema funciona da forma que algum cria uma chave e envia essa chave quem quiser mandar informaes ela, essa a chamada chave pblica. Com ela feita a codificao da mensagem. Para decodificao ser necessrio utilizar uma outra chave que deve ser criada, a chave privada que secreta.
Fig. 2 - Na figura, a chave verde representa a chave pblica, enquanto a chave rosa representa a chave privada. Esse esquema de chaves pblica e privada atuando em conjunto funciona muito bem, principalmente quando queremos garantir a confiabilidade nos dados, j que somente o proprietrio da chave privada ser capaz de descriptografar a mensagem e vice-versa (nem mesmo o dono da chave pode descriptar a mensagem que ele encriptou, a no ser que ele possua a outra chave), ou seja, mesma que ela caia em mos erradas, essa pessoa no ser capaz de l-la. Existem diversos algoritmos criptograficos que fazem uso da Chave Simtrica, tais como: RSA (Rivest, Chamir e Adleman), criado em 1977 por Ron Rivest, Adi Shamir e Len Adleman, um dos algoritmos de chave assimtrica mais utilizados. Seu funcionamento consiste na multiplicao de 2 nmeros primos muito grandes para a gerao de um terceiro nmero. Para quebrar essa cripografia, seria necessrio a fatorao desse nmero para encontrar os 2 nmeros primos que o geraram, porm, para isso necessrio um poder muito alto de processamento, o que acaba inviabilizando a tarefa. A chave privada so os dois nmeros primos e a pblica o terceiro nmero. 6
ElGamal, desenvolvido por Taher ElGamal, faz uso de um algoritmo conhecido como logaritmo discreto para se tornar seguro. frequente seu uso em assinaturas digitais. Podemos citar ainda o DSS (Digital Signature Standard), entre outros. Assim como a Chave Simtrica, a Assimtrica tambm tem seus problemas. A utilizao de algoritmos reversos para desencriptao de mensagens acaba por elevar o tempo computacional dos algoritmos de criptografia assimtrica, tornando invivel o seu uso em uma comunicao intensa.
2.4. COMBINAO DOS TIPOS
Com os dois tipos de Chaves (Simtrica e Assimtrica) tendo suas vantagens e desvantagens, era natural o surgimento um mtodo que buscasse mixar as vantagens de cada um, eliminando assim, suas desvantagens. Os protocolos TLS (Transport Layer Security) e SSL (Secure Sockets Layer) so exemplos dessa combinao. Para compensar o problema do segredo pr-estabelecido da chave simtrica e o alto poder computacional necessrio na chave simtrica, foi elaborado um meio onde em sua primeira etapa (handshake), seja utilizado a criptografia assimtrica, autenticando assim os ns e combinando uma chave secreta para um uso posterior na criptografia simtrica. Como o algoritmo de chave pblica garante que a negociao foi realizada em um canal seguro, no havendo a necessidade da troca peridica da chave (problemas no caso da Chave Simtrica), todo o restante do processo pode passar a ser realizado utilizando algoritmos de chave simtrica, o que diminui potencialmente a necessidade do poder computacional, permitindo seu uso em uma comunicao mais intensa (problemas encontrados na Chave Assimtrica).
3. MD5
O MD5 (Message-Digest algorithm 5) um algoritmo de hash de 128 bits unidirecional desenvolvido pela RSA Data Security, Inc., descrito na RFC 1321, e muito utilizado por softwares com protocolo ponto-a-ponto (P2P, ou Peer-to- Peer, em ingls) na verificao de integridade de arquivos e logins. Foi desenvolvido em 1991 por Ronald Rivest para suceder ao MD4 que tinha alguns problemas de segurana. Por ser um algoritmo unidirecional, uma hash md5 no pode ser transformada novamente no texto que lhe deu origem. O mtodo de verificao , ento, feito pela comparao das duas hash (uma da mensagem original confivel e outra da mensagem recebida). O MD5 tambm usado para verificar a integridade de um arquivo atravs, por 7
exemplo, do programa md5sum, que cria a hash de um arquivo. Isto pode-se tornar muito til para downloads de arquivos grandes, para programas P2P que constroem o arquivo atravs de pedaos e esto sujeitos a corrupo dos mesmos. Como autenticao de login utilizada em vrios sistemas operacionais unix e em muitos sites com autentificao. Como o MD5 faz apenas uma passagem sobre os dados, se dois prefixos com o mesmo hash forem construdos, um sufixo comum pode ser adicionado a ambos para tornar uma coliso mais provvel. Deste modo possvel que duas strings diferentes produzam o mesmo hash. O que no garante que a partir de uma senha criptografada especfica consiga-se a senha original, mas permite uma possibilidade de decifrar algumas senhas a partir de um conjunto grande de senhas criptografadas.
4. DES
O Data Encryption Standard (DES) uma cifra (mtodo de criptografia) selecionado como FIPS oficial (Federal Information Processing Standard) pelo governo dos EUA em 1976 e que foi utilizado em larga escala internacionalmente. O algoritmo era inicialmente controverso, com um pequeno tamanho de chave e suspeitas de um backdoor da NSA. O DES foi estudado academicamente e motivou os sistemas modernos de entendimento da criptoanlise. O DES um ciframento composto que cifra blocos de 64 bits (8 caracteres) em blocos de 64 bits, para isso ele se utiliza de uma chave composta por 56 bits mais 8 bits de paridade (no total so 64 bits tambm). Assim, para cada chave, o DES faz substituio monoalfabtica sobre um alfabeto de 264 ( 1,8x1019) letras. A rigor, uma substituio monoalfabtica, mas as tcnicas publicadas de quebra de substituies monoalfabticas se aplicam apenas a alfabetos pequenos. Basicamente o DES funciona atravs dos seguintes passos: Uma substituio fixa, chamada de permutao inicial, de 64 bits em 64 bits; Uma transformao, que depende de uma chave de 48 bits, e que preserva a metade direita; Uma troca das duas metades de 32 bits cada uma; Repetem-se os passos 2 e 3 durante 16 vezes; Inverso da permutao inicial. Os blocos que constroem o algoritmo so permutaes, substituies e operaes de ou exclusivo. As permutaes do DES so de trs tipos: na primeira, os bits so simplesmente reordenados (straight permutation); na segunda, alguns bits so duplicados e ento reordenados (expanded permutation), aumentando assim o nmero de bits na sada; na terceira, alguns 8
bits so descartados para depois reordenar os restantes (permuted choice), diminuindo os bits de sada. As substituies no DES so conhecidas como S-boxes (Caixas S - caixas de substituio) e so especificadas em 8 tabelas onde entram blocos de 6 e saem blocos de 4 bits. O primeiro e o ltimo bit so tomados como se fossem um nmero de 2 bits, formando assim as linhas das tabelas das caixas S. Os bits 2 a 5 agrupados formam um vetor de 0 a 15. Passa-se a ter, ento, uma tabela onde a primeira linha formada por nmeros decimais que podem ser representados por 4 bits (os quatro bits do meio dos 4 bits de entrada), e a primeira coluna formada por nmeros decimais que possam ser representados em 2 bits (os bits dos extremos do bloco de 6 bits de entrada). Para cada uma das caixas S, a combinao dos 4 bits do meio com os 2 bits das pontas fornecer 4 bits conforme a tabela da caixa.
5. RSA
Dentre dos mtodos criptogrficos de chave pblica, o RSA o mais conhecido e, atualmente, o mais usado, sobre todo em aplicaes comerciais. Este sistema de criptografia muito til para o comercio eletrnico via Internet, assim como para navegar nela, atravs do Netscape. Esse mtodo foi inventado em 1978 por R. L. Rivest, A. Shamir e L. Adleman, quando trabalhavam no Massachussets Institute of Technology (M.I.T.). O RSA, por ser um mtodo de chave pblica, permite que qualquer usurio codifique mensagens, mas como a chave de decodificao secreta, s o destinatrio legtimo poder decodific-la. A impossibilidade de quebrar a chave de decodificao possvel pela no existncia de algoritmos eficientes para a fatorao de inteiros em fatores primos, sobre todo, se o nmero de algarismos 100 ou maior. O tempo de codificao de uma mensagem praticamente desprezvel, mas o tempo de decodificao pode tornar o processo invivel. A chave de codificao do RSA esta constituda essencialmente por n = pq, onde p e q so primos grandes e distintos. Temos que escolher um inteiro e de forma que mdc((n); e) = 1 e 1 < e < (n). O par de inteiros n e e so feitos pblicos. Os nmeros primos podem ser testados, quanto a primariedade, atravs de testes probabilsticos, e a escolha mais popular um nmero maior ou igual a 216 + 1 = 65537. 9
Cada letra do alfabeto colocada em correspondncia biunvoca com um nmero de dois algarismos. Analogamente, ao espao entre as palavras corresponde um nmero, tambm de dois algarismos, diferente dos demais. Aps da pre-codificao, obtida uma sequncia de nmeros, a qual preciso separar em blocos apropriadamente. Denotaremos esses blocos por Mi, onde i = 1,2,,k. Para cada inteiro Mi, relativamente primo com n, temos: M (n) = 1(mod n). (1) J que para cada primo p, temos (p) = p 1, segue, das propriedades da funo totiente de Euler, que (n) = (p) (q) = (p 1)(q 1). O bloco codificado o resto da diviso M e i por n. Agora, devemos calcular C(Mi), de forma que: M e i C(Mi)(mod n). (2) Para decifrar a mensagem necessrio encontrar um nmero d tal que ed (mod (p 1)(q 1)). (3) Para isso, basta resolvermos, atravs do Algoritmo Euclidiano, a equao
ed + y(n) = 1.
Aps determinar d, achamos o resto da diviso de C(Mi) d por n. Assim, de (1), (2) e (3) segue que:
C(Mi) d (M e i) d Mi 1+(n)t M(M (n) ) t M(1 t ) M(mod n).
10
6. CONSIDERAES FINAIS
Criptografia s pode ser considerada como tal se quatro princpios bsicos forem seguidos e oferecidos: confidencialidade, autenticao, integridade da informao e no repudiabilidade (o remetente no pode negar o envio da informao). por isso que a criptografia um recurso to importante na transmisso de informaes pela internet e, mesmo assim, no capaz de garantir 100% de segurana, pois sempre existe algum que consegue desenvolver uma maneira de quebrar uma codificao. Por isso que tcnicas existentes so aperfeioadas e outras so criadas.
7. REFERNCIAS
Machado, Marlon G. TSL(Transport Layer Security), Cap.2 Criptografia Bsica. Disponvel em: < http://www.gta.ufrj.br/grad/01_2/tls/toc2.htm>. Acesso em: 21 abr. 2014. Castell, Thiago. Vaz, Veronica Assinatura Digital, Cap.3 Tipos de Criptografia. Disponvel em: < http://www.gta.ufrj.br/grad/07_1/ass- dig/TiposdeCriptografia.html>. Acesso em: 21 abr. 2014. Fiarresga, Victor M. C. Criptografia e Matemtica, Cap.4 Cifras. Disponvel em: <http://repositorio.ul.pt/bitstream/10451/3647/1/ulfc055857_tm_Victor_Fiarresg a.pdf>. Acesso em: 21 abr. 2014. Fleury, Andr M. Des(Data Encrypt Standard). Disponvel em: < http://penta.ufrgs.br/gere96/segur2/des.htm>. Acesso em: 21 abr. 2014. Silva, Elen V. P. Introduo Criptografia RSA. Disponvel em: http://www.impa.br/opencms/pt/eventos/downloads/jornadas_2006/trabalhos/jor nadas_elen_pereira.pdf>. Acesso em: 21 abr. 2014.