Relatório Trabalho Redes II
Estabelecimento de Chave Secreta com
Diffie-Hellman
1. Obje vo
Este trabalho tem como obje vo implementar uma conexão segura entre cliente e servidor,
u lizando os protocolos TCP/IP, troca de chaves de Diffie-Hellman e a seguir uma comunicação
criptografada.
2. Mo vação
Além do interesse acadêmico, um contato prá co de como funciona uma comunicação segura nos
dias atuais.
O método de Diffie-Hellman é atualmente u lizado na maioria das conexões, pois a segurança, mais
especificamente a criptografia é essencial para que dados sensíveis não caia em mãos erradas.
Para criptografias que u lizam uma chave simétrica é necessário que haja uma troca segura em
meio a uma comunicação “pública”. Para tal u lizaremos o método de troca de chaves
Diffie-Hellman, na qual ao fim do processo apenas o cliente e o servidor possuem acesso a chave secreta.
Cliente Servidor
Área Pública
Estabelece conexão TCP/IP
Estabelece conexão TCP/IP
Chave secreta: a Modulo: p
Base: g Calcula: A = (g^a) mod p
A, g ,p
A, g ,p
Calcula: B = (g^b) mod p
B
B
Calcula: K = (A^b) mod p Calcula: K = (B^a) mod p
A partir de agora K é utilizado como chave de criptografia
svE7au1fóÍ,Q8úq9DéãHGXr3jàR svE7au1fóÍ,Q8úq9DéãHGXr3jàR UPeZO/hIxJlzgcáCÀL5õsvE7au1f UPeZO/hIxJlzgcáCÀL5õsvE7au1f bmlJ2RÀãovCUGta8AÓ,áXDÃULu.M bmlJ2RÀãovCUGta8AÓ,áXDÃULu.M asd18wd1w81a5sd11dw818dasd21 asd18wd1w81a5sd11dw818dasd21
alt [Mensagens criptografadas]
Cliente Servidor
4. Implementação do Programa
*Código fonte possui a implementação devidamente comentada
O programa foi desenvolvido na linguagem Python e teve como base uma divisão em etapas, das
quais são:
1. Estabelecer Conexão - U lizando a biblioteca Socket, realizar a abertura de conexão entre
Cliente/Servidor sobre os protocolos TCP/IP, onde o servidor con nuará a vo em modo
escuta.
2. Trocas de Chaves - Implementação do método de troca de chaves de Diffie-Hellman.
O cliente sorteia um número primo e um inteiro , em seguida calcula as raízes modulares
desse primo e sorteia uma delas para ser usada como base . Essas variáveis são u lizadas
para o calculo de
que é enviada ao servidor junto com e .
O servidor sorteia um numero inteiro e u liza, junto com os dados recebidos, para calcular
e retorna ao cliente
.
Assim o cliente calcula
e o servidor
onde,
matema camente,
3. Criptografia - A criptografia Cifra de César.
É definido um alfabeto e em cima dele é u lizado a chave de Diffie-Hellman para alterar letra
a letra da mensagem.
O alfabeto é u lizado como uma lista circular e a chave é u lizada como parâmetro para
subs tuir a letra deslocando-a n vezes em cima do alfabeto.
4. Comunicação com Criptografia - Comunicação entre Cliente e Servidor u lizando a
criptografia Cifra de César.
O cliente e o servidor possuem uma lista de frases que serão u lizadas na troca de
mensagens. O cliente sorteia uma frase, cifra e envia ao servidor. Ao receber a mensagem, o
servidor decifra a mensagem, sorteia uma nova frase, cifra e envia ao cliente.
p
a
g
A
= g mod p
ap g
b
B
= g mod p
bK
1(= B mod p)
aK
2(= A mod p)
bK
1 = K2
Logs de Execução
Log Cliente
######################## Criando Conexao ####################### Sou o cliente e estou inicializando a conexao com o servidor... Obtendo o endereco ip do servidor...
IP do servidor: 127.0.0.1 Criando socket...
Conectando ao servidor...
Inicializacao concluida com sucesso!
###############################################################
############### Troca de chaves com Diffie-Helman ############### O modulo da operacao eh 907
A base escolhida eh 403
O inteiro secreto do cliente sorteado foi 68478 O valor publico calculado eh 662
Enviando para o servidor:403,907,662
O valor publico recebido do servidor eh:'116' A chave eh :591
###############################################################
Usando a chave 591 para cifrar e descifrar mensagens...
Sorteando uma mensagem...
A mensagem a ser enviada(nao cifrada) eh:Neste sentido, o inicio da atividade geral de formacao de atitudes acarreta um processo de reformulacao e
modernizacao do investimento em reciclagem tecnica. Cifrando a mensagem...
Enviando a seguinte mensagem cifrada: TkyzkfyktzojudfufotoioufjgfgzoBojgjkfmkxg rfjkfluxsgigufjkfgzozAjkyfgigxxkzgfAsfvxuikyyufjkfxkluxsArgigufkfsujkxtoFgigufj ufotBkyzosktzufksfxkioirgmksfzkitoige
Recebendo mensagem do servidor...
ftufiusvxuskzosktzufktzxkfgyfkwAovkyfvujkftuyfrkBgxfgfiutyojkxgxfgfxkkyzxAzAxgig ufjuyfiutnkiosktzuyfkyzxgzkmoiuyfvgxgfgzotmoxfgfkDikrktioge'
Descriptografando com a chave errada...
A mensagem descriptografada com a chave errada eh :N.bthc cn.dl.hcdmshehbq.onmsn r.bqhshbnr.mn.bnloqnldshldmsn.dmsqd. r.dpthodr.oncd.mnr.kdu q. .bnmrhcdq q. .ddr sqtstq b n.cnr.bnmgdbhldmsnr.drsq sdfhbnr.o q . shmfhq. .dwbdkdmbh ,
Descriptografando com a chave certa...
A frase do servidor descifrada corretamente eh: O cuidado em identificar pontos criticos no comprometimento entre as equipes pode nos levar a considerar a reestruturacao dos conhecimentos estrategicos para atingir a excelencia.
Sorteando uma mensagem...
A mensagem a ser enviada(nao cifrada) eh:Neste sentido, o inicio da atividade geral de formacao de atitudes acarreta um processo de reformulacao e
modernizacao do investimento em reciclagem tecnica. Cifrando a mensagem...
Enviando a seguinte mensagem cifrada: TkyzkfyktzojudfufotoioufjgfgzoBojgjkfmkxg rfjkfluxsgigufjkfgzozAjkyfgigxxkzgfAsfvxuikyyufjkfxkluxsArgigufkfsujkxtoFgigufju fotBkyzosktzufksfxkioirgmksfzkitoige
Recebendo mensagem do servidor...
Recebeu do servidor a mensagem cifrada:'GotjgfgyyosdfkDoyzksfjABojgyfgfxkyvkozuf jkfiusufgfiutyurojgigufjgyfkyzxAzAxgyflgiorozgfgfixogigufjufotBkyzosktzufksfxki oirgmksfzkitoige'
Descriptografando com a chave errada...
A mensagem descriptografada com a chave errada eh :zhmc . rrhl9.dwhrsdl.ctuhc r. .qdrodhsn.cd.bnln. .bnmrnkhc b n.c r.drsqtstq r.e bhkhs . .bqh b n.cn.hmudrshld msn.dl.qdbhbk fdl.sdbmhb ,
Descriptografando com a chave certa...
A frase do servidor descifrada corretamente eh: Ainda assim, existem duvidas a respeito de como a consolidacao das estruturas facilita a criacao do
investimento em reciclagem tecnica.
Log Servidor
######################## Criando Conexao ####################### Sou o servidor e estou inicializando o socket de escuta...
Obtendo meu proprio IP... Meu IP eh 127.0.0.1
Criando um socket...
Reservando(bind) a porta 7001 Servidor entrou em modo escuta
Inicializacao concluida com sucesso!
###############################################################
Servidor aguardando uma nova conexao
Uma nova conexao foi feita com ('127.0.0.1', 46680)
############### Troca de chaves com Diffie-Helman ############### Sou o servidor, recebi a msg:'403,907,662'
O modulo eh:907 A base eh:403
O valor publico do cliente eh:662
O inteiro secreto do servidor sorteado foi 13947 O valor publico calculado eh 116
Sou o servidor e estou enviando:116 A chave eh 591
###############################################################
Usando a chave 591 para cifrar e descifrar mensagens...
Recebendo mensagem do cliente...
Recebido do cliente a mensagem cifrada:'TkyzkfyktzojudfufotoioufjgfgzoBojgjkfmkx grfjkfluxsgigufjkfgzozAjkyfgigxxkzgfAsfvxuikyyufjkfxkluxsArgigufkfsujkxtoFgigufj ufotBkyzosktzufksfxkioirgmksfzkitoige'
Descriptografando com a chave errada...
A mensagem descriptografada com a chave errada eh :Mdrsd.rdmshcn9.n.hmhbhn.c . shuhc cd.fdq k.cd.enql b n.cd. shstcdr. b qqds .tl.oqnbdrrn.cd.qdenqltk b n.d.ln cdqmhy b n.cn.hmudrshldmsn.dl.qdbhbk fdl.sdbmhb ,
A frase do cliente descriptografada eh: Neste sentido, o inicio da atividade geral de formacao de atitudes acarreta um processo de reformulacao e
modernizacao do investimento em reciclagem tecnica. Sorteando uma mensagem para enviar...
A mensagem a ser enviada(nao cifrada) eh:O cuidado em identificar pontos criticos no comprometimento entre as equipes pode nos levar a considerar a reestruturacao dos conhecimentos estrategicos para atingir a excelencia. Cifrando a mensagem...
Enviando a mensagem cifrada: UfiAojgjufksfojktzoloigxfvutzuyfixozoiuyftufiusvxus kzosktzufktzxkfgyfkwAovkyfvujkftuyfrkBgxfgfiutyojkxgxfgfxkkyzxAzAxgigufjuyfiutnk iosktzuyfkyzxgzkmoiuyfvgxgfgzotmoxfgfkDikrktioge
Recebendo mensagem do cliente...
Recebido do cliente a mensagem cifrada:'TkyzkfyktzojudfufotoioufjgfgzoBojgjkfmkx grfjkfluxsgigufjkfgzozAjkyfgigxxkzgfAsfvxuikyyufjkfxkluxsArgigufkfsujkxtoFgigufj ufotBkyzosktzufksfxkioirgmksfzkitoige'
Descriptografando com a chave errada...
A mensagem descriptografada com a chave errada eh :Mdrsd.rdmshcn9.n.hmhbhn.c . s huhc cd.fdq k.cd.enql b n.cd. shstcdr. b qqds .tl.oqnbdrrn.cd.qdenqltk b n.d.lnc dqmhy b n.cn.hmudrshldmsn.dl.qdbhbk fdl.sdbmhb ,
Descriptografando com a chave correta...
A frase do cliente descriptografada eh: Neste sentido, o inicio da atividade geral de formacao de atitudes acarreta um processo de reformulacao e
modernizacao do investimento em reciclagem tecnica. Sorteando uma mensagem para enviar...
A mensagem a ser enviada(nao cifrada) eh:Ainda assim, existem duvidas a respeito de como a consolidacao das estruturas facilita a criacao do investimento em reciclagem tecnica.
Cifrando a mensagem...
Enviando a mensagem cifrada: GotjgfgyyosdfkDoyzksfjABojgyfgfxkyvkozufjkfiusufgfi utyurojgigufjgyfkyzxAzAxgyflgiorozgfgfixogigufjufotBkyzosktzufksfxkioirgmksfzkit oige
Terminei de enviar mensagens cifradas Servidor aguardando uma nova conexao