Você está na página 1de 7

Diffie-Hellman

Origem: Wikipdia, a enciclopdia livre.

A troca de chaves de Diffie-Hellman um mtodo de criptografia especfico para troca de chaves


desenvolvido por Whitfield Diffie e Martin Hellman e publicado em 1976. Foi um dos primeiros
exemplos prticos de mtodos de troca de chaves implementado dentro do campo da criptografia. O
mtodo da troca de chaves de Diffie-Hellman permite que duas partes que no possuem
conhecimento a priori de cada uma compartilhar uma chave secreta sob um canal de comunicao
inseguro. Tal chave pode ser usada para encriptar posteriores mensagens usando uma esquema de
cifra de chave simtrica.
Tal conceito foi previamente inventado por Malcolm Williamson, um funcionrio do Government
Communications Headquarters (GCHQ) no Reino Unido, alguns anos antes de Whitfield Diffie e
Martin Hellman, porm o GCHQ decidiu no tornar pblico a descoberta pois tratava-se de assunto
de segurana nacional. Somente em 1997 foi revelado o trabalho mas no teve muita repercusso
na pesquisa em universidades. O trabalho de Malcolm Williamson no incluia o conceito
de assinatura digital.[1] Em 2002, Hellman sugeriu que o algoritmo fosse chamado de troca de
chave de Diffie-Hellman-Merkle, em reconhecimento as contribuies de Ralph Merkle para a
inveno da criptografia de chave pblica. Martim Hellman escreveu:
O sistema conhecido desde de ento como troca de chave de Diffie-Hellman. Enquanto tal sistema
foi descrito em um artigo por mim e Diffie, ele um sistema de distribuio de chave pblica, um
conceito desenvolvido por Merkle, e desta forma deveria ser chamado de 'troca de chave de DiffieHellman-Merkle'. Eu espero que esta pequena contribuio ajude na jornada para reconhecer as
contribuies de Merkle na inveo da criptografia de chave pblica.
O mtodo foi seguido pelo RSA, uma outra implementao de criptografia de chave pblica
usando algoritmos assimtricos.

Descrio
Antes de 1975 se algum falasse que seria possvel a troca de informaes criptografadas entre
duas partes sem que houvesse uma troca de chaves secretas entre ambas as partes provavelmente
muitos matemticos diriam ser impossvel. Mas em 1976 o algoritmo Diffie-Hellman foi inventado. O
maior problema para que isso acontecesse foi a dificuldade de clculos de logaritmos discretos em
um campo infinito.
Diffie-Hellman estabelece um compartilhamento de chaves secreto que pode ser usado para troca
de mensagens secretas dentro de um canal de comunicao pblico. O diagrama a seguir ilustra a
idia geral de troca de chaves usando cores ao invs de um nmero muito grande. O passo chave
do processo que Alice e Bob trocam suas cores secretas apenas atravs de uma mistura. Isso
gera uma chave idntica que praticamente impossvel de ser revertida por qualquer outra parte

que esteja escutando o canal. Alice e Bobo usam sua chave comum encriptar e descriptar de modo
secreto suas mensagens. Note que a cor amarela j foi previamente acordada por Alice e Bob.

Esquema de troca de chave de Diffie-Hellman

A mais simples, e original, implementao do protocolo utiliza grupos multiplicativos de


inteiros mdulo p, onde p um nmero primo e g uma raiz primitiva mdulo p. Aqui est um
exemplo do protocolo, onde os valores pblicos esto em azul e os valores secretos esto
em vermelho e destacados :

Alice

Secreto

Pblico

p, g

p, g, A

p, g, A

a, s

Bob

Calcula

Envia

Calcula

Pblico

p,g

ga mod p = A A

p, g, A, B Ba mod p = s

Secreto

p, g

B gb mod p = B p, g, A, B

Ab mod p = s p, g, A, B

b, s

1. Alice e Bob entram em acordo para usar um nmero primo p=23 e como base g=5.

2. Alice escolhe um inteiro secreto a=6, e ento envia a Bob A = ga mod p

A = 56 mod 23

A = 15,625 mod 23

A=8

3. Bob escolhe um inteiro secreto b=15, e ento envia a Alice B = gb mod p

B = 515 mod 23

B = 30,517,578,125 mod 23

B = 19

4. Alice calcula s = B a mod p

s = 196 mod 23

s = 47,045,881 mod 23

s=2

5. Bob computes s = A b mod p

s = 815 mod 23

s = 35,184,372,088,832 mod 23

s=2

6. Alice e Bob compartilham agora uma chave secreta: s = 2. Isto possvel porque 6*15 o
mesmo que 15*6. Algum que tenha descoberto estes dois inteiros privados tambm ser
capaz de calcular s da seguinte maneira:

s = 56*15 mod 23

s = 515*6 mod 23

s = 590 mod 23

s = 807,793,566,946,316,088,741,610,050,849,573,099,185,363,389,551,639,556,
884,765,625 mod 23

s=2

Tanto Alice quanto Bob chegaram no mesmo valor pois (ga)b e (gb)a so iguais mod p. Note que
apenas a, b e gab = gba mod p so mantidos em segredo. Todos os demais valores p, g, ga mod p,
and gb mod p so enviados limpos no canal pblico. Uma vez que Alice e Bob calculam a chave
secreta, eles podem ento us-la como chave de encriptao, conhecida apenas por eles, para
enviar e receber mensagens ao longo do mesmo canal de comunicao. claro que valores bem
maiores de a, b, e p seriam necessrios para tornar este exemplo seguro, uma vez que fcil tentar
todos os possveis valores de gab mod 23. Existem apenas 23 possveis inteiros que possuem os
resultados observados para mod 23. Por outro lado, se p for um primo de ao menos 300 dgitos
e a e b tenham ao menos 100 dgitos, ento at os melhores algoritmos conhecidos atualmente no
poderiam encontrar a dado apenas g, p, gb mod p e ga mod p, mesmo usando todo o poder
computacional existente na humanidade. Tal problema conhecido como problema do logaritmo
discreto. Note que g no precisa ser necessariamente grande, e na prtica seus valores so
usualmente 2 ou 5.

Exemplo matemtico do esquema de Diffie-Hellman

Aqui est uma descrio mais genrica do protocolo:


1. Alice e Bob acordam em um grupo cclico finito G e um elemento gerador g em G.( Isto
usualmente feito muito antes do resto do protocolo; assume que g conhecido por todos
os atacantes.) Ns vamos escrever o grupo G de modo multiplicativo.
2. Alice escolhe um nmero natural aleatrio a e envia ga para Bob.
3. Bob tambm escolhe um nmero natural aleatrio b e envia gb para Alice.
4. Alice calcula (gb)a.
5. Bob calcula(ga)b.
Tanto Alice quanto Bob esto agora de posso de elemento de grupo gab, que pode servir como a
chave secreta compartilhada. Os valores de (gb)a e (ga)b so os mesmos porque os grupos
so associativos a potncia. (Veja tambm exponenciao.)
Com o objetivo de decriptar uma mensagem m, enviada como mgab, Bob (ou Alice) deve primeiro
calcular (gab)-1, da seguinte maneira:
Bob sabe |G|, b, e ga. Um resultado da teoria de grupos estabelece que a partir da construo de
G, x|G| = 1 para todo x em G.
Bob ento calcula (ga)|G|-b = ga(|G|-b) = ga|G|-ab = ga|G|g-ab = (g|G|)ag-ab=1ag-ab=g-ab=(gab)-1.
Quando Alice envia a Bob a mensagem encriptada, mgab, Bob aplica (gab)-1 e recupera mgab(gab)-1 =
m(1) = m.

Logaritmo discreto
Origem: Wikipdia, a enciclopdia livre.

Na matemtica, especialmente em lgebra abstrata e suas aplicaes, logaritmos


discretos so grupos anlogos a logaritmos naturais. Em particular, um logaritmo loga(b) a
soluo de uma equao ax = b sobre os reais ou complexos. De maneria anloga, se g e h so
elementos de um grupo cclico finito G ento a soluo x da equao gx = h chamada logaritmo
discreto na base g de h no grupo G.

[editar]Exemplo
Logaritmos discretos so talvez mais simples de entender no grupo (Zp). Este o conjunto
{1, , p 1} de classes de equivalncias sob a multiplicao mdulo o primo p.
Se queremos encontrar o k-simo potncia de um dos nmeros neste grupo, podemos fazer isso
encontrando k-esimas potncias como um inteiro e ento encontrando o resto da diviso por p. Este
processo chamado exponenciao discreta. Por exemplo, considere (Z17). Para calcular 34 neste
grupo, primeiro calculamos 34 = 81, e ento dividimos 81 por 17, obtendo o resto 13. Logo 3 4 = 13 no
grupo (Z17).
Logaritmo discreto apenas a operao inversa. Por exemplo, pegue a equao 3 k 13 (mod 17)
para k. Como mostrado acima k=4 uma soluo, mas no a nica. Desde que 3 16 1 (mod 17)
segue que se n um inteiro ento 34+16 n 13 1n 13 (mod 17). Assim a equao tem infinitas
solues da forma 4 + 16n. Alm disso, desde que 16 o menor inteiro positivo m que satisfaz 3m
1 (mod 17), i.e. 16 a ordem multiplicativa de 3 em (Z17), estas so as nicas solues. De maneira
equivalente, a soluo pode ser expressa da forma k 4 (mod 16).

[editar]Definio
De maneira geral, seja G um grupo cclico finito com n elementos. Assumimos que este grupo est
escrito multiplicativamente. Seja b um gerador de G; ento todo elemento g deG pode ser escrito na
forma g = bk para algum inteiro k. Alm disso, quaisquer dois
inteiros k1 and k2 representando g sero congruentes mdulo n. Podemos ento definir uma funo

(onde Zn denota o anel de inteiros mdulo n) atribuindo para cada g a classe de


congruencia de k mdulo n. Esta funo um isomorfismo de grupos, chamado logaritmo
discreto na base b.
A frmula para mudana de base para logaritmos naturais permanece vlida: Se c outro
gerador de G, ento temos

[editar]Algoritmos

Nenhum algoritmo clssico eficiente para computar logaritmo discreto de nameira geral
logb g conhecido. O algoritmo ingnuo elevar b a maiores e maiores potncias k at que
o g desejado seja encontrado. Este algoritmo requer um tempo de execuo linear no
tamanho do grupo G e logo exponencial no nmero de dgitos do tamanho do grupo. Existe
um algoritmo quntico eficiente de acordo com Peter Shor.[1]
Existem algoritmos mais sofisticados, geralmente inspirados em algortimos similares
para sfatorao de inteiros. Estes algoritmos executam mais rpido do que o algoritmo
ingnuo, mas nenhum deles roda em tempo polinomial (no nmero de dgitos do tamanho
do grupo).

Baby-step giant-step

Pollard's rho algorithm for logarithms

Pollard's kangaroo algorithm (aka Pollard's lambda algorithm)

Pohlig-Hellman algorithm

Index calculus algorithm

Number field sieve

Function field sieve

[editar]Comparao

com a fatorao de inteiros

Enquanto o problema de computar logaritmos discretos e o problema da fatorao de


inteiros sejam problemas distintos, eles compartilham algumas propriedades:

ambos problemas so difceis (no se conhece algoritmo eficiente para computadores


no-qunticos),

para ambos, algoritmos eficientes para computadores qunticos so conhecidos,

algoritmos de um problema so frequentemente adaptados para o outro, e

a dificuldade dos dois problemas vem sendo utilizada para a construao de


vrios sistemas criptogrficos.

[editar]Criptografia
Computar logaritmos discretos aparentemente difcil. No apenas no se conhece
algoritmo eficiente para os piores casos, mas a complexidade para os casos mdios
demonstradamente quase to difcil quanto o pior caso, demonstrao esta que pode ser
feita utilizando-se random self-reducibility.
Ao mesmo tempo, o problema inverso da exponenciao discreta no to difcil (pode ser
computado eficientemente utilizando exponenciao por quadrados, por exemplo). Esta

assimetria anloga aquela entre a fatorao e multiplicao de inteiros. Ambas


assimetrias tem sido exploradas na construo de sistemas criptogrficos.
Escolhas populares para o grupo G na criptografia de logaritmo discreto so os grupos
cclicos (Zp); veja a encriptao de El Gamal, a troca de chaves de Diffie-Hellman, e o
algoritmo para Assinatura digital.
As aplicaes mais recentes da criptografia usam logaritmos discretos em subgrupos
cclicos de curvas elptivas sobre campos finitos; veja Criptografia com curva elptica.