Criptografia Simétrica

 

Possui apenas uma chave e essa é compartilhada entre as pessoas da conexão. Em geral não são usadas em autenticações porem, em sua maioria são usadas para confidencialidade, ou seja, usadas para transporta informações em sigilo.

O seu funcionamento é bem mais rápido do que um método assimétrico se comparado com um do mesmo nível.

Em geral a chave é única para cifrar e decifrar, podendo ter uma pequena variação, então pra efeito didático a chave é única.

  

Passos

 

1.  Depois de ambos conhecerem a chave k, acontece o seguinte;

2. Alice cifra sua mensagem M1, Y=E(M1,k);

3. Alice envia Y para Bruno;

4. Bruno decifra Y e encontra M1, M1=D(Y,k);

Mas isso só acontece porque k é conhecido pelos os dois.

 

Criptografia Assimétrica

 

É implementada com duas chaves para cada usuário, uma chave pública e uma chave privada. A chave publica é conhecida por todos na conexão, a chave privada é de conhecimento apenas do dono.

Vale salientar computacionalmente intensiva, ou seja, é lenta se comparada com um método simétrico de mesmo nível.Uma boa é que pode ser usada em autenticação e confidencialidade.

 

Passos

 

Passo 1: Cada usuário cria suas chaves tanto a publica quanto a privada.

Passo 2: Alice envia a sua chave publica para Bruno;  

 

Imagem

Passo 3: Bruno Criptografa a Mensagem com a chave publica de Alice, ela recebe a mensagem cifrada e decifra com sua chave privada.

Imagem

 
 

Definições de Teoria dos Números

 

1. Sejam a, b e m inteiros com p>0, dizemos que a é congruente a b modulo m se m divide (a-b), ou seja, m|(a - b), e nesse caso denotamos por a≡ b(mod m).

2. O menor numero natural k tal que ak≡ 1(mod m) onde mdc(a,m)=1, é chamado "ordem de a modulo m" e denotado por ordma, ou seja, k=ordma.

3. Se ordma=Φ(m) dizemos que a é uma raiz primitiva modulo m. De modo que Φ(m) é igual a quantidade de números menores que m onde o mdc de cada numero com m é igual a 1 (mdc(m,n)=1, com n<m></m>).

 

Exemplos

 

a) 4 ≡ 7(mod3);

b) 2 ≡ -1(mod3);

c) 4+2 ≡ 7+(-1)(mod3);

d) 4*2 ≡7*(-1)(mod3)

e) 2n ≡ (-1)n(mod3);

f) Φ(5)=4;

g) 24 ≡ 1(mod 5), portanto 2 é uma raiz primitiva modulo 5.

 

Protocolo de Diffie-Hellman

 

1. É usada para intercambio de chaves entre usuários;

2. É baseado na operação de logaritmos discretos;

3. Logaritmo discreto é baseado na raiz primitiva;

4. Requer autoridade de certificação (chave pública confiável).

 

Passos

 

1. Dados p primo e a uma raiz primitiva modulo p, ambos conhecidos pelos entes da conexão, nesse caso será Alice e Bruno;

2. Bruno e Alice geram números aleatórios Xa e Xb, respectivamente, sendo que Xa e Xb são menores que p, esses números gerados são as chaves privadas se comparado com um método assimétrico;

3. Bruno e Alice calculam as senhas públicas Ya≡ aXa(mod p), Yb≡ aXb(mod p) respectivamente; 

4. Alice e Bruno trocam as senhas (números) publicas;

5. Bruno calcula K≡ YbXa(mod p)

                          K≡ aXbXa(mod p)


    Alice calcula K≡ YaXb(mod p)

                        K≡ aXaXb(mod p)

 

6. E assim eles possuem a mesma chave secreta K, vale ainda salientar que isso acontece para K sendo o menor numero inteiro positivo possível, ou seja, 0<k></k>

, e isso sempre é possível de acontecer, pois o teorema de Euclides garante que existe K e para 0<k></k>

ele é único.

 

Exemplo do Protocolo de Diffie-Helman

 

Passo 1: Alice e Bruno concordam com p e a gerados com um PRNG (Pseudo-Random Number Generator).

Suponha p=97 então uma raiz primitiva modulo 97 será a=5. Pois 596≡1 (mod 97).

Paaso 2: Alice e Bruno geram seus números secretos Xa e Xb respectivamente.

Suponha agora que Bruno e Alice geram aleatoriamente com um PRNG Xa=36 e Xb=58 respectivamente.

Passo 3: Alice e Bruno calculam os números públicos Ya e Yb respectivamente.

Bruno calcula Ya≡ aXa(mod p)

                     Ya≡ 536(mod 97) com 536 = 14551915228366851806640625

                     Ya=50, isso acontece pelo fato de que o algoritmo sempre usa o menor Ya positivo, ou seja o resto da divisão de 536 por 97 de modo que 0<y>a<97.

 

Alice calcula Yb≡ aXb(mod p)

                    Yb≡ 558(mod 97) com 558 = 3.4694469519536141888238489627838x1040

                    Yb= 44.

Passo 4: Bruno envia Yb para Alice e Alice envia Ya para Bruno.

Passo 5: Bruno e Alice calculam sua chave simétrica Ka e Kb, onde  Ka= Kb. E chamarei Ka e Kb apenas de K.

Bruno calcula  Ka≡ YbXa(mod p)

                      Ka≡ 4450(mod 97)

com 4450 = 1.4881058511424953988078608769806x1082

                      Ka= 75

 

Alice calcula Kb≡ YaXb(mod p)

                    Kb≡ 5044(mod 97) com 5044 = 5.684341886080801486968994140625x1074

                    Kb= 75.

Como mencionado acima Ka=Kb=K=75. Logo a chave simétrica deles será K=75.

 

Algumas Considerações

 

1. Dado Xa é relativamente fácil calcular;

2. Dado Ya é computacionalmente dificil calcular Xa. Esse é o problema do logaritmo discreto.

Pois teremos p|(Ya-aXa ) e daí exite c inteiro tal que Ya = cp + aXa ou aXa = Ya -cp.

Aplicando o logaritmo na base a (loga) dos dois lados teremos:

loga (aXa) = loga (Ya - cp)

Xa = loga (Ya - cp), onde é computacionalmente difícil encontrar Xa com p suficientemente grande.

 

  

Bibliografia

 

SAMPAIO, J. Edson. Introdução a Criptografia e seu uso no PHP. //www.devmedia.com.br/articles/viewcomp.asp?comp=10045, acessado em 20/10/2008.

 

D´AVILA, Marcio. Criptografia de Chave Publica. www.mhavila.com.br/aulas/seguranca/material/segredes04.pdf, acessado em 20/10/2008.

 

CAMAPUM, J. F.. criptografia de chave pública.

 http://www.ene.unb.br/~juliana/cursos/teoriainf/aula3-crip-chavepub.pdf, acessado em 20/10/2008.

Viktoria Tkotz, Criptografia - Segredos Embalados para Viagem. Novatec Editora.