Σύνταξη άρθρου: Ευθύμης Κυρίκος
Επιμέλεια άρθρου: Κωνσταντίνος Ουρανός
Αρχαίο σύστημα κρυπτογράδησης (αντίγραφο), μουσείο Ηρακλειδών
 Ο αλγόριθμος δημοσίου κλειδιού
Σκεφτείτε μια στιγμή πως θα θέλατε να πείτε σε κάποιον φίλο σας ένα μυστικό. Στον πραγματικό κόσμο κάτι τέτοιο θα ήταν ιδιαίτερα απλό καθώς θα μπορούσατε είτε να συναντηθείτε ιδιαιτέρως και να μιλήσετε είτε να του το ψιθυρίσετε χωρίς να το ακούσει κανείς άλλος. Τι θα συμβεί ωστόσο, αν δεν μπορείτε να βρεθείτε στον ίδιο χώρο;

Πριν την εξέλιξη της τεχνολογίας και του διαδικτύου, ένας από τους συνηθέστερους τρόπους επικοινωνίας σε όλον τον πλανήτη ήταν το ταχυδρομείο. Οι άνθρωποι αντάλλασσαν μεταξύ τους πληροφορίες, φωτογραφίες, και αντικείμενα μέσω των ταχυδρομικών υπηρεσιών, οι οποίες ήταν, ως επί το πλείστον, δημόσιες. Η εξασφάλιση του απορρήτου της πληροφορίας μπορούσε να επιτευχθεί με το κλείσιμο των πληροφοριών αυτών μέσα σε έναν σφραγισμένο φάκελο. Φυσικά ούτε αυτό το μέτρο ήταν ικανό να εξασφαλίσει πλήρως το απόρρητο καθώς, αν κάποιος είχε πρόσβαση στις ταχυδρομικές υπηρεσίες και ήθελε να λάβει γνώση του περιεχομένου, μπορούσε απλώς να ανοίξει τον φάκελο και να τον διαβάσει.

Σήμερα οι ηλεκτρονικοί υπολογιστές αντιμετωπίζουν ένα αντίστοιχο πρόβλημα. Η πληροφορία, που αποστέλλεται μέσω διαδικτύου, περνά από αρκετούς κόμβους, ίσως και δεκάδες, μέχρι να καταλήξει στον παραλήπτη. Οι κόμβοι αυτοί, που στην ουσία είναι υπολογιστές ειδικού σκοπού, έχουν ένα σοβαρό μειονέκτημα: οποιοσδήποτε έχει πρόσβαση (και είναι πολλοί!), θα μπορούσε να δει το περιεχόμενο οποιουδήποτε μηνύματος δρομολογείται διαμέσου αυτών. Εν ολίγοις καταστρατηγείται το απόρρητο των επικοινωνιών. Η λύση όμως στο πρόβλημα αυτό υπάρχει και δίνεται μέσω ενός «κοινού μυστικού».  Ας το δούμε.

Κρυπτογράφηση με χρήση ενός μυστικού κώδικα

Για την κατανόηση της διαδικασίας δίνεται το παρακάτω παράδειγμα:

Στον πραγματικό κόσμο, δύο άνθρωποι σε δημόσιο χώρο προσπαθούν να ανταλλάξουν μυστικές πληροφορίες ενώ παράλληλα παρευρίσκονται και τους παρακολουθούν και άλλοι. Φανταστείτε λ.χ. πως είστε εσείς με έναν φίλο σας σε κοινή παρέα και θέλετε να του πείτε κάτι χωρίς να το καταλάβουν οι παρευρισκόμενοι. Συνήθως θα μεταφέρετε το μήνυμα με έμμεσο τρόπο αναφέροντας πληροφορίες που μόνο εσείς και ο φίλος σας γνωρίζετε. Για παράδειγμα, αν θέλετε να δώσετε στον φίλο σας τον μυστικό κωδικό του συναγερμού του σπιτιού σας, ο οποίος είναι ο αριθμός 127. Θα μπορούσατε να του μεταφέρετε το μήνυμα ως εξής: «Ο κωδικός είναι ο αριθμός που προκύπτει, αν προσθέσεις το 100 με τον αριθμό των μαθητών της τάξης μας στη Γ’ Λυκείου». Εκείνη τη στιγμή είπατε στον φίλο σας πως θα πρέπει να προσθέσει τον αριθμό 100 με έναν αριθμό γνωστό σε εσάς και σε αυτόν αλλά άγνωστο για τους υπολοίπους. Συγχαρητήρια λοιπόν, μόλις επικοινωνήσατε μέσω ενός κρυπτογραφικού αλγορίθμου!

Η μέθοδος αυτή είναι μεν αρκετά αποδοτική, αλλά έχει ένα εγγενές πρόβλημα. Πρέπει τα δύο άτομα που επικοινωνούν να γνωρίζονται και να έχουν μοιραστεί ένα κοινό κομμάτι γνώσης μεταξύ τους, συνήθως από την προσωπική τους ζωή, ώστε να υπάρχουν κοινά μυστικά που μπορούν να χρησιμοποιήσουν. Τι γίνεται στην περίπτωση όμως που οι άνθρωποι είναι άγνωστοι μεταξύ τους και δεν μπορούν να μοιράζονται κοινά μυστικά;

Δημιουργία «δημοσίου μυστικού»

Το πρόβλημα της κρυπτογράφησης, όπως είδαμε πιο πάνω, ανάγεται τελικώς σε ένα πρόβλημα δημιουργίας ενός κοινού μυστικού μεταξύ δύο ανθρώπων σε δημόσιο χώρο. Το πρόβλημα αυτό δεν είναι εύκολο να επιλυθεί, καθώς σε περίπτωση που η μέθοδος δημιουργίας αυτού του κλειδιού είναι αντιστρέψιμη, μπορεί τελικά ο οποιοσδήποτε έχει τη δημόσια πληροφορία να αποκτήσει πρόσβαση στο πραγματικό μυστικό. Φυσικά η επιστήμη των υπολογιστών και τα μαθηματικά έχουν δώσει λύση στο πρόβλημα μέσω των αλγορίθμων κρυπτογράφησης. Ένα από τα πρώτα πρωτόκολλα δημιουργίας τέτοιων δημοσίων-ιδιωτικών κλειδιών είναι το πρωτόκολλο Diffie-Hellman.

Το πρωτόκολλο Diffie-Hellman

Όπως αναφέρθηκε παραπάνω, η διαδικασία παραγωγής των δημοσίων κλειδιών πρέπει να είναι μη αντιστρέψιμη διαφορετικά όποιος έχει πρόσβαση σε αυτήν θα δύναται να αναπαράγει το ιδιωτικό μυστικό από το οποίο κατασκευάστηκε. Στους υπολογιστές, αυτό επιτυγχάνεται με τη μέθοδο της ύψωσης σε δύναμη. Ο λόγος που χρησιμοποιείται αυτή η τεχνική είναι γιατί η αντίστροφη διαδικασία, το να πάρουμε δηλαδή τον αρχικό αριθμό από τον τελικό αριθμό που υπολογίζεται ως δύναμη και ονομάζεται λογάριθμος, δεν είναι αποδοτική με τους σημερινούς αλγορίθμους υπολογιστών καθώς μάλιστα το πρωτόκολλο αυτό χρησιμοποιεί και τις ιδιότητες μεγάλων πρώτων αριθμών. Έτσι, μπορούμε να θεωρήσουμε την ύψωση σε δύναμη ως μονόδρομη πράξη.

Η διαδικασία με την οποία λειτουργεί το συγκεκριμένο πρωτόκολλο θα γίνει πιο κατανοητή μέσω ενός παραδείγματος, το οποίο είναι το ακόλουθο:

Έστω ότι δύο φίλοι θέλουν να επικοινωνήσουν μυστικά σε δημόσιο χώρο μπροστά σε άλλους. Αρχικά επιλέγει ο καθένας έναν μυστικό αριθμό. Για τις ανάγκες του παραδείγματός μας αυτοί οι αριθμοί θα είναι μικροί, ώστε να βολεύουν οι πράξεις. Στην πραγματικότητα τα νούμερα είναι πολύ μεγάλα για λόγους ασφαλείας. Ο πρώτος λοιπόν επιλέγει τον αριθμό 5 και ο δεύτερος τον αριθμό 9.

Επιλέγεται ένα ζευγάρι αριθμών ως δημόσια κλειδιά γνωστά σε όλους. Για το παράδειγμά μας θα επιλέξουμε ως βάση τον αριθμό 3 και ως διαιρέτη το 13.

Στη συνέχεια το δημόσιο κλειδί μοιράζεται σε όλους. Ο καθένας κατασκευάζει ένα κλειδί που είναι μείξη του ιδιωτικού και του δημοσίου κλειδιού.

Ο πρώτος φίλος που έχει ως ιδιωτικό κλειδί το 5 κατασκευάζει τον αριθμό 35 mod 13 = 9 , ενώ ο δεύτερος τον αριθμό  3mod 13 = 18 = 1 . Το σύμβολο mod εκφράζει το υπόλοιπο της διαίρεσης δύο αριθμών.

Τώρα ανταλλάσσοντας κλειδιά μεταξύ τους οι δύο φίλοι, ο ένας παίρνει τον αριθμό 1 και ο άλλος τον αριθμό 9. Στη συνέχεια χρησιμοποιώντας αυτά τα κλειδιά και υψώνοντάς τα σε μια δύναμη με εκθέτη τον ιδιωτικό τους αριθμό, κατασκευάζουν το κοινό κλειδί. Δηλαδή:

Για τον πρώτο φίλο 1mod 13 = 1 ενώ για τον δεύτερο 9mod = 1. Φυσικά στο τέλος φαίνεται πως οι δύο φίλοι έχουν κοινό κλειδί. Με αυτόν τον τρόπο όποιος άλλος και να έχει το δημόσιο κλειδί δεν μπορεί να ανακατασκευάσει το κοινό κλειδί των δύο.

Ο αλγόριθμος Diffie- Hellman παρουσιάστηκε πρώτη φορά το 1976. Ως και σήμερα θεωρείται ασφαλής μέθοδος κρυπτογράφησης. Η αξιοπιστία του όμως εξαρτάται από την επιλογή των δημοσίων αριθμών κλειδιών που θα χρησιμοποιηθούν για την παραγωγή του κοινού δημοσίου κλειδιού. Μικροί αριθμοί οδηγούν σε παραγωγή κοινών κλειδιών που είναι εύκολο να βρεθούν με επαναληπτικές μεθόδους (μέθοδος brute force).

Η παραπάνω μέθοδος δημιουργίας ενός κοινού μυστικού δεν είναι η μοναδική. Υπάρχουν πολλές και διαφορετικές μέθοδοι, οι οποίες μοιράζονται ορισμένα κοινά χαρακτηριστικά, όπως το γεγονός ότι είναι μονόδρομες πράξεις και βασίζονται σε πολύ μεγάλους πρώτους αριθμούς. Επιπλέον, ένα κύριο χαρακτηριστικό των συγκεκριμένων αλγορίθμων είναι πως το ιδιωτικό κλειδί καθενός από τους υπολογιστές, που επικοινωνούν, δεν κοινοποιείται στο διαδίκτυο αλλά παραμένει κρυφό και «κρύβεται» μέσα στο δημόσιο μυστικό που τελικά κοινοποιείται. Αυτή η κατηγορία κρυπτογράφησης ονομάζεται ασύμμετρη κρυπτογράφηση καθώς καθένας επικοινωνεί με τα δικά του ιδιωτικά κλειδιά.

Τέτοιοι αλγόριθμοι κρυπτογράφησης είναι ο αλγόριθμος Diffie-Hellman που περιγράφηκε παραπάνω, ο RSA, ο Εl-Gamal, ο DSA και ο αλγόριθμος ελλειπτικής τροχιάς.

Συμμετρική κρυπτογράφηση

Μια διαφορετική προσέγγιση κρυπτογράφησης είναι η συμμετρική κρυπτογράφηση. Οι αλγόριθμοι αυτοί κατασκευάζουν ένα και μοναδικό κλειδί, το οποίο είναι κοινό τόσο σε όλους όσους επικοινωνούν για την κρυπτογράφηση όσο και για την αποκρυπτογράφηση της πληροφορίας. Βασικό πλεονέκτημα της συμμετρικής κρυπτογράφησης είναι η ταχύτητα με την οποία επεξεργάζονται τα δεδομένα καθώς δεν απαιτείται συνεχώς ο επανυπολογισμός των κλειδιών για κρυπτογράφηση και αποκρυπτογράφηση. Για αυτόν τον λόγο η συμμετρική κρυπτογράφηση προτιμάται σε εφαρμογές που απαιτούν μεγαλύτερες ταχύτητες μεταφοράς δεδομένων, όπως το WiFi ή η κρυπτογράφηση αρχείων σε σκληρούς δίσκους και USB sticks.

Υπάρχουν αρκετά πρότυπα συμμετρικής κρυπτογράφησης. Ήδη από τη δεκαετία του 1970 η εταιρεία ΙΒΜ είχε δημιουργήσει το πρότυπο DES, ένα πρότυπο κρυπτογράφησης συμμετρικού κλειδιού για λογαριασμό του αμερικανικού στρατού. Σήμερα αυτός ο αλγόριθμος δεν είναι πλέον ασφαλής καθώς η αύξηση της υπολογιστικής ισχύος και το μικρό μήκος κλειδιού του προτύπου καθιστούν εύκολη την παραβίαση του κλειδιού. Υπάρχουν παραλλαγές του αλγορίθμου, όπως η 3DES, οι οποίες είναι θεωρητικά περισσότερο ασφαλείς απέναντι σε επιθέσεις. Ωστόσο το πρότυπο αυτό θεωρείται πλέον ξεπερασμένο στο σύνολό του.

Το πιο διαδεδομένο πρότυπο συμμετρικής κρυπτογράφησης είναι το πρότυπο AES (Advanced – Encryption – Standard). Το συγκεκριμένο πρότυπο έχει τρεις διαφορετικές υλοποιήσεις (AES-128, AES-192, AES-256). Ο αριθμός που εμφανίζεται δίπλα στο όνομα του αλγορίθμου ορίζει το μέγεθος του κλειδιού που χρησιμοποιείται για την κρυπτογράφηση. Όσο μεγαλύτερο το κλειδί τόσο πιο ασφαλή είναι τα δεδομένα αλλά χρειάζεται και περισσότερος χρόνος και υπολογιστική ισχύς για την κρυπτογράφηση και αποκρυπτογράφηση των δεδομένων. Ο αλγόριθμος AES παίρνει την αρχική ψηφιακή πληροφορία και, μέσω ενός πίνακα μετασχηματισμού και πολλών σειρών πράξεων, τη μετασχηματίζει μέσω ενός κλειδιού σε μια διαφορετική πληροφορία, την κρυπτογραφημένη. Θα μπορούσε κανείς να φανταστεί πως ο αλγόριθμος κρυπτογράφησης παίρνει την πληροφορία και τη βάζει σε έναν «αναδευτήρα» από τον οποίο παίρνει ένα μη αναγνώσιμο αποτέλεσμα. Ο τελικός αποδέκτης, που γνωρίζει και το κλειδί, εκτελεί τις αντίστροφες πράξεις και βρίσκει την αρχική πληροφορία. Ο συγκεκριμένος αλγόριθμος κρυπτογράφησης θεωρείται πολύ ασφαλής σήμερα. Ακόμα και στην παραλλαγή AES-128 που έχει και το μικρότερο κλειδί χρειάζονται περίπου 2 εκατομμύρια χρόνια υπολογισμών για να μπορέσει να «σπάσει» το κλειδί με τη σημερινή τεχνολογία.

Εφαρμογές κρυπτογράφησης στο διαδίκτυο 

Σήμερα φυσικά η κρυπτογραφία παίζει πολύ σημαντικό ρόλο στην εξασφάλιση του απορρήτου της πληροφορίας και της ανωνυμίας στο διαδίκτυο. Μερικές από τις κυριότερες εφαρμογές είναι:

  • Ασφαλείς σελίδες. Πολλές φορές, όταν επισκεπτόμαστε μια ιστοσελίδα, εμφανίζεται μπροστά από το όνομα της σελίδας το πρόθεμα https αντί για http. Οι συγκεκριμένες σελίδες χρησιμοποιούν πρωτόκολλο κρυπτογράφησης για τη μεταφορά των δεδομένων. Πρακτικά, αν μια σελίδα χρησιμοποιεί το https εξασφαλίζεται πως τα προσωπικά δεδομένα του χρήστη τα οποία εισάγει στη σελίδα δεν μπορούν να κλαπούν. Συνήθως τέτοιες σελίδες είναι αυτές των τραπεζών, των δημοσίων οργανισμών, των νοσοκομείων και των πανεπιστημίων.
  • Ψηφιακές Υπογραφές. Τα τελευταία χρόνια υπάρχει πολύ μεγάλη αύξηση των ηλεκτρονικών εγγράφων και σταδιακή κατάργηση των χειρόγραφων ή εκτυπωμένων. Ωστόσο, ένα απλό ψηφιακό έγγραφο πολλές φορές δεν είναι δυνατόν να πιστοποιήσει τη γνησιότητά του. Έτσι, δημιουργήθηκε η ανάγκη για ψηφιακές υπογραφές, οι οποίες αντικαθιστούν τις πραγματικές υπογραφές. Μια ψηφιακή υπογραφή είναι στην ουσία ένα κρυπτογραφημένο πιστοποιητικό σε ηλεκτρονική μορφή, το οποίο δίνει κάποιος φορέας σε έναν ιδιώτη ή εταιρεία. Με αυτό το κρυπτογραφημένο πιστοποιητικό ο ιδιώτης ή η εταιρεία «υπογράφει» όλα τα έγγραφα που αποστέλλει καθώς και οι παραλήπτες.
  • Τεχνολογία Blockchain. Η συγκεκριμένη τεχνολογία βασίζεται στη δημιουργία συνδεδεμένων λιστών δεδομένων που χρησιμοποιούνται για την ανταλλαγή πληροφοριών και τις ηλεκτρονικές συναλλαγές. Οι λίστες αυτές αποτελούνται από πακέτα δεδομένων συνδεδεμένα μεταξύ τους. Κάθε πακέτο έχει έναν μοναδικό αριθμό που «υποδεικνύει» τον επόμενο. Η διαδικασία υπολογισμού τόσο των πακέτων όσο και των κλειδιών που περιέχουν για τη διασύνδεσή τους υπολογίζονται μέσω αλγορίθμων κρυπτογράφησης (συναρτήσεις Hash). Η τεχνολογία των blockchains έχει ως πιο διαδεδομένη εφαρμογή τα κρυπτονομίσματα σήμερα. Ωστόσο σιγά-σιγά άρχισε να υιοθετείται και για άλλες εφαρμογές λόγω του ότι εγγυάται σε πολύ μεγάλο βαθμό πως τα δεδομένα των συναλλαγών θα παραμένουν αναλλοίωτα. Τέτοιες εφαρμογές είναι ψηφιακά συμβόλαια, ανταλλαγές εγγράφων και πληροφοριών καθώς και δεδομένα διατραπεζικών συναλλαγών.

Επίλογος

Η προσπάθεια απόκρυψης πληροφοριών υπήρξε ανέκαθεν ένα πολύ σημαντικό μέλημα των ανθρώπινων κοινωνιών είτε για λόγους ιδιωτικότητας, είτε για λόγους ασφαλείας. Με την έλευση των υπολογιστών και την ψηφιοποίηση ενός μεγάλου μέρους της πληροφορίας, η ανάγκη για δημιουργία μηχανισμών απόκρυψης των δεδομένων έγινε πιο επιτακτική από ποτέ. Οι σύγχρονοι αλγόριθμοι, που έχουν στο μεταξύ αναπτυχθεί, βασίζονται σε αποδεδειγμένες μαθηματικές θεωρίες και είναι πρακτικά αδύνατον να παραβιαστούν με τα υπάρχοντα υπολογιστικά συστήματα επί του παρόντος. Το διαδίκτυο, όπως το γνωρίζουμε σήμερα, διαθέτει ένα επαρκέστατο επίπεδο ασφαλείας χάρις σε όλες αυτές τις τεχνολογίες κρυπτογράφησης.

Στο μέλλον ωστόσο το αίσθημα ασφαλείας είναι πιθανό να παύσει καθώς γίνεται μεγάλη έρευνα σε σύγχρονα υπολογιστικά συστήματα, τους κβαντικούς υπολογιστές. Τα συγκεκριμένα υπολογιστικά συστήματα λόγω της διαφορετικής αρχιτεκτονικής τους είναι ικανά να εκτελούν διαφορετικά τους αλγορίθμους με αποτέλεσμα να είναι εφικτό το γρήγορο «σπάσιμο» των σημερινών αλγορίθμων κρυπτογράφησης. Ως τότε όμως, απέχουμε ακόμα.

 

Πηγές

MacCormick John, 2016. Εννέα αλγόριθμοι που άλλαξαν το μέλλον. Πανεπιστημιακές Εκδόσεις Κρήτης. ISBN: 9789605244446

Ζάχος Ε., Παγουρτζής Α., Γροντάς Π. 2015. Υπολογιστική Κρυπτογραφία. Κάλλιπος. ISBN: 978-960-603-276-9

Tiana Laurence, 2017. Blockchain For Dummies. John Wiley & Sons. ISBN-13: 978-1119365594

 

Ηλ.Ταχ.: [email protected]

Ευθύμης Κυρίκος

Ηλεκτρολόγος Μηχανικός Ειδικός Αυτοματισμού και Ρομποτικής