Vous êtes sur la page 1sur 30

Copyright UFRGS www.modulo.

com

Criptografia Contempornea
1 Introduo

Criptografia est intimamente relacionada com segurana, e assume um papel cada vez mais importante devido grande quantidade de informatizao da sociedade atual e utilizao crescente de redes de computadores. As redes passam a transportar informaes cada vez mais valiosas e vitais para as mais diversas organizaes. A segurana dos dados, mais do que nunca, est se tornando um problema crtico. Segurana um atributo muito complexo e difcil de implementar consistentemente em um sistema, principalmente em ambientes computacionais. Projetar e implementar um sistema visando segurana significa analisar um conjunto complexo de situaes adversas onde o projetista e um oponente elaboram estratgias de modo completamente independente. O resultado desta anlise depende fortemente das escolhas e tcnicas feitas por cada um dos oponentes. A segurana essencialmente um atributo negativo. fcil caracterizar um sistema inseguro, mas no existe uma metodologia capaz de provar que um sistema seguro. Assim, um sistema considerado seguro se no foi possvel, at o momento atual, determinar uma maneira de torn-lo inseguro. Com muita frequncia isto decorre simplesmente do fato que no foram testados todos os mtodos de ataque (ou at mesmo menosprezados alguns) ou que no foram identificados todos os possveis atacantes. Conforme a tecnologia de armazenamento e manipulao da informao se torna mais complexa, as oportunidades para que ela seja utilizada por indivduos no autorizados so cada vez maiores. neste contexto que a criptografia tem um papel muito importante. Criptografia caracterizada como a cincia (ou arte) de escrever em cdigos ou em cifras, ou seja, um conjunto de mtodos que permite tornar incompreensvel uma mensagem (ou informao), de forma a permitir que apenas as pessoas autorizadas consigam decifr-la e compreend-la. Por outro lado, a arte ou cincia de recuperar uma determinada informao criptografada sem possuir a autorizao (a chave, a senha ou at mesmo o conhecimento do algoritmo utilizado) denominada de criptoanlise. tarefa de um criptoanalista determinar um mtodo que possa quebrar a codificao. Uma tentativa de criptoanlise comumente chamada de ataque. At o advento dos computadores, um dos fatores determinantes do sucesso ou fracasso de um dado mtodo de criptografia era a habilidade que os seus usurios tinham para realizar as transformaes necessrias. Muitas vezes isto tinha que ser feito em condies adversas, como um campo de batalha, e com equipamento mnimo, para reduzir as chances de captura da mquina de criptografia. Estes mtodos tradicionais so hoje em dia facilmente criptoanalisados com o auxlio de computadores, e todo um novo conjunto de mtodos de criptografia baseados em computadores foi desenvolvido a partir da segunda guerra mundial. A criptografia contempornea no mais baseada em obscuridade, ou seja, no se utiliza mais a suposio de que qualquer sistema pode ser seguro na medida em que ningum, exceto seus criadores, tem acesso metodologia ou aos algoritmo utilizados internamente ao sistema. Para uso moderno, um criptosistema deve ter sua segurana baseada no nos algoritmos de cifragem e decifragem (ou codificao e decodificao, ou criptografia e decriptografia), mas sim em um valor secreto uma chave. O mecanismo deve ser to seguro que nem mesmo o autor de um algoritmo deve ser capaz de decifrar um texto cifrado sem dispor da chave apropriada. Assim, assume-se que um criptoanalista conhece todo o criptosistema, exceto as chaves utilizadas. Esta conhecida como a premissa de Kerckhoffs, matemtico holands do sculo XIX. Note-se que isto exclui a segurana por obscuridade

-1 -

Copyright UFRGS www.modulo.com

Os requisitos de segurana so, na realidade, ainda maiores. Para um algoritmo ser analisado do ponto de vista de sua robustez a ataques so assumidas as seguintes premissas [SCH94]: o criptoanalista tem acesso descrio completa do algoritmo. o criptoanalista tem acesso a grandes volumes de mensagens originais e s uas mensagens cifradas correspondentes. o criptoanalista capaz de escolher quais mensagens sero cifradas e receber as mensagens cifradas correspondentes. Obviamente, a maioria dos sistemas utiliza normas para evitar que estas premissas se realizem, mas um criptosistema que no se baseie nestas premissas automaticamente assumido como inseguro. 2 Modelo de criptosistema A finalidade bsica de um criptosistema cifrar (codificar e criptografar so aqui considerados sinnimos) uma mensagem (tambm chamada de texto normal, texto claro, texto original ou texto compreensvel) atravs de um mtodo de cifragem, que recebe como entrada a prpria mensagem e uma chave de cifragem, produzindo como resultado uma mensagem cifrada (texto cifrado ou criptograma). Esta mensagem cifrada ento armazenada em um meio qualquer ou transmitida at um receptor. Para decifrar a mensagem (ou decodificar, ou decriptografar) utiliza-se um mtodo de decifragem, que recebe como entradas a mensagem cifrada e uma chave de decifragem e fornece como sada a mensagem original. A figura 1 ilustra estes componentes.

Mensagem M Mtodo de cifragem E

Mensagem cifrada C

Mensagem M Mtodo de decifragem D

Chave de cif ragem Ke

Chave de decifragem K d Atacante ativo ou passivo

Figura 1 Modelo de criptosistema Obviamente, a mensagem M e a mensagem cifrada C podem ser de qualquer tipo e formato. Os mtodos de cifragem E e de decifragem D normalmente so distintos, embora isto no seja um prrequisito. Caso as chaves de cifragem Ke e de decifragem Kd sejam iguais, fala-se ento de um sistema de chaves simtricas, ou chave nica, ou chave secreta, onde elas devem ser mantidas secretas. Caso estas chaves sejam diferentes, fala-se de um sistema de chaves assimtricas, ou de chave pblica. Matematicamente, tem-se: C = E ( M, Ke ) M = D ( C, Kd ) = D ( E ( M, Ke ), K d ) Uma pessoa no autorizada que tem acesso a alguns do elementos acima denominada de um atacante. Um atacante passivo somente consegue obter cpias destes elementos, enquanto um atacante ativo consegue no somente obter cpias como tambm modificar os elementos. Assim, por

-2 -

Copyright UFRGS www.modulo.com

exemplo, um atacante ativo poderia interceptar uma mensagem cifrada M1 e alter-la ou troc-la por uma mensagem M2. A robustez de um criptosistema no analisada em termos do tipo de atacante; um ataque ativo deve ser impedido atravs de um protocolo criptogrfico adequado (e no somente pelos mtodos de cifragem e decifragem). Existem seis tipos gerais de ataque (ou criptoanlise), listados a seguir em ordem crescente de efetividade [SCH94]. Todos eles supe que o criptoanalista possui um conhecimento total sobre os mtodos de cifragem e decifragem utilizados, mas no sobre as chaves. Ataque do texto cifrado (cyphertext-only) Neste tipo de ataque, o criptoanalista tem a sua disposio uma grande quantidade de mensagens cifradas, mas desconhece as mensagens originais e as chaves utilizadas. Sua tarefa recuperar as mensagens normais (ou melhor ainda deduzir as chaves utilizadas). Dado: C1 = E(M1,Ke ), C2 = E(M2,Ke ), . . . Cn = E(Mn,Ke). Deduzir: M1, M2, . . . Mn; ou Ke (K d); ou um mtodo para inferir M n+1 a partir de Cn+1. Ataque do texto conhecido (known-plaintext) Neste ataque, o criptoanalista no somente tem a sua disposio uma grande quantidade de mensagens cifradas, mas conhece tambm as mensagens originais equivalentes. Sua tarefa deduzir as chaves utilizadas (ou um mtodo para recuperar mensagens cifradas com a mesma chave). Dado: M1, C1 = E(M1,Ke ), M2, C2 = E(M2,Ke ), . . . Mn, Cn = E(Mn,Ke). Deduzir: Ke (K d ); ou um mtodo para inferir Mn+1 a partir de Cn+1. Ataque adaptativo do texto escolhido (adaptative-choosen-plaintext) Este ataque se diferencia do anterior porque agora pode existir uma realimentao entre uma mensagem escolhida para cifragem e a prxima mensagem. No mtodo anterior, por exemplo, o criptoanalista poderia ser capaz de fornecer somente uma grande quantidade de mensagens de uma nica vez; agora ele pode fornecer um pequeno conjunto, analisar os resultados, fornecer outro conjunto, e assim por diante. Este ataque bem mais efetivo, pois permite o teste de novas idias e a sua posterior confirmao. Sua tarefa deduzir as chaves utilizadas (ou um mtodo para recuperar mensagens cifradas com a mesma chave). Dado: M1, C1 = E(M1,Ke ), M2, C2 = E(M2,Ke ), . . . Mn, Cn = E(Mn,Ke), onde o criptoanalista escolhe M1, M2, . . . Mn em diferentes instantes no tempo, aps analisar C1, C2, . . . Cn. Deduzir: Ke (K d ); ou um mtodo para inferir Mn+1 a partir de Cn+1. Ataque do texto cifrado escolhido (choosen-ciphertext) Neste tipo de ataque, o criptoanalista no somente tem a sua disposio uma grande quantidade de mensagens e seus equivalentes cifrados, mas pode produzir uma mensagem cifrada especfica para ser decifrada e obter o resultado produzido. Este ataque utilizado quando se tem uma caixa-preta que faz decifragem automtica. Sua tarefa deduzir as chaves utilizadas. Dado: C1, M1 = E(C 1,Kd), C2, M2 = E(C2,Kd ), . . . Cn, Mn = E(Cn,Kd ), onde o criptoanalista escolhe C1, C2, . . . Cn. Deduzir: Kd (K e ).

-3 -

Copyright UFRGS www.modulo.com

Ataque da chave escolhida (choosen-key) Embora no considerado por muitos especialistas como sendo um ataque (no um ataque quando a chave conhecida), um criptoanalista pode testar o sistema com diversas chaves diferentes, ou pode convencer diversos usurios legtimos do sistema a utilizarem determinadas chaves. Neste ltimo caso, a finalidade imediata seria poder decifrar as mensagens cifradas com estas chaves. Segurana de criptosistemas Criptosistemas distintos possuem diferentes graus de segurana, dependendo da facilidade ou da dificuldade com que eles so atacados e quebrados. Um sistema dito incondicionalmente seguro se ele teoricamente inquebrvel, ou seja, no interessa qual a quantidade de texto normal ou cifrado a disposio, nunca se tem informao suficiente para deduzir as chaves utilizadas ou decifrar um texto cifrado qualquer. At o momento, s se conhece um mtodo nesta categoria: a Cifra de Vernam ou one-time pad (cifra de uso nico), desenvolvida na dcada de 20 por Gilbert Vernam, da AT&T e Joseph Mauborgne, do Exrcito americano. Em essncia, dois elementos que desejam se comunicar dispem de cpias idnticas de uma sequncia randmica de valores, que so usados como chave. O mtodo, entretanto, exige que cada chave seja usada somente uma nica vez, e que o comprimento da sequncia (a chave) seja maior ou no mnimo igual ao comprimento da mensagem a ser cifrada. Todos os demais mtodos desenvolvidos e em uso atualmente so quebrveis, desde que sejam fornecidos tempo e recursos computacionais suficientes. Para muito deles, entretanto, o tempo e o custo necessrios para quebr-los muito grande (alguns se aproximam de infinito). Se o custo requerido para quebrar um sistema (ou decifrar uma mensagem) maior que o valor da informao que ser obtida, ento para todos os fins prticos, o sistema seguro. Deve-se observar, entretanto, que o poder de processamento dos computadores est sempre crescendo, e que o valor da informao armazenada diminui com o passar do tempo. Se para um determinado sistema estas duas linhas se cruzarem, o sistema torna-se inseguro. A criptologia atual est mais preocupada com os aspectos computacionais do que com o valor da informao, e assim os criptosistemas normalmente so classificados como computacionalmente seguros ou no. Sob este aspecto, um sistema seguro se, com os recursos computacionais disponveis (atualmente ou em um futuro prximo), ele no pode ser quebrado em um tempo razovel. Exatamente o que so recursos disponveis e tempo razovel est aberto a interpretaes, mas atualmente se considera que computadores com processamento da ordem de Tera operaes por segundo e um tempo de alguns milhares de anos se enquadram nas definies acima. 3 Criptografia tradicional Antes da era computacional, a maioria dos mtodos de criptografia era orientado a caracteres, substituindo um caracter por outro ou trocando caracteres de posio. Os mtodos mais seguros realizavam ambas operaes, e de preferncia vrias vezes. Atualmente a complexidade aumentou e em vez de caracteres se trabalham com bits, mas os mtodos bsicos continuam a ser utilizados. Note-se que todos os mtodos da criptografia tradicional so sistemas simtricos, ou seja, utiliza-se para a decifragem a mesma chave da cifragem.

-4 -

Copyright UFRGS www.modulo.com

Cifras de substituio Nestes mtodos, cada caracter (ou grupo de caracteres) na mensagem substitudo por outro na mensagem cifrada. Esta substituio realizada para tornar o texto cifrado mais obscuro e incompreensvel. A decifragem feita realizando-se a substituio inversa, de forma a restaurar os caracteres do texto original. Normalmente so considerados somente as 26 letras maisculas. Substituio monoalfabtica: neste caso simples, cada caracter substitudo por outro, de acordo com uma tabela ou uma regra simples. A cifra mais antiga conhecida a chamada Cifra de Csar, onde cada caracter substitudo por trs caracteres adiante do alfabeto. Assim, A substitudo por D, B por E, etc, at W por Z, X por A, Y por B e Z por C. Para a decifragem, cada caracter retrocedido de trs posies. Uma generalizao deste mtodo pode ser obtida se o alfabeto deslocado de k posies, onde k a chave a ser utilizada. Ainda empregado nos dias de hoje, este mtodo usado pelo algoritmo ROT13 (por exemplo na Usenet News), onde os caracteres avanam 13 posies (A se torna N, B O, . . ., N A, O B, etc). Note-se que os algoritmos de cifragem e decifragem so iguais, ou seja, M = ROT13(ROT13(M)). Este mtodo no visa segurana, mas simplesmente impedir a leitura descuidada de texto sensvel, ofensivo ou que revele alguma pista de um quebra-cabeas ou mistrio. Outra melhoria no mtodo fazer um mapeamento individual de cada caracter, em vez de utilizar um deslocamento constante. Isto exige o uso de uma tabela, com uma entrada para cada caracter do alfabeto. Substituio monofnica: opera como a substituio monoalfabtica, mas agora cada caracter da mensagem original pode ser mapeado para um ou vrios caracteres na mensagem cifrada. Por exemplo, a letra A seria substituda pelos nmeros 5, 13, 25 ou 56; a letra B por 7, 19, 31 ou 42, e assim por diante. Substituio polialfabtica: uma combinao do uso de vrias substituies monoalfabticas, usadas em rotao de acordo com algum critrio ou chave. Assim, por exemplo, poderiam ser usadas 4 tabelas, usadas em alternncia a cada quatro caracteres: a primeira para os caracteres localizados nas posies 1, 5, 9, 13, etc; a segunda nas posies 2, 6, 10, 14, etc; a terceira nas posies 3, 7, 11, 15, etc, e a quarta nas posies 4, 8, 12, 16, etc. Um exemplo clssico a Cifra de Vigenre, constituda de 26 Cifras de Csar, cada uma com um deslocamento diferente. A primeira linha, associada letra A, tem deslocamento zero; a segunda linha (B) tem deslocamento um; a terceira (C) tem deslocamento dois; e assim por diante at a ltima (Z), que desloca 26 posies. A chave utilizada (uma palavra ou frase) define quais linhas devem ser usadas, e em qual ordem. Assim, se a chave for DARK, significa que a primeira letra da mensagem substituda de acordo com a linha D, a segunda de acordo com a linha A, a terceira segundo a linha R, a quarta segundo a linha K, a quinta de novo com a linha D, e assim por diante. Note-se que a chave duplicada tantas vezes quantas as necessrias para atingir-se o comprimento total da mensagem a ser cifrada. Em vez de 26 Cifras de Csar, pode-se usar 26 tabelas aleatrias, o que torna a criptoanlise mais complexa, mas tambm exige que a tabela seja memorizada ou armazenada em algum lugar, tornando-a passvel de ser descoberta. Substituio por polgramos: uma substituio que utiliza grupos de caracteres em vez de trabalhar com caracteres individuais. Assim, por exemplo, se forem considerados trigramas, ABA poderia ser substitudo por RTQ, ABB por KXS, etc. Note-se que as tabelas de substituio aumentam rapidamente (262 para digramas, 263 para trigramas, e assim por diante).

-5 -

Copyright UFRGS www.modulo.com

Em uma primeira anlise, os mtodos de substituio podem parecer seguros. Para uma simples substituio monoalfabtica, com 26 caracteres, existem 26! = 4 x 1026 tabelas possveis. Mesmo tentando uma tabela a cada micro-segundo, seriam necessrios 10 13 anos para tentar todas elas. Entretanto, as cifras de substituio podem ser facilmente quebradas, simplesmente analisando-se a frequncia de cada caracter no texto cifrado e comparando-se estas frequncias com aquelas que normalmente aparecem em uma determinada lngua. As vogais tem maior frequncia que as consoantes, e alguns caracteres possuem frequncia baixssima em relao aos demais. Alm disto, a maioria das linguagens possui uma redundncia to alta que necessria uma quantidade bem pequena de texto cifrado para que uma criptoanlise baseada em frequncia possa ser iniciada [TAN88], [SCH94]. A substituio polialfabtica inquestionavelmente melhor que a monoalfabtica, mas pode ser quebrada pelo mesmo mtodo. O primeiro passo determinar o comprimento k da chave. Se a estimativa for correta, analisando-se a frequncia dos caracteres amostrando-se o texto de k em k, chega-se a uma distribuio bem semelhante a da lngua utilizada. Se a distribuio for incorreta, a distribuio bem distinta. O segundo passo simplesmente forma k tabelas de substituio, ou seja, o texto tratado de k em k caracteres para fins de anlise. Naturalmente, a quantidade de texto disponvel deve ser k vezes maior do que a quantidade necessria para analisar uma substituio monoalfabtica. Com o auxlio de computadores, a anlise enormemente facilitada [DAN95]. Cifras de transposio Nestes mtodos, cada caracter permanece inalterado, mas sua posio na mensagem alterada de acordo com alguma regra ou funo (que tambm podem estar baseadas em alguma chave). Por exemplo, em uma transposio colunar o texto inicialmente escrito em linhas de tamanho fixo e depois re-escrito percorrendo-se as colunas. Para uma criptoanlise destas cifras, necessrio um conhecimento do contexto da mensagem. Sabendo-se algumas das palavras que deveriam aparecer no texto, procura-se pelos caracteres que formam estas palavras e procura-se deduzir como suas posies foram alteradas, determinando-se primeiro o tamanho da linha e depois as permutaes que ocorreram entre as colunas. A diferenciao entre um texto cifrado por substituio e outro por transposio bem fcil, novamente utilizando-se anlise de frequncia dos caracteres. Se a frequncia for a mesma da lngua, trata-se de uma transposio. Se no, tem-se uma substituio. Cdigos e Mquinas de cifragem Caracteres podem ser agrupados para serem cifrados, e conforme o tamanho do grupo aumenta comea-se a falar de um cdigo. A principal diferena entre uma cifra e um cdigo que a primeira trabalha com grupos de comprimento fixo, enquanto que o ltimo utiliza comprimento varivel, normalmente manipulando as prprias palavras de uma frase. Cada palavra substituda por uma outra (ou por outros smbolos), de acordo com um livro de cdigo, que descreve as substituies a serem realizadas. Quebrar um cdigo como quebrar uma gigantesca substituio monoalfabtica, onde as unidades so palavras e no mais caracteres. Para isso utiliza-se agora a gramtica da lngua e analisa-se a estrutura das frases. Cdigos foram bastante utilizados durante a segunda guerra. Outro tipo de cifragem pode ser obtida utilizando-se mquinas de cifragem, que automatizam o processo. Os modelos at agora construdos e utilizados baseiam-se em engrenagens que implementam cifragem por substituio. Como as engrenagens tem dimetros diferentes e giram a velocidades diferentes, obtm-se uma substituio polialfabtica com chave de 26n, onde n o

-6 -

Copyright UFRGS www.modulo.com

nmero de engrenagens. Uma mquina que foi implementada segundo este princpio foi a Enigma, desenvolvida pelos alemes durante a segunda guerra. 4 Criptografia computacional de chave nica Atualmente os mtodos criptogrficos tradicionais cederam lugar a criptografia computacional, onde as operaes so implementadas por um computador ou por um circuito integrado especial. Isto acelera enormemente os processos de cifragem e decifragem (e tambm a criptoanlise), e com isto diversos passos extras de substituio e transposio podem ser utilizados, de modo a mascarar a frequncia dos smbolos utilizados e dificultar sua anlise. Idealmente, o mtodo de cifragem deve ser tal que a probabilidade de ocorrncia de qualquer smbolo na mensagem cifrada seja exatamente igual s probabilidades de todos os demais smbolos, ou seja, a distribuio das frequncias dos smbolos homognea (flat). Com isto, a alterao de um nico smbolo na mensagem normal tem a probabilidade de alterar metade dos smbolos da mensagem cifrada, e vice-versa. Em termos computacionais, a inverso de um nico bit na mensagem normal (ou na cifrada) altera idealmente metade dos bits da mensagem cifrada (ou da normal). Isto naturalmente impede qualquer anlise por frequncia de smbolos, mas por outro lado torna a mensagem cifrada muito sensvel a erros ou alteraes intencionais. Ganha-se em privacidade e segurana, mas perde-se em confiabilidade e autenticidade. Para compensar esta desvantagem so normalmente utilizados cdigos de deteco de erros. O exemplo mais difundido de um cifrador computacional de chave nica o DES (Data Encryption Standard), originalmente desenvolvido pela IBM e adotado como padro nos Estados Unidos em 1977. O DES trabalha dividindo a mensagem em blocos de 64 bits (8 caracteres) e cifrando cada um destes blocos com uma chave de 56 bits (mais 8 bits de paridade, o que tambm completa 64 bits). O algoritmo inicia realizando uma transposio inicial sobre os 64 bits da mensagem, seguida de 16 passos de cifragem e conclui realizando uma transposio final, que a inversa da transposio inicial (figura 2). As transposies so independentes da chave. Para os 16 passos de cifragem utilizam-se 16 sub-chaves, todas derivadas da chave original atravs de deslocamentos e transposies. Cada passo divide o bloco em duas metades de 32 bits (L e R) e realiza transposies, substituies, expanses (duplicaes) de bits e redues (eliminaes) de bits, alm de utilizar operaes lgicas do tipo ou-exclusivo.

16 vezes Mensagem original Transp osio inicial Cifragem Inverso da transposio inicial Mensagem cifrada

C have
Figura 2 Processo de cifragem do DES Um passo de cifragem do DES, mostrado na figura 3, tem dois objetivos bsicos: a difuso e a confuso. A difuso visa eliminar a redundncia existente na mensagem original, distribuindo-a pela mensagem cifrada. O propsito da confuso tornar a relao entre a mensagem e a chave to complexa quanto possvel, de forma a impedir a deduo da chave a partir de caractersticas especiais da mensagem.

-7 -

Copyright UFRGS www.modulo.com

Chave (56 bits) 28 Deslocament o 28 R i-1 (32 bits) 32 28 Deslocamento

28 56 Transposio e Seleo 48 48 Substituio e Seleo 32

L i-1 (32 bits) 32 Transposio 32

Transposio e Expanso 48

L i (32 bits)
Figura 3 Um passo do DES

Ri (32 bits)

Cada passo trabalha com uma das duas metades do bloco de 64 bits da mensagem. As operaes so realizadas sobre a metade R i-1, que ao mesmo tempo que operada transforma-se na metade Li do passo seguinte. A metade L i-1, por sua vez, simplesmente utilizada para realizar um ouexclusivo com o resultado das operaes sobre R i-1, e o resultado forma a metade R i do passo seguinte. Inicialmente gerada uma sub-chave Ki, deslocando individualmente cada uma das metades da chave K, reunindo as duas metades, realizando uma transposio dos 56 bits seguida de uma seleo que elimina 8 bits e mantm 48 bits. Os 32 bits de R i-1 so tambm transpostos e a seguir expandidos para 48 bits, atravs da duplicao de alguns destes bits. Estes 48 bits so operados, atravs de um ou-exclusivo, com a sub-chave Ki. Os 48 bits de resultados so divididos em 8 grupos de 6 bits, e cada grupo substitudo por 4 bits, atravs de oito tabelas de substituio e seleo. Os 32 bits resultantes so transpostos para serem operados com L i-1. Maiores detalhes sobre o funcionamento do DES podem ser encontrados na literatura, especialmente em [LUC86], [CIK92], [SCH94]. Desde a sua aprovao como padro, o DES tem sido alvo de intensa crtica e debate. O projeto original da IBM, que previa blocos de 128 bits, foi reduzido pela NSA (National Security Agency) para 64 bits, sem maiores explicaes. Como as notas de projeto e a criptoanlise do DES so classificados pelos Estados Unidos como material secreto, at hoje ningum sabe dos motivos, e se isto enfraqueceu o DES ou no. O DES pode ser quebrado pelo mtodo da fora bruta, tentando-se todas as combinaes possveis 56 chaves possveis, ou aproximadapara a chave. Como a chave tem 56 bits, tem-se um total de 2 mente 1017 possibilidades. Utilizando-se um ataque de texto plano escolhido e adaptativo, j foi de47 ou at mesmo com 2 43 tentativas [SCH94]. monstrado que o DES pode ser quebrado com 2 Outras anlises foram realizadas sobre o nmero de iteraes, mostrando-se que, apesar da difuso da informao j ser alcanada depois de 8 passos, so necessrios no mnimo 16 passos para tornar impraticvel um ataque do tipo texto normal escolhido. As oito tabelas de substituio tambm foram exaustivamente analisadas, e verificou-se que, alterando um dos 6 bits de entrada, altera-se no mnimo 2 dos 4 bits de sada. Segundo a NSA, estas tabelas foram escolhidas de forma a

-8 -

Copyright UFRGS www.modulo.com

minimizar a diferena entre o nmero de zeros e uns na sada quando a entrada for mantida constante (sempre em zero ou sempre em um). Diversos outros algoritmos de cifragem de blocos com chave nica foram e esto sendo propostos. A lista a seguir indica os mais comumente encontrados na literatura. Triple-DES: um mtodo onde o DES aplicado trs vezes. Inicialmente cifra-se com uma chave K1, depois decifra-se com uma chave K2 e a seguir cifra-se novamente com a chave K1. Para a decifragem, usam-se os passos na ordem inversa, ou seja, decifra-se com K1, cifra-se com K2 e decifra-se com K1. O mtodo da fora bruta necessitaria ento de 2112 tentativas. Lucifer: desenvolvido pela IBM no incio dos anos 70, foi usado como base do DES e depois desenvolveu-se separadamente. Em sua verso atual de 128 bits, ainda considerado mais fraco que o DES, podendo ser quebrado com 233 tentativas de um ataque do tipo texto escolhido. Madryga: desenvolvido em 1984, trabalha com blocos de 8 bits, e no utiliza transposies. Suas operaes esto baseadas em ou-exclusivo e deslocamento de bits, e considerado bem fraco, pois no apresenta o efeito avalanche (o fato da mudana de um bit no texto normal modificar metade dos bits no texto cifrado). NewDES: desenvolvido em 1985, baseado no DES, utilizando blocos de 64 bits e uma chave de 120 bits. orientado a byte, no realizando em nenhum momento operaes sobre bits individuais. Pelas anlises realizadas at o momento, um pouco mais fraco que o DES. FEAL-N: projetado para ser mais simples e operar mais rpido que o DES, possui um nmero varivel de passos (o N do nome). Trabalha com blocos e chave de 64 bits, mas muito fraco se usado com menos de 8 passos. FEAL-4 pode ser quebrado com 5 textos escolhidos, FEAL-6 com 100 textos escolhidos e FEAL-8 com 215 textos escolhidos. REDOC II e III: desenvolvidos para operarem somente com bytes, e assim poderem ser facilmente implementados em software, estes dois algoritmos so bem distintos. REDOC II usa substituies, transposies e ou-exclusivo sobre blocos de 80 bits usando uma chave de 160 bits. considerado bem seguro. Por outro lado, REDOC III usa somente ou-exclusivos sobre um bloco de 64 bits e uma chave de tamanho varivel (at 2560 bytes) e, apesar de ainda no analisado a fundo, aparenta ser muito fraco. LOKI: desenvolvido na Austrlia em 1990, muito semelhante ao DES, trabalhando com blocos e chave de 64 bits. Possui duas verses, LOKI89 e LOKI91, sendo a primeira considerada fraca. No patenteado. Khufu e Khafre: projetados por Ralph Merkle com os nomes de dois faras egpcios, ambos algoritmos pretendem, segundo o autor, eliminar alguns dos pontos fracos do DES. Trabalham de forma semelhante ao DES, mas com tabelas de substituio de 256 posies de 32 bits, contra as de 6 posies de 4 bits do DES. Usam chaves de 512 bits e um nmero de passos flexvel (mltiplos de 8). Enquanto Khufu usa a chave para gerar estas tabelas, e no pode ser atacado exceto por fora bruta, Khafe usa tabelas fixas e muito mais fraco (uma verso de 16 passos pode ser quebrada com 1500 tentativas em um ataque de texto escolhido; uma verso de 24 passos requereria 253 tentativas para o mesmo ataque). IDEA: (International Data Encryption Algorithm) trabalha sobre blocos de 64 bits com uma chave de 128 bits. No utiliza transposies, mas somente operaes de ou-exclusivo, soma e multiplicao em mdulo de 216 (ou seja, ignorando qualquer overflow). Todas as operaes so realizadas sobre sub-blocos de 16 bits. No existe ainda um mtodo de ataque efetivo contra o algoritmo, apesar de ele ter sido desenvolvido em 1990. At o momento, ele tem

-9 -

Copyright UFRGS www.modulo.com

resistido bem contra os mtodos aplicados com xito sobre outros algoritmos. Descrito em [SCH93]. MMB: (Modular Multiplication-based Block cipher) apresentado em 1993, usa praticamente as mesmas operaes de IDEA, mas trabalha com blocos de 128 bits, chave de 128 bits e subblocos de 32 bits (sobre os quais so realizadas operaes de ou-exclusivo e multiplicao). Ainda no foi analisado. Skipjack: desenvolvido pela NSA de 1985 a 1990, usa uma chave de 80 bits e realiza 32 passos de processamento para cifragem ou decifragem. Maiores informaes so classificadas como secretas. Este algoritmo deve ser implementado nos circuitos integrados Clipper e Capstone, tambm da NSA. 5 Cifragem de blocos Um algoritmo que realiza a cifragem sobre blocos pode operar de diversas maneiras distintas, que lhe conferem propriedades diferentes, quer quanto a sua robustez contra criptoanlise, quer quanto a recuperao de erros. Modo do Livro de Cdigos (Electronic Code Book) Este modo, denominado abreviadamente de ECB, a maneira mais bvia e a mais simples de um cifrador de blocos ser utilizado. Cada bloco da mensagem normal individual e independentemente cifrado para produzir os blocos da mensagem cifrada. O bloco tpico tem atualmente 64 bits, o que produz um livro de cdigos de 2 64 entradas, o que complexo o suficiente para dificultar a criptoanlise. E note-se que para cada chave possvel existe um livro de cdigos diferente. A grande vantagem deste mtodo exatamente sua simplicidade e a independncia entre os blocos. No necessrio decifrar um arquivo inteiro caso somente se deseje modificar alguns registros (isto particularmente til para bancos de dados). Alm disto, um erro ou uma modificao intencional de alguns bits somente afetam o bloco ao qual os bits pertencem. Os demais blocos permanecem intactos. Entretanto, a principal desvantagem reside no fato de um criptoanalista poder comear a compilar um livro de cdigos, mesmo sem conhecer a chave. Na maioria das aplicaes prticas, diversos trechos de mensagens tendem a se repetir. Estruturas de dados manipuladas e geradas automaticamente por computadores possuem uma estrutura regular (como o cabealho de correio eletrnico, por exemplo) ou apresentam um grande nmero de zeros binrios. Assim, se o criptoanalista descobre que o bloco 5edg1m32 quando cifrado representa 7ea8mde0, ele consegue decifrar instantaneamente este bloco, onde quer que ele aparea. Se um programa aplicativo gera informaes com um grande grau de redundncia, com poucas entradas no livro de cdigos j possvel realizar um ataque complexo. Esta vulnerabilidade maior no incio e no fim das mensagens uma vez que estes trechos tendem a ser estereotipados. Um problema mais srio que ocorre no mtodo ECB a chamada repetio de bloco, onde um atacante ativo pode modificar mensagens de forma consistente mesmo sem saber a chave ou o contedo que foi modificado. Para ilustrar este caso, suponha-se um sistema de transferncia entre bancos que utilize ECB. As informaes esto distribudas em diversos campos, e pode ocorrer que alguns campos (ou grupo de campos) mapeiem exatamente para um nmero inteiro de blocos. Isto no muito difcil de ocorrer, j que os computadores trabalham normalmente com comprimentos baseados em potncias de dois. Imagine-se agora um atacante passivo, que consegue monitorar as transferncias bancrias e determinar em quais blocos est contida a informao do beneficirio da transferncia. Basta agora o atacante realizar, atravs de dois bancos, uma transferncia onde ele o beneficirio e assim obter uma cpia (cifrada) destes blocos. Como ele o beneficirio, estes

- 10 -

Copyright UFRGS www.modulo.com

blocos contm informao a seu respeito. Realizando agora um ataque ativo, basta interceptar uma transferncia, substituir o contedo do campo do destinatrio pelos blocos copiados e assim receber uma grande srie de depsitos. Note-se que irrelevante o contedo dos outros blocos (depositrio, quantia, etc). Mesmo o balano dirio dos bancos no conseguir detectar o problema, pois todas as transaes se compensam mutuamente. Somente quando os destinatrios reais comearem a reclamar que o problema ser detectado. Modo de Encadeamento de Blocos (Cipher Block Chaining) Para evitar os problemas do modo ECB, o modo CBC realimenta a cifragem do bloco atual com os resultados da cifragem dos blocos anteriores. A operao mais utilizada o ou-exclusivo: o bloco cifrado Ci-1 operado atravs de um ou-exclusivo com o bloco normal Mi, e somente depois este bloco cifrado. Assim, ao invs de calcular Ci = E(Mi, Ke), calcula-se C i = E(Mi xor Ci-1,Ke). Com isto, cada bloco cifrado sofre a influncia dos blocos anteriores, e dois blocos iguais sero cifrados para blocos distintos, caso no mnimo um dos blocos anteriores seja diferente nas duas mensagens. Caso no ocorram blocos diferentes, entretanto, o problema ainda persiste. Duas mensagens iguais sero cifradas para os mesmos blocos. E duas mensagens que possuam um incio idntico sero cifradas da mesma maneira at que ocorra a primeira diferena. A maneira empregada para contornar este problema a incluso de um vetor de inicializao (IV) distinto para cada mensagem a ser cifrada. Este vetor no necessita ter qualquer significado, pode ser randmico e pode ser descartado assim que a mensagem for decifrada. Com o bloco inicial distinto garantido pelo IV, mesmo duas mensagens iguais sero cifradas para blocos diferentes. O uso do encadeamento, entretanto, se por um lado aumenta a segurana contra criptoanlise, diminui a tolerncia a erros. No modo ECB, um erro em um bloco fica restrito a este bloco, mas no modo CBC um erro em um bloco realimentado para o bloco vizinho. Caso um bloco cifrado tenha um nico bit alterado, isto afetar a decifragem deste bloco e do seguinte. O bloco atingido ser completamente afetado (pelo efeito avalanche dos mtodos de cifragem, metade dos bits do bloco decifrado sero afetados, o que mascara toda a informao contida neste bloco). O bloco decifrado seguinte apresentar um bit em erro, na mesma posio onde o erro original ocorreu. Os demais blocos sero decifrados sem erro. Assim, o modo CBC auto-recupervel para erros de inverso de bits. Para erros de perda de bits, entretanto, o efeito pode ser catastrfico, afetando todos os blocos seguintes. Modo de Realimentao de Cifra (Cipher FeedBack) No modo CBC, assim como no ECB, a cifragem no pode iniciar at que um bloco seja formado. Isto pode ser um problema para aplicaes de rede, onde por exemplo os caracteres de um terminal devem ser enviados para o computador destino a medida em que forem sendo digitados. Quando os dados devem ser separados em grupos menores que um bloco, a soluo empregar o modo CFB. A realimentao realizada da mesma maneira, atravs de uma operao ou-exclusivo, mas agora somente sobre o grupo, e no mais sobre todo o bloco. A figura 4 ilustra o caso para grupos de 8 bits e blocos de 64 bits. O mtodo o mesmo para outros tamanhos de grupos (at mesmo para grupos de um bit). Um registrador de deslocamento preenchido com um valor inicial de 8 bytes, como o vetor IV no caso CBC. Este valor cifrado, e o byte mais a esquerda (c i-1 ) operado com o byte m i a ser cifrado, ci = ci-1 xor mi. O valor ci ser transmitido, os oitos bytes do registrador de deslocamento so deslocados para esquerda, sendo o byte mais a esquerda descartado e o byte vago mais a direita preenchido com c i. A decifragem o processo reverso, com o byte recebido (c i) sendo

- 11 -

Copyright UFRGS www.modulo.com

operado com ci-1 para restabelecer mi. O deslocamento entretanto se realiza da mesma maneira, ou seja, ci deslocado para a posio mais a direita do registrador.

Chave C ifragem

C have Decifragem

B yte mais a esquerda

ci-1

B yte mais a esquerda

ci-1

mi

ci

ci

mi

Figura 4 Modo de realimentao de cifra de 8 bits O efeito de um bit em erro no texto cifrado (c i) bem interessante. Inicialmente, produz-se um erro em um bit no texto decifrado pi. Depois que o grupo em erro entra no registrador de deslocamento, ele vai afetar todos os grupos subsequentes, at sair do registrador. Os demais grupos sero decifrados sem erro. Modo de Realimentao de Sada (Output FeedBack) O modo OFB bem similar ao CFB, com a diferena que agora o grupo ci-1 realimentado, e no mais o grupo do texto cifrado. A figura 5 ilustra o caso para grupos de 8 bits e blocos de 64 bits.

Chave C ifragem

C have Decifragem

B yte mais a esquerda

ci-1

B yte mais a esquerda

ci-1

mi

bi

bi

mi

Figura 4 Modo de realimentao de sada de 8 bits

- 12 -

Copyright UFRGS www.modulo.com

Este mtodo muitas vezes denominado de realimentao interna, porque o mecanismo de realimentao independente dos textos normal e cifrado. O grande benefcio do OFB sua imunidade a erros. Um erro no texto cifrado produz um nico erro no texto normal. No existe nenhuma propagao do erro. Modo de Encadeamento de Blocos (Block Chaining) Neste modo, a entrada do cifrador operada (com um ou-exclusivo) ou-exclusivo com o ou-exclusivo de todos os blocos cifrados anteriormente. Matematicamente tem-se: Ci = E (Mi xor Fi, Ke) Mi = Fi xor D (Ci, Kd) Fi+1 = Fi xor Ci Fi+1 = Fi xor Ci

O valor inicial de F0 o vetor de inicializao. O problema principal com o modo BC o fato de um erro em um bloco cifrado ser estendido a todos os blocos decifrados seguintes. Para resolver isto, pode-se incluir um bloco padro de verificao no fim da mensagem Modo de Encadeamento com propagao (Propagating Cipher Block Chaining) No modo PCBC, a entrada do cifrador operada (com ou-exclusivos) com os blocos normal e cifrado anteriores. Matematicamente tem-se: Ci = E (Mi xor Ci-1 xor Mi-1, Ke) Mi = Ci-1 xor Mi-1 xor D (Ci, Kd) Um erro em um bloco cifrado estendido a todos os blocos decifrados seguintes. Mas o problema principal com este modo o fato de uma eventual troca de ordem nos blocos cifrados provoca erro na decifragem deste blocos, mas devido a natureza da operao ou-exclusivo, estes erros vo se cancelar e no so detectados examinando-se o bloco padro final. Este modo havia sido sugerido para o Kerberos (uma metodologia de autenticao) na sua verso 4, mas foi substitudo pelo modo CBC na verso 5 quando a caracterstica acima foi descoberta. 6 Cifragem de fluxo Um algoritmo que converte uma mensagem normal para a mensagem cifrada um bit de cada vez chamado de cifrador de fluxo (stream cipher). Sua estrutura simplificada mostrada na figura 5.

Chave K

Gerador de fluxo

Chave K

Gerador de fluxo

fluxo da chave k i fluxo de mensagem m i Cifragem


Figura 5 Criptosistema de fluxo

fluxo da chave k i fluxo cifrado c i Decifragem fluxo de mensagem m i

Os bits mi da mensagem a ser cifrada so operados atravs de um ou-exclusivo com os bits k i produzidos por um gerador de fluxo a partir de uma chave K, produzindo assim um fluxo de bits

- 13 -

Copyright UFRGS www.modulo.com

cifrados ci = mi xor ki. Para a decifragem usa-se exatamente o mesmo mtodo, restaurando a mensagem, pois mi = (mi xor ki) xor ki. Naturalmente, os dois geradores de fluxo devem produzir exatamente a mesma sequncia de bits, quando alimentados com a mesma chave K. Assim, os geradores de fluxo devem ser determinsticos. Por outro lado, a sequncia gerada deve ser pseudorandmica, de um perodo grande, de forma a fornecer ao mtodo uma boa segurana: se o gerador produzir uma sequncia de zeros (ou uns), todas as demais operaes ficam sem sentido. E se a sequncia for curta (por exemplo, 16 bits), o mtodo se transforma em um simples XOR com baixssima segurana. Idealmente o gerador deveria produzir uma sequncia randmica infinita, mas todas as implementaes prticas utilizam sequncias pseudo-randmicas peridicas. A diferena entre cifradores de bloco e de fluxo mais de carter prtico do que terico. Cifradores de fluxo trabalham com um bit de cada vez, e por causa disto no so facilmente implementveis em software. Cifradores de blocos podem ser implementados mais facilmente, mas suas operaes so mais complexas e demoradas. Em termos de criptografia, cifradores de bloco so mais utilizados, e os seus algoritmos podem ser modificados para se tornarem mais seguros. Por outro lado, cifradores de fluxo so mais fceis de serem analisados matematicamente. A escolha final determinada pela aplicao. Se ela pode trabalhar com blocos de dados, ento normalmente se utilizam cifradores de bloco. Por outro lado, se os bits devem ser cifrados continuamente, a medida que forem sendo produzidos, e uma blocagem pode introduzir demoras no tolerveis, ento deve ser utilizado um cifrador de fluxo. 7 Criptografia computacional de chave pblica O conceito de criptosistemas de chave pblica, ou chaves assimtricas, foi introduzido em 1976 por Whitfield Diffie e Martin Hellman [DIF76] e independentemente por Ralph Merkle. At ento aceitavase como fato natural que as chaves de cifragem e decifragem, quer fossem iguais ou diferentes, deveriam ambas ser mantidas secretas. E um dos grandes problemas era justamente o da distribuio de chaves por canais inseguros, o que exigia um protocolo complexo e uma grande quantidade de troca de dados. Nos criptosistemas de chave pblica, uma das chaves de conhecimento pblico, e somente a outra que deve ser mantida secreta. O problema de distribuio de chaves eliminado, pois as chaves pblicas podem circular livremente, e no existe nenhuma necessidade de enviar a chave secreta a qualquer outro participante do sistema. Para este sistema ser vivel, cada um dos participantes deve ser capaz de gerar seu par de chaves Ke e Kd com as seguintes propriedades: 1 Se C = E ( M, Ke), ento M = D ( C, Kd ) para todos M. 2 computacionalmente intratvel tentar deduzir Kd a partir de Ke. 3 computacionalmente tratvel calcular um par Kd e Ke que satisfaa os dois requisitos acima. Dentro destes requisitos, nada impede que Ke seja tornada pblica. E a existncia de um sistema deste tipo permite uma comunicao segura e instantnea entre participantes que nunca se encontraram nem se comunicaram antes. Supondo que o usurio A queira enviar uma mensagem para o usurio B. Ele somente necessita cifrar sua mensagem com a chave pblica de B, ou seja, ele calcula C = E(M,KeB ). Para decifrar a mensagem aps seu recebimento, B simplesmente calcula M = D(C,KdB ). Como nenhum outro participante conhece KdB , ningum mais consegue decifrar a mensagem, a no ser seu destinatrio legtimo. Todos os algoritmos de chave pblica propostos ao longo do tempo baseiam-se em problemas NPcompletos para garantir o requisito (2) acima. Destes, o mais fcil de compreender e ao mesmo

- 14 -

Copyright UFRGS www.modulo.com

tempo um dos mais robustos o RSA, assim denominado pelos seus trs autores, Ron Rivest, Adi Shamir e Leonard Adelman [RIV78]. O RSA obtm sua segurana da dificuldade de fatorar nmeros grandes. As chaves pblica e privada so funes de um par de nmeros primos grandes (entre 100 a 200 dgitos decimais). Para gerar as duas chaves, escolhe-se inicialmente dois nmeros primos, p e q, com a propriedade acima. A seguir calcula-se n = p x q. Ento escolhe-se randomicamente um nmero e, tal que e e (p1)x(q1) sejam primos entre si, ou seja, no tenham fatores comuns. Depois, calcula-se um nmero d tal que (e x d) mdulo (p1)x(q1) seja igual a 1, ou seja, e x d = 1 mod (p1)x(q1). Os nmeros e e n formam a chave pblica; os nmeros d e n so a chave privada. Os nmeros p e q no so mais necessrios e devem ser esquecidos. Para cifrar uma mensagem M, primeiro divide-se esta mensagem em blocos de t bits, onde t calculado de tal forma que o valor numrico de cada bloco (o valor obtido interpretando-se a sua cadeia de bits como um nmero) seja menor que n. Em termos prticos, utiliza-se o maior valor para t de tal forma que a condio 2t < n ainda seja satisfeita. Sob o ponto de vista decimal, se n tiver 200 dgitos, ento cada bloco mi tambm ter cerca de 200 dgitos, mas sempre de forma que mi < n. A mensagem cifrada C tambm ser formada por blocos ci, cada um calculado por ci = mie mod n, ou seja eleva-se o bloco numrico mi a potncia e, em aritmtica mdulo n. Para decifrar a mensagem C, basta tomar cada bloco numrico cifrado ci e calcular mi = cid mod n, ou seja, eleva-se ci a potncia d, em aritmtica mdulo n. J que nesta aritmtica mdulo n, devido escolha de d e e, tem-se que cd = (me) d = med = mk(p-1)(q-1)+1 = mx1 = m, a frmula recupera a mensagem. Note-se que a mensagem poderia, da mesma forma, ser cifrada com d e decifrada com e, a escolha arbitrria. A segurana do RSA est baseada no problema de fatorar nmeros grandes. Embora na prtica o melhor caminho para deduzir d a partir de n e e seja fatorar n para determinar os nmeros p e q, tecnicamente ainda no foi provado que este o nico caminho. perfeitamente admissvel que uma maneira alternativa de criptoanalisar o RSA possa ser descoberta. Entretanto, se uma nova tcnica permitisse calcular d, ela tambm poderia ser utilizada para fatorar grandes nmeros, e este problema vem sendo analisado a vrios sculos, sem que tenha sido encontrada uma soluo que no envolvesse um crescimento exponencial da complexidade. No presente momento, o melhor algoritmo de fatorao tem um tempo de soluo na ordem de O(esrqt(ln n x ln(ln n))). Se n tem 200 dgitos (aproximadamente 664 bits), a fatorao levar na ordem de 2,7x1023 passos. Assumindo-se um computador que possa realizar um milho de passos por segundo (uma suposio generosa, dada a magnitude dos nmeros envolvidos), levar 3,8x10 9 anos para a fatorao. Mesmo que o poder computacional aumente um milho de vezes, a fatorao ainda consumiria 4 milhes de anos. E se mais segurana for necessria, basta aumentar n por alguns bits. Um dos outros fatores que determinam a popularidade do RSA o fato de ele tambm poder ser usado para assinatura digital; mais detalhes a respeito sero apresentados na seo 8. Muitos outros mtodos criptogrficos de chave pblica vendo sendo propostos. A lista a seguir indica os mais comumente encontrados na literatura. Nem todos se destinam a cifragem de mensagens. Alguns orientam-se mais distribuio de chaves, outros somente para assinatura digital. Todos algoritmos so lentos, o que torna muito lenta a cifragem e decifragem de uma grande quantidade de dados. Diffie-Hellman: o primeiro mtodo de chave pblica proposto, destina-se a resolver o problema da distribuio de chaves, e no pode ser usado para cifragem de mensagens. Baseia-se na x mod n, onde g e n so pblicos (assim como X, que transmitido) e x operao X = g secreto. O valor x usado como base para calcular uma chave comum a ser usada entre dois

- 15 -

Copyright UFRGS www.modulo.com

participantes. Para determinar x a partir de X, g e n, necessrio computar o logaritmo discreto de X na base g em mdulo n, o que um problema NP completo. descrito em [DIF76]. Mtodo da Mochila (Knapsack): desenvolvido por Merkle e Hellman a partir do problema da mochila: dados uma srie de pesos de valores distintos, quais devem ser colocados em uma mochila para que se obtenha um determinado peso total?. Uma mensagem cifrada como uma soluo para uma srie de problemas da mochila, um que pode ser resolvido em tempo linear (o problema da mochila super-crescente, onde cada peso maior que a soma dos seus antecessores) e outro que tem complexidade NP (onde os pesos possuem valores quaisquer). O problema NP a chave pblica, utilizada para cifragem. O problema linear a chave privada. Em teoria, somente quem tem a chave privada consegue resolver o problema (e decifrar a mensagem) em tempo razovel; atacantes necessitam resolver o problema complexo. Na prtica, entretanto, o mtodo j foi quebrado. Descries podem ser encontradas em [BOR94], [LEI82], [SCH92]. Pohlig-Hellman: muito semelhante ao RSA, mas no exige que n seja o produto de dois primos. No um algoritmo simtrico, pois usa chaves diferentes para a cifragem e decifragem, mas tambm no um algoritmo de chave pblica, pois ambas chaves devem ser mantidas secretas. Pode ser encontrado em [POH78]. Rabin: este mtodo retira sua segurana da dificuldade de se extrair raiz quadrada em aritmtica de mdulo de um nmero composto. Inicialmente so escolhidos dois primos, p e q, ambos congruentes a 3 mdulo 4, ou seja, p mod 4 = q mod 4 = 3. Estes primos so a chave privada; o produto n = p x q a chave pblica. Para cifrar uma mensagem M, calcula-se C = M2 mod n. Para decifrar a mensagem, calcula-se quatro possibilidades: M1 = C(p+1)/4 mod n; M2 = p C(p+1)/4 mod n; M3 = C(q+1)/4 mod n; e M4 = q C(q+1)/4 mod n. Uma destas quatro mensagens ser igual a M, as outras trs tero contedo randmico. Se a mensagem M for textual, isto no representa um problema maior, mas impossvel aplicar este mtodo se as mensagens forem compostas de padres binrios. descrito em [WIL80]. Feige-Fiat-Shamir: um mtodo para assinatura digital e para identificao com conhecimento zero (zero-knowledge proof of identity), composto por uma srie de algoritmos, todos baseados em resduos quadrticos mdulo n. O nmero n o produto de dois primos, deve ter entre 512 a 1014 bits e compartilhado entre todos os participantes. Um participante em particular escolhe um nmero v que seja um resduo quadrtico modulo n, ou seja, x2 = v mod n tem uma soluo e 1/v mod n existe. Esta a chave pblica. A seguir calcula-se o menor s para o qual s = sqrt(1/v) mod n. Esta a chave privada. As chaves no so usadas para criptografia, mas sim para implementar um protocolo de identificao atravs de credenciamento: o processo repetido tantas vezes entre dois participantes at que cada um esteja convencido de que o outro quem diz ser. Isto feito utilizando-se operaes para as quais necessrio (mas no obrigatrio) o conhecimento de s. No primeiro passo, um intruso tem 50% de chances de acertar, mas aps t passos estas chances esto reduzidas a 1/2t. descrito em [SCH94]. Guillou-Quisquater: um mtodo de identificao com conhecimento zero. Cada participante possui um bloco de bits J, que pblico e equivale a suas credenciais e outro bloco B, que secreto e calculado de forma que JB v mod n = 1. Os nmeros v e n so compartilhados, e n produto de dois primos secretos. O participante que deseja se identificar envia J e a seguir executado um protocolo destinado a provar que este participante conhece o B equivalente. Este protocolo executado em um nico passo, e assim bem rpido. Ong-Schnorr-Shamir: um mtodo de assinatura digital baseado em polinminos mdulo n. O nmero n deve ser grande, mas no necessrio conhecer sua fatorao. A seguir escolhe-se um nmero k qualquer, que seja primo em relao a n. Calcula-se ento h = (k -1)2 mod n. A chave pblica so h e n; a chave privada k. Uma mensagem M assinada calculando-se um

- 16 -

Copyright UFRGS www.modulo.com

par de nmeros S1 = 1/2 x (M/r + r) mod n e S 2 = k/2 x (M/r r) mod n. Para verificar a 2 2 assinatura, comprova-se que M = (S 1 + h x S2 ) mod n. Este mtodo j foi quebrado, tanto para polinmios quadrticos como cbicos e de potncia 4. citado em [SCH94]. ElGamal: um mtodo capaz de realizar cifragem e assinatura digital. Sua segurana baseada na dificuldade de clculo de logaritmos discretos e aritmtica de mdulo. Para gerar um par de chaves, deve-se escolher um nmero primo p e dois nmeros quaisquer g e x, ambos menores que p. Ento calcula-se y = gx mod p. A chave pblica y, g e p, e a chave secreta x. Os nmeros g e p podem ser compartilhados por um grupo de participantes. Assim como RSA, ElGamal um dos poucos mtodos que pode ser usado tanto para cifragem como para a assinatura de mensagens (veja-se a seo 8 para maiores detalhes, assim como [ELG85]). Schnorr: um mtodo utilizado para identificao (credenciamento) e assinatura digital, baseia-se tambm na dificuldade de clculo de logaritmos discretos. O mtodo inicialmente escolhe dois primos, p e q, tal que q um fator primo de (p1). Depois escolhe-se um a (maior que 1) tal que aq mod p = 1. Todos estes nmeros so pblicos e podem ser compartilhados por um grupo de participantes. Para gerar um par de chaves, escolhe-se um nmero qualquer s menor que q. Esta a chave privada. Calcula-se ento v = as mod p. Esta a chave pblica. Com estas chaves, pode-se implementar um protocolo de autenticao e um algoritmo de assinatura digital. DSA: (Digital Signature Algorithm) o algoritmo proposto pelo NIST (National Institute of Standards and Technology) para uso no padro DSS (Digital Signature Standard). Como seu nome indica, foi desenvolvido exclusivamente para assinatura digital, e no pode ser usado para cifragem. Utiliza os seguintes elementos: um nmero primo p com comprimento entre 512 e 1024 bits; um nmero q de 160 bits, que seja um fator primo de (p1); um nmero g = h(p1)/q, onde h qualquer nmero menor que p1 de forma que h(p1)/q mod q > 1. Estes trs nmeros podem ser compartilhados entre diversos participantes. Para uma chave privada escolhe-se um nmero x, menor que q. Para a chave pblica, calcula-se y = gx mod p (veja-se a seo 8 para maiores detalhes, assim como [NIS92]). ESIGN: um mtodo de assinatura digital, que utiliza dois nmeros primos grandes (mais de 192 2 x q. O mtodo bits), p e q. Estes nmeros so a chave privada. A chave pblica n = p necessita de uma funo de hash, H(x). Para tornar o mtodo mais seguro, tambm necessrio o uso de k, um parmetro de segurana. Maiores detalhes podem ser encontrados em [SCH94]. LUC: um dos mtodos de cifragem mais recente, difere dos demais por no empregar exponenciao, mas sim utilizar sries de Lucas. Nestas sries, tem-se que, para dois inteiros P e Q, os elementos Vi da srie V(P,Q) so definidos como V0 = 2, V1 = P, e Vi+1 = P.ViQ.Vi1. No mtodo LUC, como no RSA, utiliza-se um nmero n, produto de dois primos, e duas chaves de cifragem e e de decifragem d. A chave e pblica e d privada. Para cifrar uma mensagem M, calcula-se C = Ve(M,1) mod n, ou seja, o resduo mdulo n do e-simo termo da srie definida for V(M,1). Para decifrar calcula-se M = Vd(C,1) mod n. Basicamente, LUC substitui a exponenciao do RSA pelo clculo de sries de Lucas. Detalhes podem ser encontrados em [SMI93] e [BOR94]. 8 Assinatura digital Nos sistemas de criptografia de chave pblica, qualquer pessoa pode cifrar uma menagem, mas somente o destinatrio desta mensagem pode decifr-la. Isto obtido justamente pelo uso de duas chaves: uma pblica, para cifragem, disponvel para qualquer um, e outra privada, para decifragem, conhecida apenas por uma pessoa. Mensagens cifradas pela chave pblica somente podero ser decifradas pela chave privada. Invertendo a ordem de uso das chaves, obtm-se uma mensagem

- 17 -

Copyright UFRGS www.modulo.com

que s pode ser cifrada por uma pessoa, mas pode ser decifrada por qualquer um. Naturalmente, no se pode falar em privacidade ou segredo neste caso, mas obtm-se um efeito de personalizao do documento (somente uma pessoa pode t-lo cifrado), semelhante a uma assinatura. Um sistema deste tipo denominado de assinatura digital. Sistemas de chave nica tambm poder ser utilizados para realizarem as funes de assinatura digital (normalmente com o uso de um rbitro), mas nos criptosistemas de chave pblica a gerao de assinaturas digitais muito mais direta. Supondo que o usurio A queira enviar uma mensagem assinada para o usurio B. Ele somente necessita aplicar na sua mensagem a sua chave privada, ou seja, ele calcula C = S(M,KprivA ), onde S o algoritmo de assinatura. Para decifrar a mensagem aps seu recebimento, B simplesmente calcula M = V(C,KpubA ), onde V o algoritmo de verificao. Pelo fato da chave pblica de A ter conseguido restaurar a mensagem, isto significa que somente A pode t-la enviado. Naturalmente, qualquer outro participante tambm dispe de KpubA , e qualquer um tambm pode restaurar M. Mas o objetivo individualizar a mensagem, e no torn-la secreta. Um sistema de assinatura digital possui as seguintes propriedades: a assinatura autntica: quando o usurio B usa KpubA (a chave pblica de A), ele confirma que foi A e somente A quem assinou a mensagem. a assinatura no pode ser forjada: somente A conhece sua chave privada KprivA , e ningum mais pode assinar o documento no lugar de A. o documento assinado no pode ser alterado: se houver qualquer modificao em C, ele no ir mais ser restaurado para M com o uso de KpubA (a chave pblica de A). a assinatura no reutilizvel: a assinatura uma funo do documento e no pode ser transferida para outro documento. a assinatura no pode ser repudiada: o usurio B no necessita de nenhuma ajuda de A para verificar a assinatura de A, ou seja, o usurio A no pode posteriormente negar ter assinado o documento. Existem muitos mtodos de assinatura digital. Todos eles so criptosistemas de chave pblica: existe uma informao secreta que somente um participante conhece e que ele usa para assinar as mensagens, e existe uma informao pblica que todos conhecem e usam para verificar a assinatura. Muitas vezes o processo de assinatura denominado de cifragem com a chave privada, e o processo de verificao chamado de decifragem com a chave pblica. Formalmente isto no correto, uma vez que s verdadeiro para um nico mtodo (o RSA, justamente o mais conhecido e que combina cifragem e assinatura). Outros mtodos usam algoritmos distintos para cifragem e para assinatura, e uma grande maioria deles somente implementa assinatura, e no cifragem. Por isto deve-se usar a funo S(M, Kprivada ) para representar a assinatura de uma mensagem M com uma chave privada, e a funo V(C,Kpblica) para representar a verificao de uma mensagem assinada C com uma chave pblica. No mtodo RSA, tem-se que E(D(M,Kq),Ke ) = M, em adio a propriedade usual de que D(E(M,Ke),Kd) = M. Isto permite que ele seja utilizado sem modificaes tanto para cifragem como para assinatura, e inclusive para ambas funes na mesma mensagem, conforme ilustrado a seguir. Na Tabela 1 encontra-se o resumo do mtodo RSA. Cifragem: se A quer enviar uma mensagem cifrada para B, ele calcula C = E(M,KeB ), utilizando a chave pblica de B. O usurio B restaura a mensagem calculando M = D(C,KdB ), usando sua chave privada. Neste caso D(E(M,KeB ),KdB ) = M.

- 18 -

Copyright UFRGS www.modulo.com

Assinatura: se A quer enviar uma mensagem assinada para B, ele calcula C = D(M,KdA ), utilizando sua chave privada. O usurio B verifica a mensagem calculando M = E(C,KeA ), usando a chave pblica de A. Neste caso E(D(M,KdA ),KeA ) = M. Assinatura e Cifragem: se A quer enviar uma mensagem assinada e cifrada para B, ele primeiro assina M, calculando C1 = D(M,KdA ), utilizando sua chave privada. A seguir, ele calcula C = E(C1,KeB ), utilizando a chave pblica de B. Tem-se ento C = E(D(M,KdA ),KeB ), que enviada. O usurio B inicialmente restaura a mensagem calculando C1 = D(M,KdB ), usando sua chave privada. Depois B verifica a mensagem calculando M = E(C1,KeA ), usando a chave pblica de A. Neste caso E(D(E(D(M,KdA ),KeB ),KdB ),KeA ) = M.

Chave pblica Chave privada Cifragem Decifragem Assinatura Verificao Tabela 1 Mtodo RSA

n: produto de dois primos, p e q (devem ser secretos) e: primo relativo a (p1).(q1) d: (e.d) mod (p1).(q1) = 1, ou d = 1/e mod (p1).(q1) C = Me mod n M = Cd mod n A = Md mod n Aceitar se Ae mod n = M

O mtodo ElGamal tambm implementa cifragem e assinatura digital, conforme mostrado na tabela 2. Somente RSA e ElGamal implementam estas duas funes. Os demais mtodos de chave pblica somente podem ser usados ou para cifragem ou para assinatura. Alguns podem adicionalmente ser utilizados para identificao (credenciamento) de usurios. Um lista resumida dos principais mtodos de chave pblica pode ser encontrada na seo 9 e em [SCH94]. Chave pblica p: primo (pode ser compartilhado por vrios usurios) g: menor que p (pode ser compartilhado por vrios usurios) y: igual a gx mod p x: menor que p k: qualquer, primo relativo a p1 a (texto cifrado) = gk mod p b (texto cifrado) = yk .M mod p M = ( b / (ax ) ) mod p k: qualquer, primo relativo a p1 a (assinatura) = gk mod p b (assinatura) tal que M = ( x.a + k.b ) mod (p1) Aceitar se (y a.ab ) mod p = gM mod p

Chave privada Cifragem

Decifragem Assinatura

Verificao Tabela 2 Mtodo ElGamal

O algoritmo de assinatura digital DSA foi desenvolvido pela NSA e proposto pelo NIST para ser utilizado no padro DSS (Digital Signature Standard). Foi bastante combatido, principalmente pelo autores do RSA. Seu uso est resumido na tabela 3. Embora DSA tenha sido projetado para ser

- 19 -

Copyright UFRGS www.modulo.com

usado em assinatura digital, possvel utiliz-lo para cifragem e decifragem nos mtodos de RSA e ElGamal. Assuma-se que DSA est disponvel sob a forma de uma chamada de funo: DSAsign(p,q,g,k,x,h,r,s) Fornecendo-se p, q, g, k, x e h, a funo devolve os valores de r e s. Para implementar a cifragem de RSA, com mdulo n, uma mensagem M e uma chave pblica e, utiliza-se: DSAsign(n,n,M,e,0,0,r,s) O valor de r o texto cifrado C; o valor de s no tem significado e pode ser desprezado. Para decifrar usa-se o mesmo mtodo, agora com uma chave privada d: DSAsign(n,n,C,d,0,0,r,s) Chave pblica p: primo entre 512 e 1024 bits (pode ser compartilhado por vrios usurios) q: fator primo de p1, de 160 bits (pode ser compartilhado) (p1)/q, onde h qualquer nmero menor que p1 de forma que g: dado por h h(p1)/q mod q > 1 (pode ser compartilhado por vrios usurios) H(M): funo de hash sobre a mensagem (funo compartilhada) y = gx mod p (chave pblica) x: menor que q (um nmero de 160 bits) k: qualquer, menor que q r (assinatura) = ( gk mod p ) mod q s (assinatura) = ( k-1. ( H(M) + x.r )) mod q

Chave privada Assinatura

Verificao

w = s1 mod q u1 = ( H(M) . w ) mod q u2 = ( r . w ) mod q v = ( ( gu1 . y u2 ) mod p ) mod q; aceitar se v = r Tabela 3 Mtodo DSA Para implementar a cifragem de ElGamal sobre uma mensagem M e uma chave pblica y, escolhese um nmero qualquer k e calcula-se: DSAsign(p,p,g,k,0,0,r,s) O valor retornado para r o valor a de ElGamal. O valor de s pode ser desprezado. Agora calcula-se: DSAsign(p,p,y,k,0,0,r,s) Renomeia-se r para ser u; despreza-se s. A seguir calcula-se: DSAsign(p,p,M,1,u,0,r,s) Despreza-se r, o valor de s o valor b em ElGamal. Com isto obtm-se a e b, o texto cifrado. Para decifrar, usando uma chave privada x e as mensagens cifradas a e b, calcula-se: DSAsign(p,p,a,x,0,0,r,s) x O valor retornado para r a mod p; seja este valor denominado de e. Agora calcula-se: DSAsign(p,p,1,e,b,0,r,s) O valor s a mensagem decifrada M. 9 Funes unidirecionais Em implementaes prticas, o uso de algoritmos de chave pblica para assinatura digital so muitas vezes ineficientes para assinar documentos longos. A fim de reduzir o tempo necessrio, muitos protocolos de assinatura digital so implementados com funes de hash unidirecionais ( one-way hash functions). No lugar de assinar um documento, calcula-se o hash e aplica-se a assinatura

- 20 -

Copyright UFRGS www.modulo.com

somente sobre o hash, que normalmente de tamanho reduzido (128 a 512 bits). O processo segue ento os seguintes passos: o usurio A produz um hash unidirecional do documento. o usurio A assina o hash com sua chave privada, assinando assim o documento. o usurio A envia o documento e o hash assinado para o usurio B. o usurio B calcula o hash do documento. A seguir, B restaura o hash assinado, usando a chave pblica de A. Se o hash produzido e o hash restaurado foram iguais, ento o documento e a assinatura so vlidos. Este protocolo tem outras vantagens adicionais. O documento pode ser armazenado em forma legvel, o que facilita o acesso e a leitura. Documento e hash podem ser guardados em locais diferentes, o que dificulta mais ainda adulteraes. O espao necessrio para guardar o hash bem reduzido. E o mais interessante, relacionado com privacidade e outros aspectos legais: o documento pode ser mantido secreto; somente o seu hash assinado necessita ser tornado pblico. S quando a autoria de um documento (ou de uma idia) deve ser provada que o documento precisa ser tornado pblico. Uma funo de hash unidirecional, H(M), opera sobre uma mensagem de comprimento qualquer, M, e retorna um valor de hash de comprimento fixo, h, ou seja, h = H(M). Existem muitas funes que realizam hash, mas para serem unidirecionais estas funes devem ter caractersticas adicionais: Dado M, deve ser rpido e fcil calcular h. Dado h, muito demorado e difcil calcular M. Dado um M, deve ser muito difcil encontrar outra mensagem M' tal que H(M) = H(M'). O termo difcil depende da segurana desejada, mas para a maioria das aplicaes atuais uma ordem de 264 a 2128 operaes, ou mesmo at mais. Existem dois ataques contra uma funo de hash unidirecional. O primeiro o mais bvio: dado o hash de uma mensagem, h = H(M), o atacante procura criar outro documento M' que produza o mesmo valor de hash, ou seja, H(M) = H(M'). Com isto ele pode comprometer toda a segurana do protocolo que usa este hash. Por exemplo, se o usurio A assina o hash H(M), o atacante poderia apresentar M' e alegar que este foi o documento assinado por A. O segundo ataque mais sutil. Deve ser difcil encontrar duas mensagens quaisquer, M e M', que produzam o mesmo valor de hash. Este ataque muito mais fcil que o primeiro, pois no necessita obedecer a um valor de hash j existente. Ele conhecido como ataque do aniversrio, por refletir um paradoxo estatstico. Quantas pessoas devem ser reunidas at que exista uma probabilidade maior que 50% de uma delas fazer aniversrio em uma data especfica? A resposta 183, ou seja, 365/2 (Este corresponde ao primeiro ataque). Agora, quantas pessoas devem ser reunidas para que existam mais de 50% de chance de duas delas terem aniversrio no mesmo dia ? A resposta surpreendentemente baixa: 24. Podem existir poucas pessoas, mas existem 276 pares possveis de pessoas (este corresponde ao segundo ataque). Com o ataque do aniversrio, um atacante prepararia dois documentos, M e M'. Um destes documentos seria mostrado ao usurio A, que produziria um hash assinado. O atacante pode mais tarde mostrar M' e alegar que foi este o documento assinado. Considere-se que uma funo de hash unidirecional tenha as propriedades discutidas acima, que ela produz uma sada de m bits e que o melhor meio de ataque o da fora bruta. Achar uma m mensagens, mensagem que produza um determinado valor de hash ir ento requerer testar 2

- 21 -

Copyright UFRGS www.modulo.com

m/2 enquanto que achar duas mensagens que produzam o mesmo hash ir requerer o teste de 2 mensagens. Supondo um hash de 64 bits, uma mquina que consiga realizar um milho de hashs por segundo necessitar 600.000 anos para achar uma segunda mensagem que possua um dado valor de hash, mas encontra duas mensagens que produzam o mesmo hash em cerca de uma hora. Por este motivo, o tamanho mnimo recomendado para o comprimento de um hash 128 bits. A maioria das implementaes das funes de hash unidirecionais so implementadas a partir de uma funo que produz uma sada de m bits dadas duas entradas de m bits cada. Estas duas entradas so normalmente um bloco de texto e o hash resultante do processamento do bloco anterior. Matematicamente, tem-se que hi = f (Mi, hi1). A sada hash do ltimo bloco torna-se o hash de toda a mensagem. Desta maneira, uma funo de hash unidirecional produz sempre uma sada de tamanho fixo, independente do tamanho a mensagem. Tipicamente, alguma informao binria sobre o tamanho da mensagem M anexada a M antes do hash ser realizado, a fim de resolver um eventual problema se segurana resultante do fato de duas mensagens de comprimento diferentes produzirem o mesmo valor de hash. Existem muitas propostas de funes de hash unidirecionais. As principais so descritas brevemente a seguir. Para o funcionamento detalhado de cada uma, deve-se consultar artigos especficos sobre cada uma. Snefru: desenvolvida por Ralph Merkle e baseada no nome de um fara egpcio. Produz um hash de 128 ou de 256 bits. A mensagem dividida em blocos de 512m, onde m igual a 128 ou 256. A sua segurana baseada em uma funo que randomiza os dados em vrios passos. Cada passo constitudo de 64 etapas, e em cada etapa realiza-se uma cifragem por substituio combinada com operaes de ou-exclusivo e rotao. Atualmente utilizam-se no mnimo 8 passos. Para 2, 3 e 4 passos j foi demonstrado que Snefru inseguro (pode ser atacado com mtodos melhores que o da fora bruta). N-HASH: foi desenvolvido pelos mesmo autores de FEAL, usando inclusive funes de randomizao semelhantes as de FEAL. Trabalha sobre blocos de mensagem de 128 bits, e produz um hash tambm de 128 bits. Seu bloco bsico utiliza funes de soma, ou-exclusivo e rotao. Este bloco pode ser encadeado, formando assim uma funo total de diversos passos. Para qualquer nmero de passos menor que 15, j foi demonstrado que N-HASH inseguro. MD2: (Message Digest 2) desenvolvida por Ron Rivest, produz um hash de 128 bits. Comparada com MD4 e MD5, do mesmo autor, lenta e menos segura. No mais recomendada para uso. Pode ser encontrado em [KAL92] e [SPO95]. MD4: (Message Digest 4) tambm de Rivest, produz um hash de 128 bits. Trabalha sobre blocos de 512 bits, divididos em 16 sub-blocos de 32 bits. A sada do mtodo um conjunto de 4 blocos de 32 bits, que so concatenados para formar o hash de 128 bits. As operaes utilizadas internamente compreendem soma, deslocamento, ou-exclusivo e operaes lgicas ou e e. Como um todo, MD4 no pode ser atacado a no ser pelo mtodo da fora bruta, mas diversos estgios internos j foram criptoanalisados individualmente com sucesso. Descries podem ser encontradas em [RIV90] e [SPO95]. MD5: (Message Digest 5) desenvolvido por Rivest para melhorar a segurana do MD4, embora diminuindo um pouco sua velocidade de processamento. muito semelhante ao MD4, mas o nmero de funes internas maior, assim como sua complexidade. Como o MD4, antes de iniciar-se o hash o comprimento da mensagem aumentado para tornar-se um mltiplo de 512 bits, e o comprimento original da mensagem armazenado nos ltimos 64 bits. Descries podem ser encontradas em [RIV92] e [SPO95]. SHA: (Secure Hash Algorithm) desenvolvido pelo NIST em conjunto com a NSA, para ser usado no DSA. Seu padro definido no SHS (Secure Hash Standard). similar em estrutura ao MD4

- 22 -

Copyright UFRGS www.modulo.com

e MD5, mas produz um valor de hash de 160 bits, o que o torna mais resistente a ataque que os demais. Uma descrio pode ser encontrada em [STA94] e [SPO95]. HAVAL: uma funo de hash de comprimento varivel. Trabalha sobre blocos de 1024 bits, utiliza um nmero varivel de passos (entre 3 e 5), e pode produzir valores de hash de 92, 128, 160, 224 ou 256 bits. Seu projeto foi baseado no MD5. possvel utilizar um sistema de criptografia de chave simtrica que trabalhe com blocos como uma funo de hash unidirecional. Se o mtodo de criptografia seguro, ento a funo de hash tambm o ser. O mtodo mais bvio utilizar um algoritmo de criptografia em modo CBC, com um vetor de inicializao igual a zero (seo 5). O valor do ltimo bloco cifrado o valor de hash. Existem entretanto dois problemas: os algoritmos de criptografia simtrica trabalham normalmente com blocos de 64 bits, o que os torna suscetveis ao ataque do aniversrio, e necessrio o uso de uma chave de cifragem, que deve ser mantida secreta. Um mtodo de adaptao mais elaborado usar o bloco da mensagem como a chave de cifragem, o valor prvio de hash como entrada (no lugar da mensagem) e obter o valor de hash atual da sada. Alm disto, adiciona-se operaes de ou-exclusivo no lao de realimentao e outros operadores para gerar valores de hash com o dobro do tamanho do bloco, obtendo-se assim tamanhos mnimos de 128 bits. Tambm possvel utilizar um sistema de criptografia de chave pblica como uma funo de hash unidirecional. Basta simplesmente descartar a chave secreta, e trabalhar somente com a chave pblica. No RSA, por exemplo, se M a mensagem, n o produto de dois primos p e q, e e um nmero primo em relao a (p1).(q1), ento a funo de hash seria H(M) = Me mod n. A nica desvantagem com os algoritmos de chave pblica a sua lentido quando comparados com as demais funes de hash. As funes de hash unidirecionais podem tambm utilizar uma chave secreta. Neste caso so denominadas MAC (Message Authentication Code). Somente algum que possua a chave pode verificar o hash. Isto til quando se deseja apenas proteger a autenticidade sem incluir privacidade. Uma funo de hash unidirecional convencional pode ser usada como MAC: concatena-se a chave K mensagem M e calcula-se o hash. Este valor o MAC. Somente quem conhece a chave K poder repetir o processo sobre M e verificar sua integridade. 10 Protocolos criptogrficos Os criptosistemas apresentados nas sees anteriores possuem uma utilidade muito restrita quando usados isoladamente. Naturalmente, dados sensveis podem ser cifrados, de forma que s possam ser processados (decifrados) pelas pessoas autorizadas (que possuam a chave de decifragem). Mas a criptografia pode ser empregada em muitas outras aplicaes quando utilizado um protocolo criptogrfico para resolver um determinado problema. Um protocolo criptogrfico basicamente um protocolo que utiliza criptografia em um ou mais de seus passos. Os participantes podem se conhecer e confiar plenamente uns nos outros, ou podem ser desconhecidos que desconfiam de todos os demais. Embora envolvendo um criptosistema, o objetivo do protocolo normalmente algo alm da simples ocultao ou privacidade de dados. Os participantes podem compartilhar parte dos seus segredos para realizar alguma computao, convencer um do outro da sua identidade, assinar simultaneamente um contrato ou at mesmo realizar uma votao secreta. Um protocolo dito arbitrado se envolver uma outra pessoa (ou computador) alm dos participantes normais. O rbitro deve ser confivel, isto , todos os participantes confiam nele e respeitam suas

- 23 -

Copyright UFRGS www.modulo.com

decises, e deve ser desinteressado, ou seja, no tem nenhum interesse particular na finalidade do protocolo nem qualquer preconceito contra qualquer participante. No caso que um dos participantes no querer finalizar um protocolo, o rbitro deve ajudar a completar este protocolo. Na vida real, o papel de rbitro desempenhado por advogados, banqueiros, juizes, regentes, padres, etc. No caso de computadores, o rbitro deve ser uma entidade centralizada, capaz de armazenar toda a informao envolvida. Isto tem vrios inconvenientes: uma entidade central normalmente um gargalo na rede de comunicao e ao mesmo tempo um ponto vulnervel em termos de segurana. Alm disto, todas as transaes devem ser tratadas pelo rbitro, e isto introduz um atraso nas comunicaes. Um protocolo dito adjudicado se ele pode ser dividido em duas partes. A primeira parte no arbitrada, e executada em casos normais. A segunda parte envolve um rbitro, mas s necessita ser executada no caso de uma disputa ou desentendimento entre os participantes. Note-se que durante a primeira parte os participantes devem produzir bastante evidncias das suas aes, para que se for necessrio recorrer a um rbitro este possa tomar uma deciso. Um protocolo dito auto-sustentado se no requer nunca o uso de um rbitro, nem em situaes normais nem em casos de desentendimento. O prprio protocolo garante justia e imparcialidade. O protocolo construdo de tal maneira que no possam ocorrer disputas ou trapaas. Se um dos participantes tenta ser desonesto, os outros participantes detectam isto imediatamente, e o protocolo para antes que o trapaceiro possa ter algum ganho ou obter alguma informao confidencial. Um protocolo pode ser atacado de diversas maneiras, alm das maneiras tradicionais de criptoanlise quanto ao criptosistema em si: comprometimento das chaves: qualquer protocolo ou criptosistema somente seguro se as chaves privadas permanecerem secretas. Se elas forem roubadas, reveladas (intencionalmente ou no) ou comprometidas de alguma forma, ento toda a segurana perdida. Uma chave tambm considerada comprometida se for usada repetidas vezes ou a sua regra de formao for facilmente deduzvel (chave fraca). ataque do homem-no-meio: ocorre quando um atacante no s tem condies de interceptar as mensagens trocadas entre os participantes (ataque passivo), mas tambm consegue introduzir suas prprias mensagens de tal maneira que os demais participantes julguem que ela foi enviada por um participante legtimo (ataque ativo). ataque dos participantes: um ou mais dos participantes pode querer trapacear, e isto pode ocorrer de diversas maneiras. A mais elementar renegar o protocolo, ou seja, se recusar a realizar um de seus passos. Um protocolo bem definido deve permitir que isto seja detectado, e quem se sentir prejudicado deve poder abandonar o protocolo antes de revelar qualquer informao vital. Um ataque mais sutil demorar a completar um determinado passo, de forma a tentar deduzir alguma informao sensvel a partir dos elementos j informados pelos demais participantes. Justamente para evitar isto que os criptosistemas devem ser complexos o suficiente para evitar que isto acontea em tempo hbil. Um terceiro tipo de ataque pode ocorrer se um participante alega que sua chave foi roubada e algum a est utilizando indevidamente. Um grande nmero de protocolos criptogrficos j foram e esto sendo desenvolvidos.. Vrios deles podem ser implementados de diversas formas, com criptosistemas de chave nica ou pblica, com ou sem o uso de rbitros, etc. Outros requerem o uso de algoritmos especficos ou de propriedades que nem todos os mtodos possuem. Um bom estudo geral pode ser encontrado em [BRA88], [FAV94],[SCH93] e [SCH94]. A lista a seguir define a situao em que cada protocolo empregado. Distribuio de chaves: quando duas pessoas decide ter uma conversao secreta ou uma troca de mensagens privadas, necessrio que elas concordem com o uso de uma chave, denominada da chave da sesso. O problema justamente transmitir esta chave por um canal

- 24 -

Copyright UFRGS www.modulo.com

inseguro. Um criptosistema de chave pblica resolve isto automaticamente, enquanto que um de chave nica precisa usar um rbitro ou um mtodo especial [MER78]. Ateno especial deve ser dado ao ataque do homem-no-meio, ou seja, um usurio C que intercepta a comunicao entre A e B, fornecendo para B a sua chave no lugar da chave que A envia, e vice-versa. Para evitar isto usa-se um protocolo de entrelaamento (interlock), onde cada participante envia inicialmente metade da mensagem cifrada, e somente aps o recebimento envia a outra metade. Autenticao de usurio: esta situao ocorre quando o usurio de um sistema deve provar que um usurio legtimo antes de ter acesso aos recursos deste sistema. Este problema envolve necessariamente o uso de uma chave (senha), e pode ser resolvido por funes de hash unidirecionais [LAM81], ou por criptosistemas de chave nica ou pblica, com ou sem o uso de uma central de autenticaes. Entre exemplos de implementao podem ser citados Kerberos, Wide-Mouth Frog Protocol e EKE (encrypted key exchange), todos analisados em [SCH94]. Detalhes tambm so encontrados em [NEE78]. Diviso de segredo: neste caso um segredo deve ser dividido entre diversos participantes, de forma de cada um individualmente no obtenha informao suficiente para deduzir o segredo sozinho. Todos os participantes devem se reunir para regenerar a informao. Esta tcnica normalmente implementada com o uso de ou-exclusivo e cadeias de bits pseudo-randmicos. Compartilhamento de segredo: no item anterior, se uma das partes perdida, a informao no pode ser regenerada. Para resolver isto, as n partes do segredo (denominadas sombras) devem ser tais que m delas reconstroem a informao, mas m1 no. Um mtodo deste tipo recebe o nome de esquema limite(m, n). Alguns exemplos so encontrados em [SCH94]. Autenticao de tempo: este problema surge quando importante saber quando determinada informao foi criada ou alterada. As solues normalmente utilizam carimbos de tempo (timestamps) e funes de hash unidirecionais. Assinatura digital no-contestvel: esta situao ocorre quando a assinatura no deve ser verificado por qualquer um, mas somente aquelas pessoas que o signatrio da mensagem aprova. Ou seja, a assinatura no pode ser verificada sem o consentimento do signatrio. Para implementar isto, deve-se empregar um criptosistema de chave pblica modificado. exemplos podem ser encontrados em [SCH94]. Cara ou coroa: esta situao foi apresentada por Blum em [BLU82] e permite que dois usurios joguem cara ou coroa por um meio de comunicao, sem estarem frente a frente e at mesmo sem se confiarem mutuamente. O problema pode ser resolvido com funes de hash unidirecionais [BRA88], mas um criptosistema de chave pblica tambm pode usado, desde que as funes de cifragem e de decifragem sejam comutativas (RSA satisfaz esta propriedade). O usurio A gera duas mensagens, uma para cara e outra para coroa, cifra as duas com sua chave pblica e envia ambas para B. O usurio B no pode decifr-las (somente A pode), mas escolhe uma delas, cifra com a sua chave pblica e envia para A. Este, por sua vez, no pode reconhecer a mensagem, mas a decifra com sua chave privada e a envia para B. Quando B receber esta mensagem, ele a decifra com sua chave privada e obtm finalmente uma das duas mensagens originais, que envia para A. Neste ponto os dois conhecem qual mensagem foi sorteada. Se houver dvidas, basta os usurios revelarem suas chaves secretas para que cada um possa verificar o processo sem o auxlio do outro. Note-se que para o protocolo ser possvel deve a decifragem de A deve poder ser comutada com a cifragem de B, ou seja: D(D(E(E(M,keA ),keB ),kdA ),kdB ) = D(E(D(E(M,keA ),kdA ),keB ),kdB ) Poquer mental: um protocolo semelhante ao anterior, mas estendido para mais de dois valores e mais de dois participantes. O princpio de operao o mesmo, mas agora as mensagens so inicialmente cifradas sucessivamente pelos n participantes e somente depois decifradas por todos. Um detalhamento pode ser visto em [SCH92].

- 25 -

Copyright UFRGS www.modulo.com

Comprometimento com bit revelado: (bit commitment) este caso surge quando o usurio A quer se comprometer com uma previso, mas no quer revelar esta previso para B antes de um certo momento. O usurio B, por sua vez, quer ter certeza que A no vai mudar de opinio depois de ter se comprometido. O protocolo por ser implementado por hash, chave nica ou chave pblica, mas todos seguem o mesmo padro. Em uma primeira fase, B gera uma cadeia aleatria de bits e envia para A. Este por sua vez, concatena a cadeia com sua previso, cifra o resultado e o envia para B. Na segunda fase, quando a previso deve ser revelada, A envia a chave de cifragem para B, que decifra a mensagem em seu poder, confirma a presena de sua cadeia de bits e pode ler a previso. Detalhes do funcionamento podem ser encontrados em [SCH94] e [FAV95]. Assinatura cega: (blind signature) neste caso se deseja que uma pessoa assine uma mensagem sem conhecer o seu contedo. Por si s esta situao no muito til, mas pode ser empregada como parte de um sistema de votao (onde um voto deve ser validado pelo juiz eleitoral sem ser lido) ou de transferncia bancria (onde o banco deve validar a transao mas mantendo o anonimato da transferncia). O mtodo relativamente simples: o usurio A multiplica sua mensagem por um nmero qualquer (blinding factor) e envia para B, que assina esta mensagem. Recebendo a mensagem assina, A a divide pelo mesmo nmero inicial, deixando assim somente a mensagem original assinada. Para este protocolo funcionar, a funo de assinatura e a multiplicao devem ser comutativas. Este mtodo tambm chamado de assinatura em um envelope. Prova de conhecimento com informao zero: nesta situao, A deseja provar para B que conhece um determinado segredo, sem entretanto revel-lo para B. Um protocolo que consiga convencer B deste fato, sem que B descubra nada sobre o segredo, um protocolo com informao zero. A tcnica a ser utilizada iterativa ( repetida at que B esteja convencido), e cada passo do tipo corte-e-escolha (cut and choose, assim chamado por ser uma maneira de diviso honesta: uma pessoa faz a diviso e a outra escolhe uma das metades). Em cada passo, B pede para A realizar uma escolha binria baseada em uma computao, que s pode ser realizada com sucesso por A se este realmente conhecer o segredo. O usurio A pode trapacear, mas suas chances de ser bem sucedido a longo prazo so reduzidas metade em cada iterao. Assinatura simultnea de contrato: algumas maneiras de resolver esta situao para duas pessoas que no esto frente a frente esto descritos em [BEN90], [SCH93] e [SCH94]. O mtodo bsico consiste em fazer as duas pessoas assinarem alternadamente, letra a letra. Para isto usa-se criptografia e um outro protocolo denominado transferncia cega, onde um usurio A transmite duas mensagens para B, este escolhe uma das duas e pode eventualmente confirm-la com A, sem que este saiba qual das duas foi escolhida. Votao segura: para que uma votao totalmente computadorizada seja possvel, deve ser desenvolvido um protocolo que tenha cinco propriedades bsicas: somente eleitores autorizados podem votar; cada eleitor somente pode votar uma vez; ningum deve determinar os votos dos outros; ningum pode alterar os votos sem ser descoberto; e todos eleitores podem verificar o processo de contagem dos votos e se certificarem que seus votos foram apurados corretamente. Uma boa viso geral sobre este problema e as solues propostas pode ser encontrada em [SCH94]. Dinheiro digital: um sistema de transaes bancrias, onde um pode controlar a legitimidade das transaes efetuadas, mas sem invadir a privacidade de cada transao. Assim, por exemplo, o banco no sabe para onde o usurio A est transferindo seu dinheiro; ele somente pode determinar que A tem a quantia que est transferindo. Detalhes sobre este problema tambm podem ser encontrados em [SCH94], assim como todos os demais desta lista. 11 Concluses

- 26 -

Copyright UFRGS www.modulo.com

A criptografia contempornea segue dois rumos distintos. Um deles, o empregado pelos criptosistemas de chave nica, emprega um grande nmero de funes elementares de um computador (soma, deslocamentos, substituies, transposies, ou-exclusivo, etc) para gerar difuso e confuso na mensagem cifrada. Estes mtodos so fceis de serem implementados em um computador, e apresentam grande velocidade de processamento. A segurana destes mtodos julgada pela criptoanlise: se no for desenvolvido nenhuma maneira de ataque mais eficaz que o da fora bruta, ento o mtodo considerado seguro. Criptosistemas de chave pblica so especialmente orientados para protocolos de rede de computadores, e baseiam-se em funes computacionalmente complexas. Definido o funcionamento de um sistema de chave pblica, muito fcil determinar quais as funes a serem executadas por um atacante para quebrar o sistema. Mas estas funes so computacionalmente intratveis e exigem uma quantidade impraticvel de tempo e recursos de processamento, de modo que o sistema seguro para todos os fins prticos. Criptosistemas de chave pblica trabalham normalmente com grandes nmeros (mais de 512 bits), o que no suportado pelos computadores atuais. Assim, todas as operaes aritmticas devem ser implementadas em software (utilizando-se as chamadas bibliotecas de grandes nmeros ou de mltipla preciso), o que torna estes mtodos bem mais lentos que os de chave nica. Decidir entre criptosistemas de chave nica e de chave pblica uma tarefa que depende de diversos fatores. A criptografia de chave pblica melhor para distribuio de chaves, autenticao e protocolos criptogrficos. Neste sentido, ela pode realizar tarefas que a criptografia de chave nica no pode fazer. Por outro lado, criptosistemas de chave nica so vrias ordens de magnitude mais rpidos. So ideais para cifrar arquivos e canais de comunicao. Criptosistemas de chave nica e de chave pblica trabalham melhor juntos. O sistema PEM (Privacy Enhanced Mail), utilizado na Internet, utiliza DES no modo CBC para cifragem, MD2 ou MD5 para autenticao e RSA para gerncia de chaves. O sistema PGP ( Pretty Good Privacy), desenvolvido por Philip Zimmerman e colocado em domnio pblico, usa IDEA para cifragem, RSA para gerncia de chaves e MD5 como funo de hash. Este sistema, e muitos outros mtodos citados aqui, esto disponveis por ftp annimo em ftp.dsi.unimi.it, no diretrio pub/security. Para maiores informaes sobre os tpicos abordados neste tutorial recomenda-se [BRA88], [DAV84], [LEI82], [LUC86], [SCH94] e [SIM92]. Bibliografia [AKL83] [BAR92] [BEN90] [BLU82] [BOO81] [BOR92] Akl, S. G. Digital signatures: a tutorial survey. Computer, vol 16, no 2, fevereiro 1983, p.15-24. Barlow, J. P. Decrypting the puzzle palace. Communications of the ACM, vol 35, no 7, julho 1992, p.25-31. Ben-Or, M.; Goldreich, O.; Micali, S.; Rivest, R. A fair protocol for signing contracts. IEEE Transactions on Information Theory, vol 36, no 1, janeiro 1990, p. 40-46. Blum, M. Coin flipping by telephone: a protocol for solving impossible problems. Proceedings of the 24th IEEE Computer Conference, 1982, p. 133-137. Booth, K. S. Authentication of signatures using public key encryption. Communications of the ACM, vol 24, no 11, novembro 1981, p.772-774. Borella, A. Criptosistemas de chave pblica: segurana na comunicao de dados. Projeto de diplomao, curso de cincias de computao, UFRGS, Porto Alegre, 1992.

- 27 -

Copyright UFRGS www.modulo.com

[BOR94] [BRA88] [CHA85] [CIK92] [COP87] [DAN95] [DAV83] [DAV84] [DEM83] [DEN83] [DEN84] [DIF76] [DIF79] [ELG85] [FAV94] [JUE83] [KAH80] [KAK83] [KAL92] [LAM81] [LEI82] [LEM79] [LUC86]

Borella, A. A criptografia assimtrica e seus principais mtodos. Trabalho individual, Ps-Graduao em Cincia da Computao, UFRGS, Porto Alegre, 1994. Brassard, G. Modern Criptology. Lectures notes in computer science. Springer Verlag, New York, 1988. Chaum, D. Security without identification: transactions systems to make Big Brother obsolete. Communications of the ACM, vol 28 no 10, outubro 1985, p. 1030-1044. Cikoski, M. J. Criptografia: a segurana dos dados. Projeto de diplomao, curso de cincias de computao, UFRGS, Porto Alegre, 1992. Coppersmith, D. Cryptography. IBM Journal of Research and Development, vol 31, no 2, maro 1987, p.244-248. Dandrea, M. M. Sistema de criptoanlise. Projeto de diplomao, curso de cincias de computao, UFRGS, Porto Alegre, 1995. Davies, D. W. Applying the RSA Digital Signature to Electronic Mail. Computer, vol 16, no 2, fevereiro 1983, p.55-62. Davies, D. W.; Price, W. L. Security for Computer Networks. John Wiley & Sons, New York, 1984. Demillo, R.; Merrit, M. Protocols for Data Security. Computer, vol 16, no 2, fevereiro 1983, p. 39-51. Denning, D. E. Protecting Public Keys and Signatures Keys. Computer, vol 16, no 2, fevereiro 1983, p. 27-35. Denning, D. E. Digital signatures with RSA and other public-key cryptosystems. Communications of the ACM, vol 27, no 4, abril 1984, p. 388-392. Diffie, W.; Hellman, M. E. New Directions in Cryptography. IEEE Transactions on Information Theory, vol IT-22, novembro 1976, p. 644-654. Diffie, W.; Hellman, M. E. Privacy and authentication: an introduction to cryptography. Proceedings of the IEEE, vol 67, no 3, maro 1979, p. 397-342. ElGamal, T. A public-key cryptosystem and a signature scheme based on discrete logarithms. IEEE Transactions on Information Theory, vol IT-31, 1985, p. 468-472. Fava, S. L. Um estudo preliminar sobre protocolos criptogrficos. Projeto de diplomao, curso de cincias de computao, UFRGS, Porto Alegre, 1994. Jueneman, R. R.; Matyas, S. M.; Meyer, C. H. Message Authentication. IEEE Commu nications magazine, vol 23, no 9, agoso 1983, p 29-40. Kahn, D. Cryptology goes Public. IEEE Communications magazine, vol 18, no 3, maro 1980, p. 19-28. Kak, S. C. Data Security in Computer Networks. Computer, vol 16, no 2, fevereiro 1983, p 8-10. Kaliski, B. S. The MD2 Message Digest Algorithm. Request for Comments RFC 1319, abril 1992. Lamport, L. Password authentication with insecure communication. Communications of the ACM, vol 24, no 11, novembro 1981, p. 770-774. Leiss, E. L. Principles of Data Security. Plenum Press, New York, 1982. Lempel, A. Cryptology in Transiction. Computing Surveys, vol 11, no 4, dezembro 1979, p 285-303. Lucchesi, C. L. Introduo Criptografia Computacional. UNICAMP, Campinas, 1986.

- 28 -

Copyright UFRGS www.modulo.com

[MER78] [MER81] [MON94]

Merkle, R. C. Secure Communications over an insecure channel. Communications of the ACM, vol 21, no 4, abril 1978, p. 294-299. Merkle, R. C.; Hellman, M. E. On the security of multiple encryption. Communications of the ACM, vol 24, no 7, julho 1981, p. 465-467. Montenegro, F. S. Uma implementao do mtodo de Blum-Goldwasser para criptografia probabilstica. Projeto de diplomao, curso de cincias de computao, UFRGS, Porto Alegre, 1994. Needham, R. M.; Schroeder, M. D. Using encryption for authentication in large networks. Communications of the ACM, vol 21, no 12, dezembro 1978, p. 993-999. NIST; Rivest, R.; Hellman, M.; Anderson, J. DSS: The Digital Signature Standard. Communications of the ACM, vol 35, no 7, julho 1992, p.33-54. Peleg, S.; Rosenfeld, A. Breaking Substitution Ciphers using a Relaxation Algorithm. Communications of the ACM, vol 22, no 11, novembro 1979, p.598-605. Pohlig, S. C.; Hellman, M. E. An improved algorithm for computing logarithms in GF(p) and its cryptographic significance. IEEE Transactions on Information Theory,vol 24, no 1, janeito 1978, p. 106-111. Rivest, R. L.; Shamir, A.; Adleman, L. A method for obtaining digital signatures and public key cryptography. Communications of the ACM, vol 21, no 2, fevereiro 1978, p. 120-126. Rivest, R. L.; Shamir, A. How to expose a eavesdropper. Communications of the ACM, vol 27, no 4, abril 1984, p. 393-395. Rivest, R. The MD4 Message Digest Algorithm. Request for Comments RFC 1186, 1990. Rivest, R. The MD5 Message Digest Algorithm. Request for Comments RFC 1321, 1992. Schneier, B. Untangling public-key cryptography. Dr. Dobb's Journal, vol 17, no 5, maio 1992, p. 16-28. Schneier, B. The IDEA encryption algorithm. Dr. Dobb's Journal, vol 18, no 13, dezembro 1993, p. 50-56. Schneier, B. Applied Cryptography. John Wiley & Sons, New York, 1994. Shamir, A. How to share a secret. Communications of the ACM, vol 22, no 11, novembro 1979, p. 612-613. Simmons, G. J. Symmetric and asymetric encryption. Computing Surveys, vol 11, no 4, dezembro 1979, p. 305-330. Simmons, G. Contemporany Cryptology - The science of information integrity. IEEE Press, 1992. Smid, M. Integrating the data encryption standard into computer networks. IEEE Transactions on Communications, vol com-29, no 6, junho 1981, p. 762-772. Smith, P. LUC Public key encryption. Dr. Dobb's Journal, vol 18, no 1, janeiro 1993, p. 44-49. Spohn, M. A. Uma anlise de funes de hash em assinatura digital. Projeto de diplomao, curso de cincias de computao, UFRGS, Porto Alegre, 1995. Stallings, W. SHA: the secure hash algorithm. Dr. Dobb's Journal, vol 19, no 4, abril 1994, p. 32-34.

[NEE78] [NIS92] [PEL79] [POH78]

[RIV78]

[RIV84] [RIV90] [RIV92] [SCH92] [SCH93] [SCH94] [SHA79] [SIM79] [SIM92] [SMI81] [SMI93] [SPO95] [STA94]

- 29 -

Copyright UFRGS www.modulo.com

[STE94] [TAN88] [WIL80]

Stevens, A. Hacks, spooks and data encryption. Dr. Dobb's Journal, vol 19, no 4, abril 1994, p. 127-134, 147-149. Tannenbaum, A. S. Computer Network, 2 .ed. Englewood Cliffs, Prentice Hall 1988, p. 496-518. Williams, H. C. A modification of the RSA public-key encryption procedure. IEEE Transactions on Information Theory, vol IT-26, no 6, novembro 1980, p. 726-729.

- 30 -

Vous aimerez peut-être aussi