Diffie-Hellman

Diffie-Hellman

Εύκολο

Οδηγίες

Ανταλλαγή κλειδιών Diffie-Hellman.

Η Alice και ο Bob χρησιμοποιούν την ανταλλαγή κλειδιών Diffie-Hellman για να μοιραστούν μυστικά. Ξεκινούν με πρώτους αριθμούς, επιλέγουν ιδιωτικά κλειδιά, δημιουργούν και ανταλλάσσουν δημόσια κλειδιά και έπειτα δημιουργούν ένα κοινό μυστικό κλειδί.

Βήμα 0

Το πρόγραμμα δοκιμών παρέχει τους πρώτους αριθμούς p και g.

Βήμα 1

Η Alice επιλέγει ένα ιδιωτικό κλειδί, το a, μεγαλύτερο από το 1 και μικρότερο από το p. Ο Bob κάνει το ίδιο για να επιλέξει ένα ιδιωτικό κλειδί b.

Βήμα 2

Η Alice υπολογίζει ένα δημόσιο κλειδί A.

A = gᵃ mod p

Χρησιμοποιώντας τα ίδια p και g, ο Bob υπολογίζει με τον ίδιο τρόπο ένα δημόσιο κλειδί B από το ιδιωτικό κλειδί του b.

Βήμα 3

Η Alice και ο Bob ανταλλάσσουν δημόσια κλειδιά. Η Alice υπολογίζει το μυστικό κλειδί s.

s = Bᵃ mod p

Ο Bob υπολογίζει

s = Aᵇ mod p

Οι υπολογισμοί παράγουν το ίδιο αποτέλεσμα! Η Alice και ο Bob μοιράζονται τώρα το μυστικό s.

Να χρησιμοποιήσω random ή secrets εδώ;

Από την Python 3.6 και μετά, υπάρχουν δύο διαφορετικά modules για την παραγωγή "τυχαίων" αριθμών:

Το module random είναι ψευδοτυχαίο, που σημαίνει ότι δεν παράγει πραγματική τυχαιότητα, αλλά ακολουθεί έναν αλγόριθμο που προσομοιώνει την τυχαιότητα. Εφόσον αυτοί οι "τυχαίοι αριθμοί" παράγονται μέσω ενός γνωστού αλγορίθμου, δεν είναι πραγματικά τυχαίοι. Κατά συνέπεια, το module random δεν είναι κατάλληλο για κρυπτογραφία και δεν πρέπει να χρησιμοποιείται, ακριβώς επειδή είναι ψευδοτυχαίο.

Το module secrets παράγει κρυπτογραφικά ισχυρούς "τυχαίους" αριθμούς που παρέχουν τη μεγαλύτερη ασφάλεια που απαιτεί η κρυπτογραφία. Είναι ακόμα ψευδοτυχαίοι με την πιο αυστηρή έννοια, όμως έχουν εγγυήσεις ότι οι αριθμοί που παράγουν είναι απολύτως απρόβλεπτοι.

Εφόσον πρόκειται απλώς για μια άσκηση πρακτικής, η χρήση του module random είναι εντάξει, αλλά πρόσεξε ότι θα ήταν πολύ ανασφαλές αν χρησιμοποιούνταν πραγματικά για κρυπτογραφία.

Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Python Exercism

Έτοιμος να ξεκινήσεις την άσκηση Diffie-Hellman;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις Python με 17 έννοιες146 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.