Με την άνοδο στη χρήση του διαδικτύου, μεταφέραμε σε αυτό ένα τεράστιο μέρος της επικοινωνίας μας. Καθώς το διαδίκτυο ως μέσο επικοινωνίας βασίζεται σε εκατομμύρια υπολογιστές που διαχειρίζονται τη μεταφορά των τμημάτων πληροφοριών που ανταλλάσσουμε, στην πορεία αυτή αφήνουμε ίχνη της επικοινωνίας και του εαυτού μας.
Οι πληροφορίες από μία ανταλλαγή μπορεί να μην παρέχουν πολλές πληροφορίες σε τρίτους, όμως επειδή χρησιμοποιούμε τόσο πολύ το διαδίκτυο, η τεράστια ποσότητα πληροφοριών που μένει πίσω σας, όσο κατακερματισμένη και αν είναι, μπορεί και τελικά θα συνδυαστεί ώστε να ταυτοποιηθείτε. Μέσα από την αποκάλυψη δεδομένων μπορεί επίσης να διαρρεύσουν οι προσωπικές σας πληροφορίες στο διαδίκτυο.
Είναι σημαντικό να διατηρείτε ιδιωτική την επικοινωνία σας προκειμένου να περιορίζετε τις πληροφορίες που αφήνετε πίσω σας. Όταν προφυλάσσετε την επικοινωνία σας, ουσιαστικά κρύβετε τις πληροφορίες από πηγές που είναι δημόσια διαθέσιμες. Οι περισσότεροι τρόποι για να διατηρείτε ιδιωτική την επικοινωνία σας βασίζονται στην κρυπτογράφηση. Ουσιαστικά, η κρυπτογράφηση κρύβει την επικοινωνία σας από όλους τους άλλους υπολογιστές μέσα από τους οποίους ταξιδεύουν οι πληροφορίες. Ο αλγόριθμος κρυπτογράφησης είναι αυτός που προσδιορίζει πόσο ασφαλής είναι η κρυπτογράφηση, όμως επειδή τα δεδομένα τα διαχειρίζονται μη ασφαλείς υπολογιστές (θυμηθείτε, ο καθένας μπορεί να εγκαταστήσει έναν κόμβο στο διαδίκτυο), ο τρόπος που ανταλλάσσονται τα κλειδιά κρυπτογράφησης μπορεί επίσης να είναι το αδύναμο σημείο.
Μια σύντομη εισαγωγή στην cryptography (κρυπτογραφία)
Δεν χρειάζεται να κατανοείτε όλες τις λεπτομέρειες της κρυπτογράφησης, δείτε όμως κάποιες πολύ βασικές πληροφορίες σχετικά με τις απλές μεθόδους κρυπτογράφησης. Οι περισσότεροι βρίσκουν ενδιαφέρουσες αυτές τις πληροφορίες. Άλλωστε, η κρυπτογραφία χρησιμοποιείται εδώ και χιλιάδες χρόνια με διάφορες μορφές. Οι πρώτοι χρήστες της κρυπτογράφησης που γνωρίζουμε μάλλον ήταν οι Αιγύπτιοι, αν και απλές αντικαταστάσεις περιεχομένου μηνυμάτων για την απόκρυψη του αρχικού μηνύματος ενδεχομένως να χρησιμοποιούνταν ακόμα και από πιο παλιά.
Θυμηθείτε το πρώτο κεφάλαιο στο οποίο μάθατε σχετικά με το τρίπτυχο CIA. Η κρυπτογραφία είναι ένας κοινός τρόπος για να διασφαλίσουμε ότι ο χειρισμός της πλευράς της Εμπιστευτικότητας, ή Confidentiality, του τρίπτυχου γίνεται σωστά.
Ο κώδικας του Καίσαρα
Οι Ρωμαίοι χρησιμοποιούσαν αρκετά συχνά την κρυπτογραφία. Ήταν γνωστό ότι ο Ιούλιος Καίσαρας χρησιμοποιούσε κάποια μορφή κώδικα αντικατάστασης, η οποία σήμερα είναι γνωστή ως κώδικας του Καίσαρα. Ο κώδικας είναι ένας όρος που περιγράφει έναν αλγόριθμο που χρησιμοποιείται για την κρυπτογράφηση και αποκρυπτογράφηση δεδομένων. Ο κώδικας αντικατάστασης είναι ένας κώδικας όπου ένας χαρακτήρας αντικαθίσταται από έναν άλλον που προσδιορίζεται με κάποιον τρόπο. Για παράδειγμα, ο Καίσαρας χρησιμοποιούσε έναν κώδικα όπου το κάθε γράμμα ήταν γραμμένο με τέτοιο τρόπο που αντικαθιστούσε τον χαρακτήρα με τον τρίτο από αυτόν σε αλφαβητική σειρά, π.χ. το Α γινόταν Δ, το Β γινόταν Ε κ.ο.κ.
Όπως μπορείτε να δείτε στην εικόνα, το κλειδί για αυτή την «κρυπτογράφηση» είναι «κινηθείτε τρία βήματα προς τα εμπρός στο αλφάβητο». Ενδέχεται να μπορείτε να συμπεράνετε αυτά τα είδη κώδικα ανάλογα με το πόσο μυστικό μπορείτε να διατηρήσετε το σύστημα αντί για το κλειδί. Στο παράδειγμα του κώδικα του Καίσαρα, το κλειδί θα μπορούσε να είναι οτιδήποτε και θα μπορούσατε να το μαντέψετε αρκετά εύκολα απλώς δοκιμάζοντας όλους τους συνδυασμούς (brute forcing) ή χρησιμοποιώντας τη συχνότητα των γραμμάτων μιας γλώσσας. Για παράδειγμα, αν το γράμμα P είναι το γράμμα που χρησιμοποιείται πιο συχνά στο κρυπτογραφημένο μήνυμα και η γλώσσα γνωρίζουμε ότι είναι η αγγλική, είναι λογικό να υποθέσουμε ότι το P στο μυστικό μήνυμα είναι το E στο μήνυμα απλού κειμένου, καθώς το E είναι το πιο κοινό γράμμα στην αγγλική γλώσσα. Διαφορετικές εκδοχές κωδίκων αντικατάστασης χρησιμοποιούνταν για τουλάχιστον χίλια χρόνια μέχρι τα μαθηματικά να προσφέρουν καλύτερους τρόπους κρυπτογράφησης.
Ένας ακόμα γνωστός κώδικας αντικατάστασης που αναφέρεται συχνά είναι ο ονομαζόμενος «κώδικας Kamasutra». Ο κώδικας αναφέρεται αρχικά στο Kamasutra ως η τέχνη της απόκρυψης μηνυμάτων, ειδικά από γυναίκες. Ο κώδικας Kamasutra πρότεινε το αλφάβητο να χωρίζεται στα δύο και να ενώνεται σε ζεύγη. Το ζεύγος του γράμματος θα ήταν η αντικατάσταση στον κώδικα και όχι η απλή μετατόπιση συγκεκριμένου μήκους.
Να σημειώσουμε ότι η κρυπτογράφηση δεν χρειάζεται να είναι τέλεια. Σε συγκρούσεις όπως σε πολεμικές συρράξεις, διασφαλίζοντας απλώς ότι το μήνυμα δεν θα διαβαστεί μέσα σε μερικά λεπτά ή μερικές ώρες μπορεί να είναι εξαιρετικά σημαντικό. Όμως, σε περιπτώσεις όπου τα κρυπτογραφημένα δεδομένα είναι εμπιστευτικά και μπορούν να προκαλέσουν ζημιά και αργότερα, θα πρέπει να φροντίσετε ώστε η μέθοδος που χρησιμοποιείτε να μην είναι εύκολα διαβλητή.
Κώδικας Vigenère
Κατά τον 16ο αιώνα, αναπτύχθηκε ένας καινούριος και καλύτερος τρόπος κρυπτογράφησης που προσέφερε προστασία από τις επιθέσεις συχνότητας. Ο κώδικας Vigenère χρησιμοποιεί ένα επαναλαμβανόμενο κλειδί, νικώντας έτσι την απλή χρήση της ανάλυσης συχνότητας καθώς το γράμμα P δεν ταιριάζει πλέον με το γράμμα E στα περισσότερα από τα κρυπτογραφημένα κείμενα.
Ο κώδικας Vigenère χρησιμοποιεί ένα μεταβλητό κλειδί που κάνει τον απλό κώδικα αντικατάστασης πιο ανθεκτικό. Το κλειδί επαναλαμβάνεται ώστε να καλύψει το πλήρες μήκος του μηνύματος. Το μήκος του κλειδιού είναι το πιο σημαντικό μέρος του κώδικα Vigenère καθώς με μήκος κλειδιού 1, ο κώδικας είναι βασικά ένας κώδικας του Καίσαρα. Ας δούμε ένα παράδειγμα.
Ένα παράδειγμα ενός τετραγώνου Vigenère. Μπορείτε να δείτε ότι αυτή η έκδοση του κώδικα Vigenère είναι κατά βάση ένας κώδικας του Καίσαρα που μετατοπίζεται κυκλικά.
Όπως μπορείτε να δείτε από τον παραπάνω πίνακα, χρησιμοποιώντας ένα κλειδί με μόνο τον χαρακτήρα «D», ο κώδικας είναι πανομοιότυπος με τον κώδικα που χρησιμοποιούσε ο Καίσαρας στα μηνύματά του. Χρησιμοποιώντας τον πίνακα, κοιτάξτε στη σειρά D και από τη στήλη Α θα βρείτε το γράμμα Α να είναι κρυπτογραφημένο ως το γράμμα D, όπως στον κώδικα του Καίσαρα.
Για να κατανοήσετε την ισχύ του κώδικα Vigenère, ας δούμε ένα πιο ολοκληρωμένο παράδειγμα με ένα μεγαλύτερο κλειδί. Χρησιμοποιώντας το τετράγωνο Vigenère παραπάνω (ονομάζεται και πίνακας Vigenère), μπορούμε να κρυπτογραφήσουμε το μήνυμα απλού κειμένου «CYBERSECURITY» με το κλειδί «SECRET» με τον ακόλουθο τρόπο.
Μήνυμα: CYBERSECURITY
Κλειδί: SECRETSECRETS
Κρυπτογραφημένο:
Πρώτα πρέπει να βρούμε τη στήλη που αντιστοιχεί στο γράμμα C στη σειρά S στον πίνακα. Χρησιμοποιώντας τον πίνακα βρίσκουμε ότι είναι το γράμμα U. Εισαγάγετέ το ως το πρώτο γράμμα του κρυπτογραφημένου κειμένου.
Μήνυμα: CYBERSECURITY
Κλειδί: SECRETSECRETS
Κρυπτογραφημένο: U
Το επόμενο γράμμα του μηνύματος είναι το Y στη σειρά Ε (δεύτερο γράμμα του κλειδιού κρυπτογράφησης). Το αποτέλεσμα είναι το γράμμα C. Προσθέτοντάς το στην κρυπτογράφηση βλέπουμε ότι τα δύο πρώτα γράμματα του κρυπτογραφημένου κειμένου (κρυπτοκείμενο) είναι UC.
Μήνυμα: CYBERSECURITY
Κλειδί: SECRETSECRETS
Κρυπτογραφημένο: UC
Ακολουθώντας το ίδιο μοτίβο, καταλήγουμε με το τελικό κρυπτοκείμενο:
Μήνυμα: CYBERSECURITY
Κλειδί: SECRETSECRETS
Κρυπτογραφημένο: UCDVVLWGWIMMQ
Συγχαρητήρια, κρυπτογραφήσατε το πρώτο σας μήνυμα με τον κώδικα Vigenère! Ο κώδικας χρησιμοποιήθηκε επιτυχώς για περίπου τρεις αιώνες μέχρι που ανακαλύφθηκε μια μέθοδος γενικής αποκρυπτογράφησης. Όπως θα έχετε ήδη καταλάβει, κάποια μηνύματα είχαν πιθανότατα αποκρυπτογραφηθεί νωρίτερα καθώς η μυστικότητα του μηνύματος εξαρτάται από τη μυστικότητα και την ποιότητα του κλειδιού.
Sign up to solve exercises
Ο κώδικας Vigenère παρέμεινε ασφαλής για μεγάλο χρονικό διάστημα, όμως τον 19ο αιώνα αναγνωρίστηκαν και δημοσιεύτηκαν γενικές αδυναμίες. Με τη χρήση αυτών των μεθόδων, η κρυπτογράφηση παραβιαζόταν ανεξάρτητα από το κλειδί που χρησιμοποιούταν. Οι επιθέσεις βασίζονται σε αδυναμίες και στην επανάληψη του κλειδιού στον αλγόριθμο για την εύρεση του μήκους του κλειδιού (ή τα πιθανά μήκη του κλειδιού) και με αυτή την πληροφορία μπορεί να χρησιμοποιηθεί μια επίθεση αποκλεισμού κλειδιών ώστε να βρεθεί το κλειδί που χρησιμοποιήθηκε. Μπορούν να χρησιμοποιηθούν πολλές διαφορετικές μέθοδοι για την εύρεση του μήκους του κλειδιού με υψηλό ποσοστό βεβαιότητας.
Μια μορφή του κώδικα Vigenère χρησιμοποιήθηκε επίσης από τις δυνάμεις της συνομοσπονδίας κατά τον αμερικανικό εμφύλιο πόλεμο. Μέχρι τότε, οι δυνάμεις της ένωσης αποκρυπτογραφούσαν συχνά τα μηνύματά τους καθώς είχαν βρεθεί πολλές αδυναμίες στον κώδικα.
Ένας κώδικας Vigenère που χρησιμοποιεί ένα πραγματικά τυχαίο κλειδί με μήκος κλειδιού ίδιο με εκείνο του μηνύματος απλού κειμένου θεωρείται κωδικός που δεν αποκρυπτογραφείται και ονομάζεται one-time pad (σημειωματάριο μίας χρήσης). Το σημειωματάριο μίας χρήσης δεν φέρει τις αδυναμίες που σχετίζονται με το επαναλαμβανόμενο κλειδί. Καθώς οι επιθέσεις λεξικού δεν έχουν εφαρμογή σε πραγματικά τυχαία κλειδιά, η μυστικότητα του μηνύματος βασίζεται στο κλειδί και όχι στον κώδικα. Όμως, η χρήση του σημειωματαρίου μίας χρήσης είναι δύσκολη καθώς το αδύνατο σημείο θα είναι ο τρόπος ανταλλαγής του κλειδιού μεταξύ των μερών.
Μια διασκεδαστική και διαδραστική τοποθεσία με πολλά παραδείγματα διαφορετικών ιστορικών λειτουργιών της κρυπτογραφίας είναι το The Black Chamber του Simon Singh.
Με την εφεύρεση της μηχανολογίας, νέες και καλύτερες μέθοδοι εφευρέθηκαν στο πεδίο της κρυπτογράφησης. Δημιουργήθηκαν μηχανές όπου το πάτημα ενός πλήκτρου άναβε το κρυπτογραφημένο γράμμα. Αυτές οι πρώτες μηχανές μηχανικής κρυπτογράφησης επέκτειναν επίσης το μήκος του λεξιλογίου προσθέτοντας περιστρεφόμενα γρανάζια το ένα δίπλα στο άλλο. Όταν ένα γρανάζι με 26 χαρακτήρες περιστρέφονταν από το Α έως το Ζ, ένα άλλο μετακινούνταν κατά ένα βήμα παρακάτω με αποτέλεσμα να αποκρύπτεται το επαναλαμβανόμενο μοτίβο του κλειδιού. Ένα μόνο γρανάζι παρείχε, συνεπώς, ένα κλειδί μήκους 26 χαρακτήρων. Προσθέτοντας ακόμα ένα γρανάζι που κινείται, επέκτεινε τις διαθέσιμες θέσεις σε 26 x 26 = 676. Για τη ρύθμιση του κοινού κλειδιού θα έπρεπε απλώς να ενημερώσετε το άλλο μέρος για την αρχική κατάσταση των δύο γραναζιών.
Αν υποθέσουμε ότι έχουμε τρία γρανάζια και η αρχική ρύθμιση για όλα είναι Α, θα έχουμε τις ακόλουθες θέσεις για κάθε διαδοχικό πάτημα πλήκτρου:
A A A
B A A
C A A
D A A
…
Z A A
A B A
B B A
…
Y Z Z
Z Z Z
A A A
Η πραγματική εγκατάσταση, η καλωδίωση και ο τρόπος που λειτουργούν οι μηχανές είναι πιο περίπλοκος από το παράδειγμα, όμως δείχνει την ισχύ της αυτοματοποίησης της δημιουργίας του πραγματικού κλειδιού κρυπτογράφησης από την αρχική ρύθμιση των μηχανών.
Η πιο γνωστή από αυτές τις μηχανές γραναζιών ήταν το Enigma, που χρησιμοποιήθηκε εκτενώς από τους Γερμανούς στον Β’ Παγκόσμιο Πόλεμο. Οι μηχανές Enigma κατά τον πόλεμο χρησιμοποιούσαν από τρία έως οκτώ γρανάζια. Όμως, ο τρόπος χρήσης αυτών των μηχανών από τους Γερμανούς επέτρεψε σε Πολωνούς και Βρετανούς κρυπτογράφους να χρησιμοποιήσουν αυτές τις αδυναμίες για την αποκρυπτογράφηση των γερμανικών μηνυμάτων.
Περισσότερες πληροφορίες σχετικά με την ίσως πιο διάσημη μηχανή κρυπτογράφησης που υπήρξε ποτέ μπορείτε να βρείτε στη Wikipedia.
κλειδί που χρησιμοποιήθηκε για την κρυπτογράφηση μπορεί να χρησιμοποιηθεί και για την αποκρυπτογράφηση. Με την πάροδο των χρόνων, αναπτύχθηκαν μέθοδοι που δεν απαιτούν τη μετάδοση του μυστικού κλειδιού στον αποδέκτη του μηνύματος. Αυτές οι μέθοδοι ονομάζονται ασύμμετρη κρυπτογράφηση. Στην ασύμμετρη κρυπτογράφηση, το μήνυμα είναι κρυπτογραφημένο με ένα δημόσιο κλειδί που προκύπτει από το μυστικό κλειδί του αποδέκτη του μηνύματος. Για παράδειγμα, αν θέλατε οι συνάδελφοί σας να κρυπτογραφήσουν τα μηνύματα προς εσάς, θα τους στέλνατε το δημόσιο κλειδί σας και αυτοί θα το χρησιμοποιούσαν για να κρυπτογραφήσουν τα μηνύματά τους προς εσάς. Αφού τα μηνύματα κρυπτογραφηθούν, μόνο κάποιος (ελπίζουμε εσείς) που διαθέτει το μυστικό σας κλειδί μπορεί να αποκρυπτογραφήσει το μήνυμα. Αυτό ονομάζεται κρυπτογραφία δημόσιου κλειδιού καθώς χρησιμοποιεί ένα δημόσιο κλειδί για την κρυπτογράφηση.
Κάνοντας hashing για την απόδειξη της ακεραιότητας
Οι συναρτήσεις hash χρησιμοποιούνται ευρέως για την επαλήθευση της ακεραιότητας ενός μηνύματος. Όπως ίσως θυμάστε, η ακεραιότητα είναι η μία πτυχή του τρίπτυχου CIA (Εμπιστοσύνη, Ακεραιότητα και Διαθεσιμότητα). Η συνάρτηση hash μπορεί να χρησιμοποιηθεί για την επαλήθευση της ακεραιότητας με τον ίδιο τρόπο που μπορεί να προστατευτεί ένας κωδικός πρόσβασης. Μια συνάρτηση hash μπορεί να χρησιμοποιηθεί για τον υπολογισμό μιας τιμής για ολόκληρο το περιεχόμενο ενός μηνύματος και να σταλεί μαζί με το αρχικό μήνυμα. Ο παραλήπτης του κρυπτογραφημένου κωδικού πρόσβασης μπορεί στη συνέχεια να επαληθεύσει ότι η τιμή hash (η λεγόμενη «σύνοψη μηνύματος») αντιστοιχεί στην υπολογισμένη τιμή όταν την παραλαμβάνει. Ορισμένες κρυπτογραφικές συναρτήσεις hash ενσωματώνουν την ταυτότητα στη συνάρτηση, η οποία μπορεί να ελεγχθεί από τον παραλήπτη. Αυτές οι συναρτήσεις δημιουργούν αυτό που ονομάζεται Message Authentication Code (κωδικός ελέγχου ταυτότητας μηνύματος – MAC).
Σύγχρονη κρυπτογραφία
Η σύγχρονη κρυπτογραφία βασίζεται στη μυστικότητα του κλειδιού και χρησιμοποιεί γνωστούς και ευρέως μελετημένους κώδικες. Οι κώδικες μπορούν να είναι γνωστοί καθώς η μυστικότητα εξαρτάται από το κλειδί αντί για τον τρόπο που χρησιμοποιείται. Για παράδειγμα, όταν επισκέπτεστε διαδικτυακά την τράπεζά σας, το πρόγραμμα περιήγησής σας και ο διακομιστής web της τράπεζας ανταλλάσσουν με ασφάλεια ένα μυστικό συμμετρικό (και μακρύ) κλειδί μιας χρήσης που χρησιμοποιείται για την κρυπτογράφηση της κυκλοφορίας μεταξύ του προγράμματος περιήγησής σας και του διακομιστή της τράπεζας. Επιπλέον, η κρυπτογραφία δημόσιου κλειδιού συνήθως χρησιμοποιείται για την επαλήθευση της ταυτότητας του άλλου μέρους. Το κάθε μήνυμα είναι επίσης επαληθεύσιμο από ένα message authentication code (MAC) (κωδικό ελέγχου ταυτότητας μηνύματος – MAC). Αυτή η διαδικασία ανταλλαγής κλειδιών, επαλήθευσης και ελέγχου ταυτότητας μεταξύ προγράμματος περιήγησης και διακομιστή ονομάζεται TLS ή transport layer security, (TLS ή ασφάλεια επιπέδου μεταφοράς) για την οποία θα μάθουμε περισσότερα στο επόμενο κεφάλαιο. Οι προηγούμενες εκδόσεις χρησιμοποιούσαν μια πλέον ξεπερασμένη μέθοδο που ονομάζεται SSL- secure socket layer (SSL - ασφαλές επίπεδο υποδοχής).
Βασικά σημεία της κρυπτογραφίας
Η μυστικότητα του μηνύματός σας θα πρέπει πάντα να βασίζεται στη μυστικότητα του κλειδιού και όχι στη μυστικότητα του συστήματος κρυπτογράφησης (αυτό είναι γνωστό ως η αρχή του Kerckhoffs).
Χρησιμοποιείτε πάντα κώδικες οι οποίοι έχουν ελεγχθεί δημόσια και έχουν εδραιωθεί ως πρότυπα. Η χρήση μιας «μυστικής κρυπτογράφησης» ή η εφεύρεση μιας δικής σας είναι κακή ιδέα, γιατί όπως και με τον κώδικα του Καίσαρα, από τη στιγμή που το σύστημα γίνει γνωστό και κατανοητό, όλα τα μηνύματα θα μπορούν να αποκρυπτογραφηθούν.