ΕΛ/ΛΑΚ | creativecommons.gr | mycontent.ellak.gr |
freedom

SHA1 collision: Τι σημαίνει και ποια είναι η σημασία του

Ίσως τις τελευταίες μέρες να έχετε διαβάσει αναφορές στο πρόσφατο SHA1 collision και τις συνέπειές του. Διόλου ασήμαντο γεγονός, αν και δεν έχει τις διαστάσεις που του προσδίδουν ορισμένοι. Έγινε μάλιστα και μια μικρή -και ανόητη- επίθεση στον Linus Torvalds, με αφορμή τη χρήση του SHA1 από το git. Παρακάτω θα προσπαθήσουμε να εξηγήσουμε τι συνέβη, πώς έγινε και τι πραγματικά σημαίνει, σε όσο το δυνατόν απλούστερη γλώσσα.

 

Τι είναι το SHA1

Το SHA1 (Secure Hash Algorithm 1) είναι cryptographic hash function (κρυπτογραφική συνάρτηση κατακερματισμού στα Ελληνικά). Μια μαθηματική συνάρτηση δηλαδή, από αυτές που τσουβαλιάζουμε με τον όρο «αλγόριθμοι». Η λειτουργία του είναι αντίστοιχη με άλλες τέτοιες συναρτήσεις: του δίνουμε κάποια δεδομένα και μας επιστρέφει έναν ακέραιο αριθμό σταθερού μεγέθους. Ο αριθμός αυτός εκφράζεται συνήθως με το δεκαεξαδικό σύστημα, έχει μήκος 40 ψηφία ενώ το μέγεθός του μπορεί να ξεκινάει από τα 32bits και να ξεπερνάει τα 256. Αναφέρεται δε ως «hash sum» ή πιο απλά «hash». Τα δεδομένα που θα του δώσουμε μπορούν να είναι οτιδήποτε, από μια απλή φράση ή ένα αρχείο κειμένου μέχρι εικόνες και βίντεο. Ενδεικτικά, το SHA1 hash της φράσης «Μαθαίνουμε για το SHA1», χωρίς τα εισαγωγικά βεβαίως, είναι 81761f2fe4807e11248b90f0a150e74f39cdcbc5.

Όπως και αρκετά άλλα πράγματα στο ίδιο πεδίο, το SHA1 είναι δημιούργημα της γνωστής και μη εξαιρετέας N.S.A. Εμφανίστηκε το 1993, χρησιμοποιείται στο χώρο της κρυπτογραφίας και αυτό που κάνει βασικά είναι να ταυτοποιεί δεδομένα. Αυτό επιτυγχάνεται γιατί ο αριθμός που μας δίνει το SHA1 ως αποτέλεσμα είναι απόλυτα συνδεδεμένος με τα δεδομένα που θα του εισάγουμε κι έτσι είναι μοναδικός για κάθε εισαγωγή. Λέγοντας «κρυπτογραφία» όμως, δεν εννοούμε μόνο μυστικές υπηρεσίες και παιχνίδια κατασκοπείας αλλά και απλά, καθημερινά θέματα που είναι μεν σημαντικά, μας απασχολούν δε ελάχιστα· τα SSL πιστοποιητικά που χρησιμοποιούν όλοι οι browsers είναι ένα τέτοιο παράδειγμα.

 

Τι συνέβη και με ποιο τρόπο

Αυτό που συνέβη ήταν ότι η ως άνω μέθοδος κρυπτογράφησης παραβιάστηκε. «Έσπασε», όπως συνηθίζουμε να λέμε. Φυσικά, δεν είναι η πρώτη φορά που γίνεται κάτι τέτοιο και σίγουρα δε θα είναι η τελευταία. Το SHA1 άντεξε κάτι παραπάνω από 20 χρόνια, η παραβίασή του όμως είχε προβλεφθεί πολύ καιρό πριν, ενώ το θεωρητικό μοντέλο αυτής υπήρχε δημοσιευμένο ήδη από το 2012. Στις 23 Φεβρουαρίου του τρέχοντος έτους λοιπόν έγινε απλά κάτι που ήταν αναμενόμενο για τους ειδικούς του χώρου: ανακοινώθηκε το πρώτο καταγεγραμμένο SHA1 collision.

Όπως είπαμε παραπάνω, το hash που παίρνουμε όταν κρυπτογραφούμε κάτι -στην περίπτωσή μας με τη χρήση του SHA1- είναι μοναδικό για κάθε εισαγωγή. Αυτό σημαίνει ότι, αν η λειτουργία της κρυπτογράφησης είναι σωστή, είναι αδύνατο να υπάρξει παρέμβαση/αλλοίωση (δε χρειάζονται πολλά, ακόμα και η αλλαγή ενός και μόνο χαρακτήρα αρκεί) στα δεδομένα μας χωρίς να αλλάξει το αντίστοιχο hash. Ή τουλάχιστον ήταν αδύνατο μέχρι να σημειωθεί το collision.

Collision attack ονομάζεται το είδος επίθεσης όπου επιχειρείται η ανεύρεση δύο διαφορετικών εισαγωγών σε μια κρυπτογραφική συνάρτηση που να παράγουν το ίδιο hash, πετυχαίνοντας έτσι τη σύγκρουση (collision) αυτών. Είναι δε μαθηματικά βέβαιο ότι κάθε κρυπτογραφική συνάρτηση είναι ευάλωτη σε μια τέτοια επίθεση.

Πώς γίνεται όμως να είναι κάτι αδύνατο και ταυτόχρονα αναμενόμενο; Γίνεται, για δύο λόγους. Από τη μία, όταν πρόκειται για την κρυπτογραφία, στην πραγματικότητα αυτό που αποκαλούμε «αδύνατο» σημαίνει «χρονοβόρο/κοστοβόρο». Κι από την άλλη, οι έννοιες διαφέρουν λίγο, ανάλογα με το αν βρισκόμαστε εντός ή εκτός του πεδίου που ασχολείται με την κρυπτογραφία. Πιο συγκεκριμένα, σε αντίθεση με αυτά που αναφέρονται συνήθως, μια μέθοδος κρυπτογράφησης μπορεί να θεωρείται «σπασμένη» και παράλληλα να εξακολουθεί να βρίσκεται σε πλήρη χρήση. Αυτό συμβαίνει γιατί, για τον «απλό κόσμο» και γενικότερα όσον αφορά την πρακτική εφαρμογή, η κρυπτογράφηση λογίζεται ως «σπασμένη» όταν υπάρξει επιτυχής παραβίασή της, ενώ για τους ειδικούς αρκεί να προκύψει ένα θεωρητικό μοντέλο το οποίο επιτρέπει την παραβίαση σε μικρότερο χρονικό διάστημα και με λιγότερους πόρους από όσο χρειάζεται μια επίθεση «brute force».

Brute force attack αποκαλούμε το -συνηθέστερο αλλά δυσκολότερο- είδος επίθεσης κατά το οποίο ο επιτιθέμενος χρησιμοποιεί μια μέθοδο «δοκιμής-και-λάθους», στην προσπάθειά του να μαντέψει πληροφορίες. Μια τέτοια μέθοδος είναι η δοκιμή ανεύρεσης ενός password με τη χρήση λεξικού. 

Πάμε τώρα να δούμε πώς επετεύχθη το περιβόητο SHA1 collision και μερικά πραγματικά νούμερα που δηλώνουν το αξιοθαύμαστο -από τεχνικής πλευράς- του γεγονότος.

Όπως αναφέρθηκε, το θεωρητικό μοντέλο που οδηγούσε στην παραβίαση του SHA1 με collision δημοσιεύτηκε το 2012 από τον Dr. Marc Stephens, ειδικό ερευνητή κρυπτολογίας του Centrum Wiskunde & Informatica (Κέντρο Μαθηματικών και Επιστήμης Υπολογιστών) της Ολλανδίας. Εννοείται πως δεν έμεινε άπραγος από τότε αλλά επιχειρούσε, σε συνεργασία με άλλους ειδικούς του ίδιου Κέντρου αλλά και της Google, να κάνει τη θεωρία πράξη. Χρησιμοποιώντας τις υποδομές της Google, ήτοι τους υπερυπολογιστές που διαθέτει αυτή, και έπειτα από μόλις πέντε χρόνια, η ομάδα κατάφερε να δημιουργήσει δύο αρχεία PDF με διαφορετικό περιεχόμενο αλλά ολόιδιο SHA1 hash, παραβιάζοντας έτσι την κρυπτογράφηση. Αυτό που πρέπει να αναφερθεί εδώ είναι ότι το περιεχόμενο των αρχείων PDF που δημοσιεύτηκαν ως απόδειξη δεν έχει ιδιαίτερη σημασία, γιατί με τον ίδιο τρόπο μπορούν να αλλοιωθούν οποιαδήποτε άλλα PDF.

Η αλήθεια όμως είναι ότι αυτά τα πέντε χρόνια μπορεί να φαντάζουν αρκετά σύντομο χρονικό διάστημα αλλά δεν είναι. Χρειάστηκαν περισσότερα, πολλά περισσότερα. Το ίδιο και πόροι.

Σύμφωνα με τα νούμερα που ανέφερε η ομάδα, απαιτήθηκαν:

• 9,2 πεντάκις (ναι, πεντάκις) εκατομμύρια υπολογισμοί SHA1
• 6.500 χρόνια υπολογισμών CPU για την πρώτη φάση της επίθεσης
• 110 χρόνια υπολογισμών CPU για τη δεύτερη φάση

Βλέπετε, μπορεί να μην έχουμε (ακόμα) τρόπο για να ταξιδέψουμε στο χρόνο, έχουμε όμως τη δυνατότητα να τον επιταχύνουμε, έστω κι αν αυτό συμβαίνει στο εσωτερικό μιας μηχανής. Κι αν δε σας αρκούν τα νούμερα αυτά, να πούμε επίσης ότι ο συγκεκριμένος τρόπος επίθεσης είναι περίπου 100.000 φορές γρηγορότερος από το brute force.

Ποια η σημασία για εμάς

Εφόσον μιλάμε για πρακτική παραβίαση μιας μεθόδου κρυπτογράφησης, η οποία να σημειωθεί ότι χρησιμοποιείται σε αρκετούς τομείς, το γεγονός μας επηρεάζει όλους και κανένας δε μπορεί να ισχυριστεί το αντίθετο. Ήδη υπήρξε πρόβλημα στο SVN και πιο συγκεκριμένα στο αποθετήριο πηγαίου κώδικα του WebKit, όταν κάποιος ανέβασε δύο ανάλογα «πειραγμένα» PDFs ως proof of concept και για έλεγχο ευπαθειών, ενώ το SHA1 χρησιμοποιείται μεταξύ άλλων και από το git. Δεν καταρρέει όμως το σύμπαν, ούτε και θα αλωθούν μεμιάς τα υπολογιστικά συστήματα.

Τα SVN (Subversion) και git είναι version control systems/συστήματα ελέγχου εκδόσεων, που φιλοξενούν τον πηγαίο κώδικα διαφόρων έργων και εκεί φυσικά λαμβάνει χώρα η ανάπτυξή του.

Κι εδώ θα μιλήσουμε λίγο για τη χαζή ίντριγκα του θέματος. Είπαμε ότι το SHA1 collision επηρεάζει (θεωρητικά) και το git, δημιουργός του οποίου δεν είναι άλλος από τον Linus Torvalds. Όπως ήταν φυσικό λοιπόν, υπήρξε κάποιο ενδιαφέρον και ερωτήσεις προς εκείνον σχετικά με το αν είναι φρόνιμο να εξακολουθήσει να χρησιμοποιείται το SHA1 αλλά και γιατί δεν είχε επιλέξει κάποια άλλη μέθοδο. Δεν έλειψε μάλιστα και μια μικρή επίθεση από έναν καθηγητή κρυπτογραφίας στο Πανεπιστήμιο Johns Hopkins των Η.Π.Α., ο οποίος σε ανάρτησή του στο Twitter είπε τα εξής:

Δε θέλω να δείξω ασέβεια προς τον Linus αλλά γιατί δεν άλλαξε το git σε SHA2 πριν από πέντε χρόνια αντί να δικαιολογεί σημέρα το SHA1;

Φαίνεται εύλογο το ερώτημα με την πρώτη ματιά, σωστά; Υπάρχουν όμως δύο μικρές λεπτομέρειες: αρχικά, ο Linus έχει μεταβιβάσει τον έλεγχο και τη διαχείριση του git σε άλλο προγραμματιστή (Junio C Hamano) από το 2005 -που σημαίνει ότι, ακόμα κι αν ήθελε, δε θα μπορούσε να αλλάξει ο ίδιος κάτι «πριν από πέντε χρόνια». Επίσης, ουδέποτε δικαιολόγησε τη χρήση του SHA1 από το git. Αυτό που έκανε ήταν ότι αφενός μεν έθεσε το όλο θέμα στις πραγματικές του διαστάσεις, λέγοντας ότι

Δεν πέφτει ο ουρανός

αφετέρου δε εξήγησε κατ’ επανάληψη ότι το git δε χρησιμοποιεί το SHA1 με τρόπο που να επηρεάζεται άμεσα. Αλλά ποιος προσέχει τι λένε οι άλλοι, ε;

Επιστρέφουμε, λίγο πριν το τέλος, στη σημασία που έχει το SHA1 collision για εμάς. Θυμηθείτε τα νούμερα που αναφέραμε παραπάνω. Όπως μπορείτε να συμπεράνετε, παρ’ όλο που υπάρχει τρόπος παραβίασης, δεν είναι κάτι που μπορεί να το πετύχει ο Μπάμπης ο «χάκερ» στο υπόγειό του (εκτός βέβαια κι αν το υπόγειό του βρίσκεται στις εγκαταστάσεις της Google ή σε κάποιον άλλο χώρο όπου ζουν υπερυπολογιστές). Δεν πρόκειται δηλαδή για κάτι εύκολο και βέβαια δεν είναι τόσο «τραγικό» όσο το παρουσιάζουν κάποιοι. Έγινε λόγος για το ότι η «ευαισθησία» του SHA1 ήταν γνωστή εδώ και κάμποσα χρόνια, ενώ υπήρχαν και εξακολουθούν να υπάρχουν τρόποι για να προστατευτούμε. Μπορούμε για παράδειγμα να πούμε στον browser μας να μη δέχεται SSL πιστοποιητικά που χρησιμοποιούν το SHA1. Ενδεχομένως αυτό να μην ισχύει για όλους τους browsers στην παρούσα φάση, οι πιο σημαντικοί εξ αυτών όμως βρίσκονται ήδη σε διαδικασία μετάβασης. Το ίδιο θα γίνει σταδιακά και σε βάθος χρόνου με οτιδήποτε χρησιμοποιεί με κάποιο τρόπο την προαναφερθείσα μέθοδο κρυπτογράφησης.

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

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

 

Πηγή άρθρου: http://osarena.net/

Leave a Comment