Την πρώτη ημέρα του 2016, η Mozilla τερμάτισε την υποστήριξη για μια εξασθενημένη τεχνολογία ασφαλείας που ονομάζεται SHA-1 στο πρόγραμμα περιήγησης ιστού Firefox. Σχεδόν αμέσως, αντέστρεψαν την απόφασή τους, καθώς θα μείωνε την πρόσβαση σε ορισμένους παλαιότερους ιστότοπους. Αλλά τον Φεβρουάριο του 2017, οι φόβοι τους τελικά έγιναν πραγματικότητα: οι ερευνητές έσπασαν το SHA-1 δημιουργώντας η πρώτη επίθεση σύγκρουσης στον πραγματικό κόσμο . Αυτό σημαίνει όλα αυτά.
Τι είναι το SHA-1;
Το SHA στο SHA-1 σημαίνει Ασφαλής αλγόριθμος κατακερματισμού και, απλά, μπορείτε να το θεωρήσετε ως ένα είδος μαθηματικού προβλήματος ή μεθόδου που ανακατεύει τα δεδομένα που τοποθετούνται σε αυτό . Αναπτύχθηκε από την NSA των Ηνωμένων Πολιτειών, αποτελεί βασικό συστατικό πολλών τεχνολογιών που χρησιμοποιούνται για την κρυπτογράφηση σημαντικών μεταδόσεων στο Διαδίκτυο. Οι κοινές μέθοδοι κρυπτογράφησης SSL και TLS, τις οποίες ίσως έχετε ακούσει, μπορούν να χρησιμοποιήσουν μια συνάρτηση κατακερματισμού όπως το SHA-1 για να δημιουργήσουν τα υπογεγραμμένα πιστοποιητικά που βλέπετε στη γραμμή εργαλείων του προγράμματος περιήγησής σας.
Δεν θα πάμε βαθιά στα μαθηματικά και την επιστήμη των υπολογιστών για καμία από τις λειτουργίες SHA, αλλά εδώ είναι η βασική ιδέα. Το "hash" είναι έναν μοναδικό κωδικό βασισμένο στην εισαγωγή οποιωνδήποτε δεδομένων . Ακόμη και μικρή, τυχαία σειρά γραμμάτων που εισάγονται σε μια συνάρτηση κατακερματισμού όπως το SHA-1 θα επιστρέψει έναν μεγάλο, καθορισμένο αριθμό χαρακτήρων, καθιστώντας (δυνητικά) αδύνατο να επαναφέρετε τη σειρά χαρακτήρων στα αρχικά δεδομένα. Έτσι λειτουργεί συνήθως η αποθήκευση κωδικού πρόσβασης. Όταν δημιουργείτε έναν κωδικό πρόσβασης, η εισαγωγή κωδικού πρόσβασης κατακερματίζεται και αποθηκεύεται από το διακομιστή. Κατά την επιστροφή σας, όταν πληκτρολογείτε τον κωδικό πρόσβασής σας, κατακερματιστεί ξανά. Εάν ταιριάζει με το αρχικό κατακερματισμό, η εισαγωγή μπορεί να θεωρηθεί ότι είναι η ίδια και θα σας δοθεί πρόσβαση στα δεδομένα σας.
Οι λειτουργίες κατακερματισμού είναι χρήσιμες κυρίως επειδή καθιστούν εύκολο να διαπιστωθεί εάν η είσοδος, για παράδειγμα, ένα αρχείο ή ένας κωδικός πρόσβασης, έχει αλλάξει. Όταν τα δεδομένα εισαγωγής είναι μυστικά, όπως ένας κωδικός πρόσβασης, ο κατακερματισμός είναι σχεδόν αδύνατο να αντιστραφεί και να ανακτηθεί τα αρχικά δεδομένα (επίσης γνωστά ως "κλειδί"). Αυτό είναι λίγο διαφορετικό από την «κρυπτογράφηση», ο σκοπός του οποίου είναι η ανακατάταξη δεδομένων με σκοπό την αποκρυπτογράφηση αργότερα , χρησιμοποιώντας κρυπτογράφηση και μυστικά κλειδιά. Οι παύλες προορίζονται απλώς για να διασφαλίσουν την ακεραιότητα των δεδομένων - για να διασφαλίσουν ότι όλα είναι τα ίδια. Git, το λογισμικό ελέγχου έκδοσης και διανομής για κώδικα ανοιχτού κώδικα, χρησιμοποιεί SHA-1 κατακερματισμούς για αυτόν ακριβώς τον λόγο .
Αυτές είναι πολλές τεχνικές πληροφορίες, αλλά με απλά λόγια: ένα hash δεν είναι το ίδιο με την κρυπτογράφηση, από τότε χρησιμοποιείται για να προσδιορίσει εάν ένα αρχείο έχει αλλάξει .
Πώς με επηρεάζει αυτή η τεχνολογία;
Ας υποθέσουμε ότι πρέπει να επισκεφτείτε έναν ιστότοπο ιδιωτικά. Η τράπεζά σας, το email σας, ακόμη και ο λογαριασμός σας στο Facebook - όλα χρησιμοποιούν κρυπτογράφηση για να διατηρήσουν τα δεδομένα που τα στέλνετε απόρρητα. Ένας επαγγελματικός ιστότοπος θα παρέχει κρυπτογράφηση λαμβάνοντας ένα πιστοποιητικό από μια αξιόπιστη αρχή - ένα τρίτο μέρος, αξιόπιστο για να διασφαλίσει ότι η κρυπτογράφηση είναι στο επίπεδο, ιδιωτική μεταξύ του ιστότοπου και του χρήστη και ότι δεν γίνεται κατασκοπεία από οποιοδήποτε άλλο μέρος. Αυτή η σχέση με τον τρίτο, ονομάζεται Πιστοποιητικές Αρχές , ή ΟΤΙ , είναι ζωτικής σημασίας, καθώς οποιοσδήποτε χρήστης μπορεί να δημιουργήσει ένα "αυτο-υπογεγραμμένο" πιστοποιητικό - μπορείτε ακόμη και κάντε το μόνοι σας σε ένα μηχάνημα που τρέχει Linux με Openssl . Η Symantec και η Digicert είναι δύο ευρέως γνωστές εταιρείες CA, για παράδειγμα.
Ας περάσουμε από ένα θεωρητικό σενάριο: Το How-To Geek θέλει να διατηρήσει ιδιωτικές τις συνεδρίες των χρηστών με κρυπτογράφηση, οπότε υποβάλλει αναφορές για ΑΠ όπως η Symantec με Αίτημα υπογραφής πιστοποιητικού , ή CSR . Δημιουργούν ένα δημόσιο κλειδί και ιδιωτικό κλειδί για κρυπτογράφηση και αποκρυπτογράφηση δεδομένων που αποστέλλονται μέσω του Διαδικτύου. Το αίτημα CSR στέλνει το δημόσιο κλειδί στη Symantec μαζί με πληροφορίες σχετικά με τον ιστότοπο. Η Symantec ελέγχει το κλειδί έναντι της εγγραφής της για να επαληθεύσει ότι τα δεδομένα είναι αμετάβλητα από όλα τα μέρη, επειδή οποιαδήποτε μικρή αλλαγή στα δεδομένα κάνει το κατακερματισμό ριζικά διαφορετικό.
Αυτά τα δημόσια κλειδιά και τα ψηφιακά πιστοποιητικά υπογράφονται από λειτουργίες κατακερματισμού, επειδή η έξοδος αυτών των λειτουργιών είναι ευδιάκριτη. Ένα δημόσιο κλειδί και πιστοποιητικό με επαληθευμένο κατακερματισμό από τη Symantec (στο παράδειγμά μας), μια αρχή, διαβεβαιώνει έναν χρήστη του How-To Geek ότι το κλειδί είναι αμετάβλητο και δεν αποστέλλεται από κάποιον κακόβουλο.
Επειδή ο κατακερματισμός είναι εύκολος στην παρακολούθηση και αδύνατος (ορισμένοι λένε «δύσκολο») να αντιστραφεί, η σωστή, επαληθευμένη υπογραφή κατακερματισμού σημαίνει ότι το πιστοποιητικό και η σύνδεση μπορούν να είναι αξιόπιστα και τα δεδομένα μπορούν να συμφωνηθούν να αποστέλλονται κρυπτογραφημένα από άκρο σε άκρο . Αλλά τι γίνεται αν το κατακερματισμό δεν ήταν πραγματικά μοναδικό ?
Τι είναι μια επίθεση σύγκρουσης και είναι δυνατόν στον πραγματικό κόσμο;
Ίσως έχετε ακούσει για το «Πρόβλημα γενεθλίων» στα μαθηματικά , παρόλο που ίσως δεν γνωρίζετε τι ονομάστηκε. Η βασική ιδέα είναι ότι εάν συγκεντρώσετε μια αρκετά μεγάλη ομάδα ανθρώπων, οι πιθανότητες είναι πολύ υψηλές ότι δύο ή περισσότερα άτομα θα έχουν τα ίδια γενέθλια. Υψηλότερη από ό, τι θα περίμενε κανείς, στην πραγματικότητα, αρκετά ώστε να μοιάζει με περίεργη σύμπτωση. Σε μια ομάδα μικρότερη από 23 άτομα, υπάρχει πιθανότητα 50% να μοιραστούν δύο γενέθλια.
Αυτή είναι η εγγενής αδυναμία σε όλους τους κατακερματισμούς, συμπεριλαμβανομένου του SHA-1. Θεωρητικά, η συνάρτηση SHA θα πρέπει να δημιουργήσει ένα μοναδικό κατακερματισμό για οποιαδήποτε δεδομένα τοποθετούνται σε αυτήν, αλλά καθώς αυξάνεται ο αριθμός των κατακερματισμών, γίνεται πιο πιθανό ότι διαφορετικά ζεύγη δεδομένων μπορούν να δημιουργήσουν τον ίδιο κατακερματισμό. Έτσι θα μπορούσε κανείς να δημιουργήσει ένα μη αξιόπιστο πιστοποιητικό με το ίδιο κατακερματισμό με ένα αξιόπιστο πιστοποιητικό. Εάν σας έκαναν να εγκαταστήσετε αυτό το μη αξιόπιστο πιστοποιητικό, θα μπορούσε να μεταμφιέζεται ως αξιόπιστο και να διανείμει κακόβουλα δεδομένα.
Η εύρεση αντίστοιχων κατακερματισμών σε δύο αρχεία ονομάζεται α επίθεση σύγκρουσης . Τουλάχιστον μία επίθεση σύγκρουσης μεγάλης κλίμακας είναι γνωστό ότι έχει ήδη συμβεί για κατακερματισμούς MD5. Αλλά στις 27 Φεβρουαρίου 2017, η Google ανακοίνωσε Ντυμένος , η πρώτη κατασκευασμένη σύγκρουση για το SHA-1. Η Google μπόρεσε να δημιουργήσει ένα αρχείο PDF που είχε τον ίδιο κατακερματισμό SHA-1 με ένα άλλο αρχείο PDF, παρά το ότι είχε διαφορετικό περιεχόμενο.
Το SHAttered εκτελέστηκε σε αρχείο PDF. Τα PDF είναι μια σχετικά χαλαρή μορφή αρχείου. Πολλές μικροσκοπικές αλλαγές σε επίπεδο bit μπορούν να γίνουν χωρίς να εμποδίζεται το άνοιγμα των αναγνωστών ή να προκαλούνται ορατές διαφορές. Τα PDF χρησιμοποιούνται επίσης συχνά για την παράδοση κακόβουλου λογισμικού. Ενώ το SHAttered θα μπορούσε να λειτουργήσει σε άλλους τύπους αρχείων, όπως τα ISO, τα πιστοποιητικά καθορίζονται αυστηρά, καθιστώντας μια τέτοια επίθεση απίθανη.
Πόσο εύκολη είναι λοιπόν αυτή η επίθεση; Το SHAttered βασίστηκε σε ένα μέθοδος ανακαλύφθηκε από τον Marc Stevens το 2012, το οποίο απαιτούσε πάνω από 2 ^ 60,3 (9,223 quintillion) SHA-1 πράξεις - έναν εντυπωσιακό αριθμό. Ωστόσο, αυτή η μέθοδος είναι ακόμη 100.000 φορές λιγότερες λειτουργίες από ό, τι θα απαιτούσε για την επίτευξη του ίδιου αποτελέσματος με ωμή δύναμη. Η Google διαπίστωσε ότι με 110 κάρτες γραφικών υψηλών προδιαγραφών που λειτουργούν παράλληλα, θα χρειαζόταν περίπου ένας χρόνος για να δημιουργηθεί σύγκρουση. Η ενοικίαση αυτού του χρόνου υπολογισμού από το Amazon AWS θα κόστιζε περίπου 110.000 $. Λάβετε υπόψη ότι καθώς οι τιμές μειώνονται για εξαρτήματα υπολογιστών και μπορείτε να αποκτήσετε περισσότερη ισχύ για λιγότερα, επιθέσεις όπως το SHAttered γίνονται πιο εύκολα.
110.000 $ μπορεί να μοιάζουν πολύ, αλλά είναι μέσα στη σφαίρα της οικονομικής προσιτότητας για ορισμένους οργανισμούς - πράγμα που σημαίνει ότι οι πραγματικοί κυβερνοχώροι θα μπορούσαν να σφυρηλατήσουν ψηφιακές υπογραφές εγγράφων, να παρεμβαίνουν σε συστήματα δημιουργίας αντιγράφων ασφαλείας και ελέγχου εκδόσεων όπως το Git και το SVN ή να κάνουν ένα κακόβουλο ISO ISO να φαίνεται νόμιμο.
Ευτυχώς, υπάρχουν ελαφρυντικοί παράγοντες που αποτρέπουν τέτοιες επιθέσεις. Το SHA-1 χρησιμοποιείται σπάνια για ψηφιακές υπογραφές. Οι Αρχές έκδοσης πιστοποιητικών δεν παρέχουν πλέον πιστοποιητικά που έχουν υπογραφεί με το SHA-1 και τόσο το Chrome όσο και ο Firefox έχουν απορρίψει την υποστήριξή τους. Οι διανομές Linux συνήθως κυκλοφορούν συχνότερα από μία φορά το χρόνο, καθιστώντας ανέφικτο έναν εισβολέα να δημιουργήσει μια κακόβουλη έκδοση και, στη συνέχεια, να δημιουργήσει ένα padded για να έχει το ίδιο κατακερματισμό SHA-1.
Από την άλλη πλευρά, ορισμένες επιθέσεις που βασίζονται στο SHAttered συμβαίνουν ήδη στον πραγματικό κόσμο. Το σύστημα ελέγχου έκδοσης SVN χρησιμοποιεί SHA-1 για τη διαφοροποίηση αρχείων. Η μεταφόρτωση των δύο PDF με πανομοιότυπους κατακερματισμούς SHA-1 σε ένα αποθετήριο SVN θα το προκαλέσει να διαφθορά .
Πώς μπορώ να προστατευθώ από τις επιθέσεις SHA-1;
Δεν υπάρχουν πολλά για τον τυπικό χρήστη. Εάν χρησιμοποιείτε αθροίσματα ελέγχου για τη σύγκριση αρχείων, θα πρέπει να χρησιμοποιείτε SHA-2 (SHA-256) ή SHA-3 αντί SHA-1 ή MD5. Ομοίως, εάν είστε προγραμματιστής, φροντίστε να χρησιμοποιήσετε πιο σύγχρονους αλγόριθμους κατακερματισμού όπως SHA-2, SHA-3 ή bcrypt. Εάν ανησυχείτε ότι το SHAttered έχει χρησιμοποιηθεί για να δώσει δύο διαφορετικά αρχεία το ίδιο κατακερματισμό, η Google κυκλοφόρησε ένα εργαλείο στο SHAttered site που μπορεί να σας ελέγξει.
Συντελεστές εικόνας: Lego Firefox , Πολλά Hash , Παρακαλώ μην βλάψετε τον συγγραφέα του Διαδικτύου άγνωστο, Google .