Cálculo da chave secreta do protocolo Diffie-Hellmann

Publicado por Reginaldo de Matias (última atualização em 13/01/2010)

[ Hits: 5.621 ]

Homepage: http://mundodacomputacaointegral.blogspot.com/

Download protocoloDiffieHellman.c




O presente programa escrito em C, calcula a chave secreta do protocolo Diffie-Hellmann.

Explicação:

- Alice escolhe um valor para x
- Bob escolhe um valor para y
- Alice envia a mensagem para Bob: (n,g, g^x mod n)
- Bob envia a mensagem para Alice: (g^y mod n)
- Alice calcula (g^y mod n)^x mod n = g^x*y mod n
- Bob calcula (g^x mod n)^x mod n = g^x*y mod n

Assim obtém-se a chave secreta compartilhada.

  



Esconder código-fonte

/*Este pequeno programa faz o cálculo do protocolo Diffie-Hellmann
 Alice escolhe um valor para x
 Bob escolhe um valor para y
 Alice envia a mensagem para Bob: (n,g, g^x mod n)
 Bob envia a mensagem para Alice: (g^y mod n)
 Alice calcula (g^y mod n)^x mod n = g^x*y mod n
 Bob calcula (g^x mod n)^x mod n = g^x*y mod n
Assim obtém a chave secreta compartilhada

Autor: Reginaldo de Matias
Disciplina: Segurança em Redes - UDESC

Exemplo de teste - exercício
n=59 p=14 x=2 e y=5
chave secreta=46
compilar: gcc protocoloDiffieHellman -o dh -lm
executar: ./dh
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
  int n,g,x,y, gx, gy, GX,GY,mdgx,mdgy,mdgx2,mdgy2, chave_secreta;
  printf("Protocolo Diffie-Hellmann\n\n");
  printf("Digite um valor para x:");
  scanf("%i", &x);
  printf("Digite um valor para y:");
  scanf("%i", &y);
  printf("Digite um valor para n:");
  scanf("%i", &n);
  printf("Digite um valor para g: ");
  scanf("%i", &g);
  printf("(%i,%i, %i^%i mod %i)", n, g, g,x,n);
  /*inicio do cálculo do protoloco Diffie-Hellmann*/
  gx = pow(g,x); //gx = g^x
  gy = pow(g,y); //gy = g^y
  
  mdgx = gx%n; //gx = g^x mod n
  mdgy = gy%n; //gy = g^y mod n
 
  mdgx2 = pow(mdgx,y); 
  mdgy2 = pow(mdgy,x); 

  GX = mdgx2%n; //(g^x mod n)^y mod n
  GY = mdgy2%n; //(g^y mod n)^x mod n
  
  chave_secreta=GX;
  printf("GX= %i e GY=%i\n", GX, GY);
  printf("\nPortanto a chave segreta eh: %i\n", chave_secreta);

return 0;
}


Scripts recomendados

NMAP script v1.0

Criptografia rot13

Algoritmo de euclides estendido (calcula o D RSA)

Script para fazer ataque DoS - use apenas como testes com sistemas de segurança

Cifra de Vigenère


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts