Ως χάκερς, αντιμετωπίζουμε συχνά το εμπόδιο της κρυπτογραφίας και της κρυπτογράφησης. Κάθε μηχανικός ασφάλειας καταλαβαίνει ότι η κρυπτογράφηση κάνει το έργο του επιτιθέμενου πολύ πιο δύσκολο. Σε ορισμένες περιπτώσεις μπορεί να είναι χρήσιμη στον χάκερ, για να αποκρύψει ενέργειες και μηνύματα.
Πολλές εφαρμογές και πρωτόκολλα χρησιμοποιούν κρυπτογράφηση για να διατηρήσουν την εμπιστευτικότητα και την ακεραιότητα των δεδομένων. Για να μπορέσετε να σπάσετε κωδικούς πρόσβασης και κρυπτογραφημένα πρωτόκολλα όπως το SSL και το ασύρματο δίκτυο, πρέπει να έχετε τουλάχιστον μια βασική εξοικείωση με τις έννοιες και την ορολογία της κρυπτογραφίας και της κρυπτογράφησης.
Για πολλούς νέους χάκερ, όλες οι έννοιες και η ορολογία της κρυπτογραφίας μπορεί να είναι λίγο δύσκολες στην κατανόησή τους. Αρχικά, η κρυπτογραφία είναι η επιστήμη και η τέχνη της απόκρυψης μηνυμάτων ώστε να είναι εμπιστευτικά και στη συνέχεια της “απόκρυψής” τους ώστε να μπορεί να τα διαβάσει μόνο ο προοριζόμενος παραλήπτης. Βασικά, μπορούμε να πούμε ότι η κρυπτογραφία είναι η επιστήμη των μυστικών μηνυμάτων.
Με αυτή τη σύντομη επισκόπηση για τους νεοεισερχόμενους, ελπίζω να διαλύσω την ομίχλη που καλύπτει αυτό το θέμα και να ρίξω λίγο φως στην κρυπτογραφία. Θα προσπαθήσω να σας εξοικειώσω με τη βασική ορολογία και τις έννοιες, ώστε όταν διαβάζετε για hashing, wireless cracking ή password cracking και αναφέρονται οι τεχνολογίες κρυπτογράφησης, να έχετε κάποια αντίληψη του τι εξετάζεται.
Μην με παρεξηγήσετε, δεν σκοπεύω να σας κάνω κρυπτογράφο εδώ (αυτό θα έπαιρνε χρόνια), αλλά απλώς να βοηθήσω στην εξοικείωση του αρχάριου με τους όρους και τις έννοιες της κρυπτογραφίας, ώστε να σας βοηθήσω να γίνετε ένας αξιόπιστος χάκερ.
Θα προσπαθήσω να χρησιμοποιήσω όσο το δυνατόν πιο απλά λόγια για να περιγράψω αυτές τις τεχνολογίες, αλλά όπως όλα στην πληροφορική, υπάρχει μια πολύ εξειδικευμένη γλώσσα για την κρυπτογραφία και την κρυπτογράφηση.
Ας ξεκινήσουμε σπάζοντας την κρυπτογράφηση σε διάφορες κατηγορίες.
Τύποι κρυπτογράφησης
Υπάρχουν διάφοροι τρόποι για να κατηγοριοποιήσουμε την κρυπτογράφηση, αλλά για τους σκοπούς μας εδώ, τις έχω χωρίσει σε τέσσερις κύριες περιοχές (είμαι σίγουρος ότι οι κρυπτογράφοι θα διαφωνήσουν με αυτό το σύστημα ταξινόμησης, αλλά ας είναι).
- Symmetric Encryption
- Asymmetric Encryption
- Hashes
- Wireless
Λίγα λόγια για το μέγεθος του κλειδιού
Στον κόσμο της κρυπτογραφίας, το μέγεθος έχει σημασία! Σε γενικές γραμμές, όσο μεγαλύτερο είναι το κλειδί, τόσο πιο ασφαλής είναι η κρυπτογράφηση. Αυτό σημαίνει ότι ο AES με κλειδί 256 bit είναι ισχυρότερος από τον AES με κλειδί 128 bit και πιθανόν να είναι πιο δύσκολο να σπάσει. Στον ίδιο αλγόριθμο κρυπτογράφησης, όσο μεγαλύτερο είναι το κλειδί, τόσο ισχυρότερη είναι η κρυπτογράφηση.
Αυτό δεν σημαίνει απαραίτητα ότι μεγαλύτερα κλειδιά σημαίνουν ισχυρότερη κρυπτογράφηση μεταξύ αλγορίθμων κρυπτογράφησης. Μεταξύ αλγορίθμων, η ισχύς της κρυπτογράφησης εξαρτάται τόσο από τις ιδιαιτερότητες του αλγορίθμου όσο και από το μέγεθος του κλειδιού.
Symmetric Cryptography
Συμμετρική κρυπτογραφία είναι όταν έχουμε το ίδιο κλειδί στον αποστολέα και στον παραλήπτη. Είναι η πιο συνηθισμένη μορφή κρυπτογραφίας. Έχετε έναν κωδικό πρόσβασης ή “κλειδί” που κρυπτογραφεί ένα μήνυμα και έχω τον ίδιο κωδικό πρόσβασης για να αποκρυπτογραφήσω το μήνυμα. Οποιοσδήποτε άλλος δεν μπορεί να διαβάσει το μήνυμα ή τα δεδομένα μας.
Η συμμετρική κρυπτογραφία είναι πολύ γρήγορη, οπότε είναι κατάλληλη για εφαρμογές μαζικής αποθήκευσης ή ροής. Το μειονέκτημα της συμμετρικής κρυπτογραφίας είναι αυτό που ονομάζεται ανταλλαγή κλειδιών. Εάν και τα δύο άκρα χρειάζονται το ίδιο κλειδί, πρέπει να χρησιμοποιήσουν ένα τρίτο κανάλι για την ανταλλαγή του κλειδιού και εκεί έγκειται η αδυναμία.
Αν υπάρχουν δύο άνθρωποι που θέλουν να κρυπτογραφήσουν την επικοινωνία τους και απέχουν 12.000 μίλια, πώς θα ανταλλάξουν το κλειδί; Αυτή η ανταλλαγή κλειδιών είναι γεμάτη με όλα τα προβλήματα της εμπιστευτικότητας του μέσου που επιλέγουν, είτε πρόκειται για τηλέφωνο, ταχυδρομείο, ηλεκτρονικό ταχυδρομείο, πρόσωπο με πρόσωπο κ.λ.π. Η ανταλλαγή κλειδιών μπορεί να υποκλαπεί και να καταστήσει την εμπιστευτικότητα της κρυπτογράφησης αμφισβητήσιμη.
Μερικοί από τους συνήθεις συμμετρικούς αλγορίθμους με τους οποίους θα πρέπει να είστε εξοικειωμένοι είναι οι εξής:
- DES – Αυτό ήταν ένα από τα αρχικά και παλαιότερα συστήματα κρυπτογράφησης που αναπτύχθηκε από την IBM. Διαπιστώθηκε ότι ήταν ελαττωματικό και εύθραυστο και χρησιμοποιήθηκε στο αρχικό σύστημα κατακερματισμού των LANMAN hashes στα πρώιμα (πριν από το 2000) συστήματα Windows.
- 3DES – Αυτός ο αλγόριθμος κρυπτογράφησης αναπτύχθηκε ως απάντηση στα ελαττώματα του DES. Ο 3DES εφαρμόζει τον αλγόριθμο DES τρεις φορές (εξ ου και η ονομασία “τριπλός DES”) καθιστώντας τον ελαφρώς ασφαλέστερο από τον DES.
- AES – Το Advanced Encryption Standard δεν είναι ένας αλγόριθμος κρυπτογράφησης αλλά ένα πρότυπο που αναπτύχθηκε από το Εθνικό Ινστιτούτο Προτύπων και Τεχνολογίας (NIST). Επί του παρόντος, θεωρείται η ισχυρότερη κρυπτογράφηση, χρησιμοποιεί κλειδί 128, 196 ή 256 bit και καταλαμβάνεται από τον αλγόριθμο Rijndael από το 2001. Χρησιμοποιείται στο WPA2, στο SSL/TLS και σε πολλά άλλα πρωτόκολλα όπου η εμπιστευτικότητα και η ταχύτητα είναι σημαντικές.
- RC4 – Πρόκειται για ένα κρυπτογράφημα ροής (κρυπτογραφεί κάθε bit ή byte και όχι ένα μπλοκ πληροφοριών) και αναπτύχθηκε από τον Ronald Rivest, γνωστό ως RSA. Χρησιμοποιείται στο VoIP και στο WEP.
- Blowfish – Ο πρώτος από τους αλγόριθμους κρυπτογράφησης του Bruce Schneier. Χρησιμοποιεί μεταβλητό μήκος κλειδιού και είναι πολύ ασφαλής. Δεν έχει κατοχυρωθεί με δίπλωμα ευρεσιτεχνίας, οπότε ο καθένας μπορεί να τον χρησιμοποιήσει χωρίς άδεια.
- Twofish – Μια ισχυρότερη έκδοση του Blowfish που χρησιμοποιεί κλειδί 128 ή 256 bit και ήταν ισχυρός αντίπαλος του AES. Χρησιμοποιείται στο Cryptcat και το OpenPGP, μεταξύ άλλων. Είναι επίσης δημόσιο χωρίς δίπλωμα ευρεσιτεχνίας.
Asymmetric Cryptography
Η ασύμμετρη κρυπτογραφία χρησιμοποιεί διαφορετικά κλειδιά και στα δύο άκρα του καναλιού επικοινωνίας. Η ασύμμετρη κρυπτογραφία είναι πολύ αργή, περίπου 1.000 φορές πιο αργή από τη συμμετρική κρυπτογραφία, οπότε δεν θέλουμε να τη χρησιμοποιούμε για μαζική κρυπτογράφηση ή επικοινωνία ροής. Λύνει, ωστόσο, το πρόβλημα της ανταλλαγής κλειδιών. Εφόσον δεν χρειάζεται να έχουμε το ίδιο κλειδί και στα δύο άκρα μιας επικοινωνίας, δεν έχουμε το πρόβλημα της ανταλλαγής κλειδιών.
Η ασύμμετρη κρυπτογραφία χρησιμοποιείται κυρίως όταν έχουμε δύο άγνωστες μεταξύ τους οντότητες που θέλουν να ανταλλάξουν ένα μικρό κομμάτι πληροφοριών, όπως ένα κλειδί ή άλλες πληροφορίες αναγνώρισης, όπως ένα πιστοποιητικό. Δεν χρησιμοποιείται για μαζική κρυπτογράφηση ή κρυπτογράφηση ροής λόγω των περιορισμών της ταχύτητάς της.
Μερικά από τα κοινά σχήματα ασύμμετρης κρυπτογράφησης με τα οποία θα πρέπει να είστε εξοικειωμένοι είναι τα εξής:
- Diffie-Hellman – Πολλοί άνθρωποι στον τομέα της κρυπτογραφίας θεωρούν την ανταλλαγή κλειδιών Diffie-Hellman ως τη μεγαλύτερη εξέλιξη στην κρυπτογραφία (θα συμφωνήσω). Χωρίς να εμβαθύνουν στα μαθηματικά, οι Diffie και Hellman ανέπτυξαν έναν τρόπο να δημιουργούν κλειδιά χωρίς να χρειάζεται να ανταλλάσσουν τα κλειδιά, λύνοντας έτσι το πρόβλημα της ανταλλαγής κλειδιών που μαστίζει την κρυπτογράφηση συμμετρικού κλειδιού.
- RSA – Rivest, Shamir και Adleman είναι ένα σύστημα ασύμμετρης κρυπτογράφησης που χρησιμοποιεί την παραγοντοποίηση πολύ μεγάλων πρώτων αριθμών ως σχέση μεταξύ των δύο κλειδιών.
- PKI – Η υποδομή δημόσιου κλειδιού είναι το ευρέως χρησιμοποιούμενο ασύμμετρο σύστημα για την ανταλλαγή εμπιστευτικών πληροφοριών με τη χρήση ενός ιδιωτικού και ενός δημόσιου κλειδιού.
- ECC – Η κρυπτογραφία ελλειπτικής καμπύλης γίνεται ολοένα και πιο δημοφιλής στην πληροφορική, καθώς είναι αποδοτική και απαιτεί λιγότερη υπολογιστική ισχύ και κατανάλωση ενέργειας για το ίδιο επίπεδο ασφάλειας. Η ECC βασίζεται στην κοινή σχέση δύο συναρτήσεων που βρίσκονται στην ίδια ελλειπτική καμπύλη.
- PGP – Το Pretty Good Privacy χρησιμοποιεί ασύμμετρη κρυπτογράφηση για να διασφαλίσει το απόρρητο και την ακεραιότητα των μηνυμάτων ηλεκτρονικού ταχυδρομείου.
Hashes
Οι κατακερματισμοί είναι κρυπτογράφηση μονής κατεύθυνσης. Ένα μήνυμα ή ένας κωδικός πρόσβασης κρυπτογραφείται με τρόπο που δεν μπορεί να αντιστραφεί ή να αποκρυπτογραφηθεί. Μπορεί να αναρωτηθείτε: “Τι καλό θα μας έκανε να έχουμε κάτι κρυπτογραφημένο και μετά να μην μπορούμε να το αποκρυπτογραφήσουμε;” Καλή ερώτηση!
Όταν το μήνυμα κρυπτογραφείται, δημιουργείται ένας “κατακερματισμός” που γίνεται μια μοναδική, αλλά μη αποκρυπτογραφημένη υπογραφή για το υποκείμενο μήνυμα. Κάθε μήνυμα κρυπτογραφείται με τέτοιο τρόπο ώστε να δημιουργείται ένα μοναδικό hash.
Συνήθως, αυτοί οι κατακερματισμοί έχουν σταθερό μήκος (ένας κατακερματισμός MD5 είναι πάντα 32 χαρακτήρες). Με αυτόν τον τρόπο, ο επιτιθέμενος δεν μπορεί να αποκρυπτογραφήσει καμία πληροφορία σχετικά με το υποκείμενο μήνυμα από το μήκος του κατακερματισμού.
Εξαιτίας αυτού, δεν χρειάζεται να γνωρίζουμε το αρχικό μήνυμα, αρκεί να δούμε αν κάποιο κείμενο δημιουργεί τον ίδιο κατακερματισμό για να ελέγξουμε την ακεραιότητά του (αμετάβλητο).
Αυτός είναι ο λόγος για τον οποίο οι κατακερματισμοί μπορούν να χρησιμοποιηθούν για την αποθήκευση κωδικών πρόσβασης. Οι κωδικοί πρόσβασης αποθηκεύονται ως κατακερματισμοί και στη συνέχεια, όταν κάποιος προσπαθεί να συνδεθεί, το σύστημα κατακερματίζει τον κωδικό πρόσβασης και ελέγχει αν ο κατακερματισμός που παράγεται ταιριάζει με τον κατακερματισμό που έχει αποθηκευτεί. Επιπλέον, οι κατακερματισμοί είναι χρήσιμοι για τον έλεγχο ακεραιότητας, για παράδειγμα, με λήψεις αρχείων ή αρχείων συστήματος.
Στον κόσμο της κρυπτογράφησης και του κατακερματισμού, μια “σύγκρουση” είναι όταν δύο διαφορετικά κείμενα εισόδου παράγουν τον ίδιο κατακερματισμό. Με άλλα λόγια, ο κατακερματισμός δεν είναι μοναδικός.
Αυτό μπορεί να αποτελέσει πρόβλημα όταν υποθέτουμε ότι όλοι οι κατακερματισμοί είναι μοναδικοί, όπως στις ανταλλαγές πιστοποιητικών στο SSL. Η NSA χρησιμοποίησε αυτή την ιδιότητα των συγκρούσεων στο κακόβουλο λογισμικό Stuxnet για να του παράσχει αυτό που φαινόταν να είναι ένα νόμιμο πιστοποιητικό της Microsoft. Οι αλγόριθμοι κατακερματισμού που παράγουν συγκρούσεις, όπως μπορείτε να μαντέψετε, είναι ελαττωματικοί και ανασφαλείς.
Αυτοί είναι οι κατακερματισμοί με τους οποίους θα πρέπει να είστε εξοικειωμένοι.
- MD4 – Αυτό ήταν ένα πρώιμο hash του Ron Rivest και έχει σε μεγάλο βαθμό σταματήσει να χρησιμοποιείται λόγω συγκρούσεων.
- MD5 – Το πιο ευρέως χρησιμοποιούμενο σύστημα κατακερματισμού. Είναι 128-bit και παράγει ένα ψηφιοποιημένο μήνυμα 32 χαρακτήρων.
- SHA1– Αναπτύχθηκε από την NSA, είναι πιο ασφαλής από το MD5, αλλά δεν χρησιμοποιείται τόσο ευρέως. Έχει 160-bit digest που συνήθως αποδίδεται σε δεκαεξαδικό σύστημα 40 χαρακτήρων. Χρησιμοποιείται συχνά για ανταλλαγές πιστοποιητικών στο SSL, αλλά λόγω των πρόσφατων ατελειών που ανακαλύφθηκαν, έχει καταργηθεί για το σκοπό αυτό.
Wireless Cryptography
Η ασύρματη κρυπτογραφία ήταν το αγαπημένο θέμα των αναγνωστών μου, καθώς πολλοί εδώ προσπαθούν να σπάσουν τα ασύρματα σημεία πρόσβασης. Όπως μπορείτε να μαντέψετε, η ασύρματη κρυπτογραφία είναι συμμετρική (για ταχύτητα), και όπως σε κάθε συμμετρική κρυπτογραφία, η ανταλλαγή κλειδιών είναι κρίσιμη.
- WEP – Αυτό ήταν το αρχικό σύστημα κρυπτογράφησης για ασύρματα δίκτυα και γρήγορα ανακαλύφθηκε ότι ήταν ελαττωματικό. Χρησιμοποιούσε RC4, αλλά λόγω του μικρού μεγέθους του κλειδιού (24-bit), επαναλάμβανε το IV περίπου κάθε 5.000 πακέτα επιτρέποντας την εύκολη παραβίαση σε ένα πολυσύχναστο δίκτυο με τη χρήση στατιστικών επιθέσεων.
- WPA – Αυτό ήταν μια γρήγορη διόρθωση των ελαττωμάτων του WEP, προσθέτοντας ένα μεγαλύτερο κλειδί και το TKIP για να γίνει ελαφρώς πιο δύσκολο να σπάσει.
- WPA2-PSK – Αυτό ήταν το πρώτο από τα πιο ασφαλή συστήματα ασύρματης κρυπτογράφησης. Χρησιμοποιεί ένα προ-μοιρασμένο κλειδί (PSK) και AES. Στη συνέχεια, αλατοποιεί (salt) τα hashes με το όνομα του AP ή το SSID. Ο κατακερματισμός ανταλλάσσεται κατά τον έλεγχο ταυτότητας σε μια χειραψία τεσσάρων κατευθύνσεων μεταξύ του πελάτη και του AP.
- WPA2-Enterprise – Αυτή η ασύρματη κρυπτογράφηση είναι η πιο ασφαλής. Χρησιμοποιεί κλειδί 128 bit, AES και απομακρυσμένο διακομιστή ελέγχου ταυτότητας (RADIUS).
Η σημασία της κρυπτογραφίας είναι τεράστια στους τομείς της ασφάλειας υπολογιστικών συστημάτων και των τηλεπικοινωνιών. Ο κύριος στόχος της είναι να παρέχει μηχανισμούς ώστε 2 ή περισσότερα άκρα επικοινωνίας (π.χ. άνθρωποι, προγράμματα υπολογιστών κλπ.) να ανταλλάξουν μηνύματα, χωρίς κανένας τρίτος να είναι ικανός να διαβάζει την περιεχόμενη πληροφορία εκτός από τα δύο κύρια άκρα.