Tracks
/
Python
Python
/
Übungen
/
Diffie-Hellman
Diffie-Hellman

Diffie-Hellman

Einfach

Anleitung

Diffie-Hellman-Schlüsselaustausch.

Alice und Bob verwenden den Diffie-Hellman-Schlüsselaustausch, um Geheimnisse auszutauschen. Sie beginnen mit Primzahlen, wählen private Schlüssel, erzeugen öffentliche Schlüssel, tauschen sie aus und erzeugen anschließend einen gemeinsamen geheimen Schlüssel.

Schritt 0

Das Testprogramm stellt die Primzahlen p und g bereit.

Schritt 1

Alice wählt einen privaten Schlüssel a, der größer als 1 und kleiner als p ist. Bob macht dasselbe, um einen privaten Schlüssel b zu wählen.

Schritt 2

Alice berechnet einen öffentlichen Schlüssel A.

A = gᵃ mod p

Mit denselben p und g berechnet Bob auf die gleiche Weise einen öffentlichen Schlüssel B aus seinem privaten Schlüssel b.

Schritt 3

Alice und Bob tauschen ihre öffentlichen Schlüssel aus. Alice berechnet den geheimen Schlüssel s.

s = Bᵃ mod p

Bob berechnet

s = Aᵇ mod p

Die Berechnungen liefern dasselbe Ergebnis! Jetzt kennen Alice und Bob beide das Geheimnis s.

Sollte ich hier random oder secrets verwenden?

Seit Python 3.6 gibt es zwei verschiedene Module, um „zufällige“ Zahlen zu erzeugen:

Das Modul random ist pseudozufällig: Es erzeugt keine echte Zufälligkeit, sondern folgt einem Algorithmus, der Zufälligkeit nur simuliert. Da diese „Zufallszahlen“ durch einen bekannten Algorithmus erzeugt werden, sind sie nicht wirklich zufällig. Deshalb eignet sich das Modul random nicht für die Kryptografie und sollte dafür nicht verwendet werden, gerade weil es pseudozufällig ist.

Das Modul secrets erzeugt kryptografisch starke „Zufallszahlen“, die die höhere Sicherheit bieten, die für Kryptografie nötig ist. Im strengsten Sinne sind sie immer noch pseudozufällig, aber sie garantieren, dass die von ihnen erzeugten Zahlen absolut unvorhersehbar sind.

Da dies nur eine Übungsaufgabe ist, ist die Verwendung des Moduls random in Ordnung, aber beachte, dass es sehr unsicher wäre, wenn man es tatsächlich für Kryptografie einsetzen würde.

Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Python Exercism

Bereit, mit Diffie-Hellman zu starten?

Melde dich bei Exercism an, um Python mit 17 Konzepte146 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.