Parcours
/
Python
Python
/
Exercices
/
Diffie-Hellman
Diffie-Hellman

Diffie-Hellman

Facile

Instructions

Échange de clés Diffie-Hellman.

Alice et Bob utilisent l'échange de clés Diffie-Hellman pour partager des secrets. Ils commencent par des nombres premiers, choisissent des clés privées, génèrent et échangent des clés publiques, puis génèrent une clé secrète partagée.

Étape 0

Le programme de test fournit les nombres premiers p et g.

Étape 1

Alice choisit une clé privée, a, supérieure à 1 et inférieure à p. Bob fait de même pour choisir une clé privée b.

Étape 2

Alice calcule une clé publique A.

A = gᵃ mod p

En utilisant les mêmes p et g, Bob calcule de la même façon une clé publique B à partir de sa clé privée b.

Étape 3

Alice et Bob échangent leurs clés publiques. Alice calcule la clé secrète s.

s = Bᵃ mod p

Bob calcule

s = Aᵇ mod p

Les calculs donnent le même résultat ! Alice et Bob partagent désormais la clé secrète s.

Faut-il utiliser random ou secrets ici ?

Depuis Python 3.6, il existe deux modules différents pour produire des nombres « aléatoires » :

Le module random est pseudo-aléatoire, ce qui signifie qu'il ne génère pas de vrai hasard, mais suit un algorithme qui simule le hasard. Comme ces « nombres aléatoires » sont produits par un algorithme connu, ils ne sont pas vraiment aléatoires. Par conséquent, le module random n'est pas adapté à la cryptographie et ne doit pas être utilisé, précisément parce qu'il est pseudo-aléatoire.

Le module secrets génère des nombres « aléatoires » cryptographiquement forts qui offrent la sécurité accrue exigée par la cryptographie. Ils restent pseudo-aléatoires au sens le plus strict, mais ils garantissent que les nombres qu'ils produisent sont absolument imprévisibles.

Comme il s'agit seulement d'un exercice d'entraînement, utiliser le module random ne pose pas de problème, mais sache que ce serait très peu sûr de l'utiliser réellement pour de la cryptographie.

Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Python Exercism

Prêt à commencer Diffie-Hellman ?

Inscris-toi sur Exercism pour apprendre et maîtriser Python avec 17 concepts146 exercices, et un vrai mentorat humain, le tout gratuitement.