Trilhas
/
Python
Python
/
Exercícios
/
Diffie-Hellman
Diffie-Hellman

Diffie-Hellman

Fácil

Instruções

Troca de chaves Diffie-Hellman.

Alice e Bob usam a troca de chaves Diffie-Hellman para compartilhar segredos. Eles começam com números primos, escolhem chaves privadas, geram e compartilham chaves públicas e, em seguida, geram uma chave secreta compartilhada.

Passo 0

O programa de teste fornece os números primos p e g.

Passo 1

Alice escolhe uma chave privada, a, maior que 1 e menor que p. Bob faz o mesmo para escolher uma chave privada b.

Passo 2

Alice calcula uma chave pública A.

A = gᵃ mod p

Usando os mesmos p e g, Bob calcula de forma semelhante uma chave pública B a partir de sua chave privada b.

Passo 3

Alice e Bob trocam as chaves públicas. Alice calcula a chave secreta s.

s = Bᵃ mod p

Bob calcula

s = Aᵇ mod p

Os cálculos produzem o mesmo resultado! Agora Alice e Bob compartilham o segredo s.

Devo usar random ou secrets aqui?

A partir do Python 3.6, existem dois módulos diferentes para produzir números "aleatórios":

O módulo chamado random é pseudoaleatório, ou seja, não gera aleatoriedade de verdade, mas segue um algoritmo que simula aleatoriedade. Como esses "números aleatórios" são gerados por um algoritmo conhecido, eles não são realmente aleatórios. Por isso, o módulo random não é adequado para criptografia e não deve ser usado, justamente porque é pseudoaleatório.

O módulo chamado secrets gera números "aleatórios" criptograficamente fortes, que oferecem a segurança maior exigida pela criptografia. Eles ainda são pseudoaleatórios no sentido mais estrito, mas têm garantias de que os números que produzem são absolutamente imprevisíveis.

Como este é apenas um exercício de prática, usar o módulo random não tem problema, mas note que seria muito inseguro se fosse realmente usado para criptografia.

Editar via GitHub O link abre em uma nova janela ou aba
Python Exercism

Tudo pronto para começar Diffie-Hellman?

Crie sua conta no Exercism para aprender e dominar Python com 17 conceitos146 exercícios e mentoria humana de verdade, tudo de graça.