Τι είναι SHAttered; SHA-1 Επιθέσεις σύγκρουσης, Επεξήγηση
Την πρώτη ημέρα του 2016, η Mozilla τερμάτισε την υποστήριξη για μια εξασθενημένη τεχνολογία ασφαλείας που ονομάζεται SHA-1 στον περιηγητή ιστού του Firefox. Σχεδόν αμέσως, αντέστρεψαν την απόφασή τους, καθώς θα μείωνε την πρόσβαση σε μερικούς παλαιότερους ιστότοπους. Αλλά τον Φεβρουάριο του 2017, οι φόβοι τους τελικά έγιναν πραγματικότητα: οι ερευνητές έσπασαν το SHA-1 δημιουργώντας την πρώτη επίθεση σύγκρουσης πραγματικού κόσμου. Ας δούμε τι σημαίνει αυτό.
Τι είναι το SHA-1?
Το SHA στο SHA-1 αντιπροσωπεύει Ασφαλής Αλγόριθμος Hash, και, απλά βάλτε, μπορείτε να το σκεφτείτε ως ένα είδος μαθηματικού προβλήματος ή μεθόδου που ανακατεύει τα δεδομένα που έχουν τεθεί σε αυτό. Αναπτύχθηκε από την NSA των Ηνωμένων Πολιτειών, αποτελεί βασικό στοιχείο πολλών τεχνολογιών που χρησιμοποιούνται για την κρυπτογράφηση σημαντικών μεταδόσεων στο διαδίκτυο. Οι συνήθεις μέθοδοι κρυπτογράφησης SSL και TLS, για τις οποίες ίσως έχετε ακούσει, μπορούν να χρησιμοποιήσουν μια λειτουργία hash όπως SHA-1 για να δημιουργήσουν τα πιστοποιητικά που υπογράψατε στη γραμμή εργαλείων του προγράμματος περιήγησης.
Δεν θα πάμε βαθιά στη μαθηματική και ηλεκτρονική επιστήμη οποιασδήποτε από τις λειτουργίες SHA, αλλά εδώ είναι η βασική ιδέα. Ένας "hash" είναι ένας μοναδικός κώδικας που βασίζεται στην εισαγωγή οποιωνδήποτε δεδομένων. Ακόμη και μικρή, τυχαία σειρά χαρακτήρων που εισάγονται σε μια λειτουργία κατακερματισμού, όπως το SHA-1, θα επιστρέψει έναν μεγάλο αριθμό χαρακτήρων, που θα καταστήσει (δυνητικά) αδύνατη την επαναφορά της σειράς χαρακτήρων πίσω στα αρχικά δεδομένα. Αυτό συμβαίνει συνήθως με την αποθήκευση κωδικού πρόσβασης. Όταν δημιουργείτε έναν κωδικό πρόσβασης, η εισαγωγή του κωδικού σας έχει χασματογραφηθεί και αποθηκευτεί από το διακομιστή. Κατά την επιστροφή σας, όταν πληκτρολογείτε τον κωδικό πρόσβασής σας, εκκαθαρίζεται ξανά. Εάν αντιστοιχεί στον αρχικό κατακερματισμό, η εισαγωγή μπορεί να θεωρηθεί ότι είναι η ίδια και θα έχετε πρόσβαση στα δεδομένα σας.
Οι λειτουργίες Hash είναι χρήσιμες κυρίως επειδή καθιστούν εύκολο να διακρίνουν αν η είσοδος, για παράδειγμα, ένα αρχείο ή ένας κωδικός πρόσβασης, έχει αλλάξει. Όταν τα δεδομένα εισόδου είναι μυστικά, όπως ένας κωδικός πρόσβασης, ο κατακερματισμός είναι σχεδόν αδύνατο να αντιστραφεί και να ανακτήσει τα αρχικά δεδομένα (επίσης γνωστά ως "κλειδί"). Αυτό είναι λίγο διαφορετικό από την "κρυπτογράφηση", ο σκοπός της οποίας είναι η κρυπτογράφηση δεδομένων με σκοπό την αποκρυπτογράφηση αργότερα, χρησιμοποιώντας κρυφά και μυστικά κλειδιά. Οι χασίς προορίζονται απλά για να διασφαλίσουν την ακεραιότητα των δεδομένων - για να βεβαιωθούμε ότι όλα είναι τα ίδια. Το Git, το λογισμικό ελέγχου και διανομής εκδόσεων για κώδικα ανοιχτού κώδικα, χρησιμοποιεί SHA-1 hashes για αυτόν ακριβώς τον λόγο.
Αυτές είναι πολλές τεχνικές πληροφορίες, αλλά για να το πούμε απλά: ένα hash δεν είναι το ίδιο με την κρυπτογράφηση, από τότε χρησιμοποιείται για να προσδιορίσει εάν έχει αλλάξει ένα αρχείο.
Πώς επηρεάζει αυτή η τεχνολογία?
Ας υποθέσουμε ότι πρέπει να επισκεφθείτε έναν ιστότοπο ιδιωτικά. Η τράπεζά σας, το ηλεκτρονικό σας ταχυδρομείο, ακόμα και ο λογαριασμός σας στο Facebook - όλα χρησιμοποιούν κρυπτογράφηση για να διατηρήσουν τα δεδομένα που τους στέλνετε ιδιωτικά. Ένας επαγγελματίας ιστότοπος θα παρέχει κρυπτογράφηση με την απόκτηση πιστοποιητικού από μια αξιόπιστη αρχή -ένα τρίτο μέρος που έχει εμπιστοσύνη για να εξασφαλίσει ότι η κρυπτογράφηση είναι στο επίπεδο, ιδιωτική μεταξύ του ιστότοπου και του χρήστη και δεν είναι κατασκοπεία από κανένα άλλο μέρος. Αυτή η σχέση με το τρίτο μέρος, που ονομάζεται Αρχές πιστοποίησης, ή CA, είναι ζωτικής σημασίας, δεδομένου ότι οποιοσδήποτε χρήστης μπορεί να δημιουργήσει ένα πιστοποιητικό "αυτο-υπογεγραμμένο" - μπορείτε να το κάνετε και εσείς σε μια μηχανή που εκτελεί Linux με Open SSL. Η Symantec και η Digicert είναι για παράδειγμα δύο γνωστές εταιρείες CA.
Ας περάσουμε από ένα θεωρητικό σενάριο: Πώς-To Geek θέλει να κρατήσει logged στις συνεδρίες των χρηστών ιδιωτική με την κρυπτογράφηση, γι 'αυτό υποβάλει αναφορές σε μια ΑΠ όπως η Symantec με ένα Αίτημα υπογραφής πιστοποιητικού, ή CSR. Δημιουργούν ένα δημόσιο κλειδί και ιδιωτικό κλειδί για κρυπτογράφηση και αποκρυπτογράφηση δεδομένων που αποστέλλονται μέσω του διαδικτύου. Η αίτηση CSR αποστέλλει το δημόσιο κλειδί στη Symantec μαζί με πληροφορίες σχετικά με τον ιστότοπο. Η Symantec ελέγχει το κλειδί από το αρχείο του για να επαληθεύσει ότι τα δεδομένα παραμένουν αμετάβλητα από όλα τα μέρη, διότι οποιαδήποτε μικρή αλλαγή στα δεδομένα καθιστά τη ράμπα ριζικά διαφορετική.
Αυτά τα δημόσια κλειδιά και τα ψηφιακά πιστοποιητικά υπογράφονται από λειτουργίες κατακερματισμού, επειδή η έξοδος αυτών των λειτουργιών είναι εύκολο να δει κανείς. Ένα δημόσιο κλειδί και πιστοποιητικό με εξακριβωμένο hash από την Symantec (στο παράδειγμά μας), μια αρχή, διαβεβαιώνει έναν χρήστη του How-To Geek ότι το κλειδί είναι αμετάβλητο και δεν έχει σταλεί από κάποιον κακόβουλο.
Επειδή ο κατακερματισμός είναι εύκολο να παρακολουθηθεί και είναι αδύνατο (μερικοί λένε "δύσκολο") να αντιστραφούν, η σωστή, επαληθευμένη υπογραφή hash σημαίνει ότι το πιστοποιητικό και η σύνδεση μπορεί να είναι αξιόπιστα και ότι τα δεδομένα μπορούν να συμφωνηθούν να αποστέλλονται κρυπτογραφημένα από άκρο σε άκρο . Αλλά τι γίνεται αν το hash δεν ήταν στην πραγματικότητα μοναδική?
Τι είναι μια επίθεση σύγκρουσης, και είναι δυνατόν στον πραγματικό κόσμο?
Ίσως έχετε ακούσει για το «πρόβλημα γενεθλίων» στα μαθηματικά, αν και ίσως να μην γνωρίζατε τι ονομαζόταν. Η βασική ιδέα είναι ότι αν συγκεντρώσετε μια αρκετά μεγάλη ομάδα ανθρώπων, οι πιθανότητες είναι αρκετά υψηλές ώστε δύο ή περισσότεροι άνθρωποι θα έχουν τα ίδια γενέθλια. Υψηλότερο από ό, τι θα περίμενε κανείς, στην πραγματικότητα-αρκετά που φαίνεται σαν μια περίεργη σύμπτωση. Σε μια ομάδα μικρότερη από 23 άτομα, υπάρχει μια πιθανότητα 50% ότι δύο θα μοιραστούν ένα γενέθλιο.
Αυτή είναι η εγγενής αδυναμία σε όλα τα hashes, συμπεριλαμβανομένου του SHA-1. Θεωρητικά, η συνάρτηση SHA θα πρέπει να δημιουργήσει ένα μοναδικό κατακερματισμό για όλα τα δεδομένα που έχουν τεθεί σε αυτήν, αλλά καθώς ο αριθμός των hashes αυξάνεται, γίνεται πιθανότερο ότι διαφορετικά ζεύγη δεδομένων μπορούν να δημιουργήσουν το ίδιο hash. Έτσι, θα μπορούσαμε να δημιουργήσουμε ένα πιστοποιητικό που δεν είναι αξιόπιστο, με ένα όμοιο hash σε ένα αξιόπιστο πιστοποιητικό. Αν σας έκαναν να εγκαταστήσετε αυτό το μη αξιόπιστο πιστοποιητικό, θα μπορούσε να μεταμφιεστεί ως αξιόπιστη και να διανέμει κακόβουλα δεδομένα.
Η εύρεση αντιστοίχισης hash μέσα σε δύο αρχεία ονομάζεται a επίθεση σύγκρουσης. Τουλάχιστον μια επίθεση μεγάλης κλίμακας σύγκρουσης είναι γνωστό ότι έχει ήδη συμβεί για MD5 hashes. Αλλά στις 27 Φεβρουαρίου του 2017, η Google ανακοίνωσε την SHAttered, την πρώτη συγκροτημένη σύγκρουση για το SHA-1. Η Google μπόρεσε να δημιουργήσει ένα αρχείο PDF που είχε το ίδιο hash 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 δολαρίων μπορεί να φανεί πολύ, αλλά είναι μέσα στον τομέα της οικονομικής προσιτότητας για ορισμένους οργανισμούς - πράγμα που σημαίνει ότι οι cybervillians της πραγματικής ζωής θα μπορούσαν να δημιουργήσουν ψηφιακές υπογραφές εγγράφων, να παρεμποδίσουν τα συστήματα ελέγχου αντιγράφων ασφαλείας και εκδόσεων όπως το Git και το SVN.
Ευτυχώς υπάρχουν μετριαστικοί παράγοντες που αποτρέπουν τέτοιες επιθέσεις. Το SHA-1 χρησιμοποιείται σπάνια για ψηφιακές υπογραφές. Οι Αρχές Πιστοποιητικών δεν παρέχουν πλέον πιστοποιητικά που έχουν υπογραφεί με το SHA-1, και το Chrome και ο Firefox έχουν εγκαταλείψει την υποστήριξή τους. Οι διανομές Linux τυπικά εκδίδονται συχνότερα από μία φορά το χρόνο, καθιστώντας έτσι πρακτικό για έναν εισβολέα να δημιουργήσει μια κακόβουλη έκδοση και στη συνέχεια να δημιουργήσει ένα γεμισμένο για να έχει το ίδιο SHA-1 hash.
Από την άλλη πλευρά, μερικές επιθέσεις με βάση το SHAttered συμβαίνουν ήδη στον πραγματικό κόσμο. Το σύστημα ελέγχου SVN χρησιμοποιεί το SHA-1 για να διαφοροποιήσει τα αρχεία. Η μεταφόρτωση των δύο αρχείων PDF με πανομοιότυπα SHA-1 hashes σε ένα χώρο αποθήκευσης SVN θα προκαλέσει βλάβη.
Πώς μπορώ να προστατεύσω τον εαυτό μου από επιθέσεις SHA-1?
Δεν υπάρχουν πολλά για τον τυπικό χρήστη να κάνει. Αν χρησιμοποιείτε αθροίσματα ελέγχου για να συγκρίνετε αρχεία, θα πρέπει να χρησιμοποιήσετε SHA-2 (SHA-256) ή SHA-3 αντί για SHA-1 ή MD5. Ομοίως, εάν είστε προγραμματιστής, βεβαιωθείτε ότι χρησιμοποιείτε πιο σύγχρονους αλγόριθμους κατακερματισμού όπως SHA-2, SHA-3 ή bcrypt. Αν ανησυχείτε ότι το SHAttered έχει χρησιμοποιηθεί για να δώσει δύο διαφορετικά αρχεία το ίδιο hash, η Google έχει κυκλοφορήσει ένα εργαλείο στον ιστότοπο SHAttered που μπορεί να ελέγξει για εσάς.
Συντεταγμένες εικόνας: Lego Firefox, Πολλοί Hash, Παρακαλώ μην βλάψετε το άγνωστο web συγγραφέα, Google.