Σοβαρή ασφάλεια: Το MD5 θεωρείται επιβλαβές – ύψους 600,000 $ PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Σοβαρή ασφάλεια: Το MD5 θεωρείται επιβλαβές – ύψους 600,000 $

Σε μια συναρπαστική νομική συζήτηση που έγινε από τη γαλλική ρυθμιστική αρχή προστασίας δεδομένων CNIL (Εθνική Επιτροπή Πληροφορικής και Ελευθεριών), η ενεργειακή εταιρεία Électricité de France, ή εν συντομία EDF, ήταν πρόστιμο 600,000 ευρώ (περίπου 600,000 $).

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

Τα πρώτα τρία αφορούν γενικές αλληλεπιδράσεις που σχετίζονται με δεδομένα με πελάτες, καλύπτοντας:

  • Αποστολή εμπορικών email marketing χωρίς την κατάλληλη συναίνεση.
  • Συλλογή δεδομένων χωρίς να διευκρινίζεται τι και γιατί.
  • Δεν χειρίζεται αξιόπιστα αιτήματα όταν οι πελάτες ζήτησαν να δουν τα δεδομένα τους, ή να τα διαγράψουν.

Αλλά είναι το τελευταίο παράπονο που μας κέντρισε το ενδιαφέρον: Sur le manquement à l'obligation d'assurer la sécurité des données.

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

Το MD5 θεωρείται επιβλαβές

Η ρυθμιστική αρχή σημείωσε, μεταξύ άλλων, ότι παρά τον ισχυρισμό ότι χρησιμοποιούσε έναν αποδεκτό αλγόριθμο κατακερματισμού, η EDF εξακολουθούσε να έχει «ασφαλισμένους» κωδικούς πρόσβασης περισσότερων από 25,000 χρηστών με έναν μόνο κατακερματισμό MD5 μόλις τον Ιούλιο του 2022.

Όπως θα έχετε ακούσει πολλές φορές στο Naked Security, η αποθήκευση του κρυπτογραφικός κατακερματισμός ενός κωδικού πρόσβασης σημαίνει ότι μπορείτε να επικυρώσετε έναν κωδικό πρόσβασης όταν παρουσιάζεται απλώς υπολογίζοντας εκ νέου τον κατακερματισμό του και συγκρίνοντάς τον με τον κατακερματισμό του κωδικού πρόσβασης που είχε αρχικά επιλεγεί.

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

Όταν παρουσιάζεται, ο κωδικός πρόσβασης χρειάζεται να διατηρείται μόνο προσωρινά στη μνήμη και μπορεί να απορριφθεί μόλις υπολογιστεί ο κατακερματισμός του.

Εφόσον ο αλγόριθμος κατακερματισμού θεωρείται κρυπτογραφικά ασφαλής, δεν μπορεί να «εκτελείται αντίστροφα», επομένως δεν μπορείτε να εργαστείτε προς τα πίσω από τον κατακερματισμό για να αποκαλύψετε οτιδήποτε σχετικά με τον ίδιο τον κωδικό πρόσβασης. (Ένας κατακερματισμός αυτού του είδους είναι γνωστός στην ορολογία ως α μονόδρομη λειτουργία.)

Ομοίως, ένας αξιοπρεπής αλγόριθμος κατακερματισμού σάς εμποδίζει να ξεκινήσετε με ένα γνωστό κατακερματισμό και να επινοήσετε κάποια τιμή εισόδου – οποιαδήποτε είσοδο, όχι απαραίτητα τον αρχικό κωδικό πρόσβασης – που παράγει τον επιθυμητό κατακερματισμό.

Θα χρειαστεί να δοκιμάσετε εισαγωγή μετά από εισαγωγή μέχρι να σταθείτε τυχεροί, κάτι που για κατακερματισμούς ακόμη και 128 bit θα έπαιρνε πολύ χρόνο για να είναι μια πρακτική επίθεση. (Ένας κατακερματισμός με την προφύλαξη ασφαλείας να μην σας επιτρέπει να υπολογίσετε πολλές εισόδους με την ίδια έξοδο λέγεται ότι είναι ανθεκτικό σε σύγκρουση.)

Αλλά το MD5, όπως πιθανότατα γνωρίζετε, έχει σημαντικά προβλήματα με τις συγκρούσεις, όπως και το δικό του άμεσος διάδοχος SHA-1 (και τα δύο αυτά hashes βγήκαν στις αρχές της δεκαετίας του 1990).

Σήμερα, κανένας αλγόριθμος δεν συνιστάται για χρήση οπουδήποτε, από κανέναν, για οποιονδήποτε σκοπό, δεδομένου ότι υπάρχουν παρόμοιες αλλά ασφαλείς εναλλακτικές λύσεις που μπορούν εύκολα να χρησιμοποιηθούν για την αντικατάστασή τους, όπως το SHA-256 και το SHA-512:

Οι κατακερματισμοί MD5 έχουν μήκος 128 bit ή 16 byte. Τα SHA-256 και SHA-512 έχουν μήκος 2x και 4x αντίστοιχα. Αλλά δεν είναι μόνο αυτό το επιπλέον μήκος κατακερματισμού που τα κάνει πιο κατάλληλα. Το κύριο πλεονέκτημά τους έναντι του MD5 είναι ότι δεν έχουν συγκεκριμένα γνωστά προβλήματα με συγκρούσεις, επομένως η κρυπτογραφική τους ασφάλεια δεν θεωρείται γενικά αμφίβολη ως αποτέλεσμα.

Αλάτισμα και τέντωμα

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

Ακόμα χειρότερο, όμως, ήταν η έλλειψη αλάτι, όπου ένα κομμάτι δεδομένων που επιλέγεται τυχαία για κάθε χρήστη αναμιγνύεται με τον κωδικό πρόσβασης πριν υπολογιστεί ο κατακερματισμός του.

Ο λόγος για ένα αλάτι είναι απλός: διασφαλίζει ότι οι τιμές κατακερματισμού των πιθανών κωδικών πρόσβασης δεν μπορούν να υπολογιστούν εκ των προτέρων και στη συνέχεια να ληφθούν μαζί για να βοηθήσουν σε μια επίθεση.

Χωρίς αλάτι, κάθε φορά που οποιοσδήποτε χρήστης επιλέγει τον κωδικό πρόσβασης 123456, οι απατεώνες ξέρουν εκ των προτέρων ποιο θα είναι το hash του.

Ακόμα κι αν ο χρήστης επιλέξει έναν πιο κατάλληλο κωδικό πρόσβασης, όπως π.χ 34DF6467!Lqa9, μπορείτε να πείτε εκ των προτέρων ότι ο κατακερματισμός του MD5 θα είναι 7063a00e 41866d47 f6226e60 67986e91.

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

Το αλάτισμα σημαίνει ότι θα χρειαστείτε ένα πλήρες, προυπολογισμένο τραπέζι ουράνιου τόξου για κάθε χρήστη (ο πίνακας καθορίζεται από το συνδυασμό αλατιού + κωδικού πρόσβασης) και δεν θα μπορείτε να υπολογίσετε κάθε πίνακα ουράνιου τόξου – μια εργασία που μπορεί να διαρκέσει αρκετές εβδομάδες και να καταλαμβάνει terabyte χώρου στο δίσκο – μέχρι να ανακτήσετε τα άλατα ούτως ή άλλως,

Αλλά υπάρχουν περισσότερα που πρέπει να κάνετε.

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

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

Σε αντίθεση με την επαναλαμβανόμενη πρόσθεση, όπου μπορείτε να χρησιμοποιήσετε έναν πολλαπλασιασμό ως συντόμευση για να αντικαταστήσετε, για παράδειγμα, τον υπολογισμό 5+5+5+5+5+5 με 6×5, δεν υπάρχουν συντομεύσεις για επαναλαμβανόμενους κατακερματισμούς. Για να κατακερματίσετε μια είσοδο 1000 φορές απαιτούνται 1000 «στροφές» της λαβής κρυπτογραφικού υπολογισμού.

Όχι μόνο πρόβλημα MD5

Κατά ειρωνικό τρόπο, φαίνεται ότι παρόλο που η EDF είχε μόνο 25,800 κωδικούς πρόσβασης κατακερματισμένους με το MD5 και ισχυρίστηκε στην υπεράσπισή της ότι χρησιμοποιούσε ως επί το πλείστον SHA-512 αντ' αυτού, και πάλι δεν αλάτιζε ή τέντωνε πάντα τους αποθηκευμένους κατακερματισμούς.

Η ρυθμιστική αρχή αναφέρει ότι 11,200,000 κωδικοί πρόσβασης είχαν σωστά αλατιστεί και κατακερματιστεί, αλλά παρόλα αυτά υπήρχαν 2,400,000 που είχαν απλώς κατακερματιστεί απευθείας μία φορά, είτε με MD5 είτε με SHA-512.

Προφανώς, η EDF έχει τώρα την αποθήκευση του κωδικού πρόσβασης μέχρι το μηδέν, αλλά η εταιρεία επιβλήθηκε ούτως ή άλλως πρόστιμο 600,000 ευρώ και θα παραμείνει δημόσια εισηγμένη στο διαδίκτυο στο «άτακτο βήμα» της CNIL για τα επόμενα δύο χρόνια.

Δεν μπορούμε να είμαστε σίγουροι ποιο πρόστιμο θα είχε επιβληθεί εάν η απόφαση αφορούσε μόνο κακό κατακερματισμό και η EDF δεν χρειαζόταν επίσης να απαντήσει για τα τρία άλλα αδικήματα προστασίας δεδομένων που αναφέρονται στην αρχή…

…αλλά δείχνει ότι οι κακές κρυπτογραφικές επιλογές μπορεί να σας κοστίσουν χρήματα με περισσότερους από έναν τρόπους!

Τι να κάνω;

Αποθηκεύστε τους κωδικούς πρόσβασης των πελατών σας ασφαλώς!

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

Μια επίθεση ανάκτησης κωδικού πρόσβασης που μπορεί να χρειαστεί μια εβδομάδα για την εξαγωγή του 10% των κωδικών πρόσβασης που είναι αποθηκευμένοι ως απλοί κατακερματισμοί μιας λήψης θα χρειαζόταν, θεωρητικά, 200 χρόνια (10,000 εβδομάδες) εάν κάνατε το κόστος υπολογισμού κάθε δοκιμαστικού κωδικού πρόσβασης 10,000 φορές πιο δύσκολο .

Διαβάστε μας εξαιρετικό επεξηγητικό άρθρο σε αυτό ακριβώς το θέμα:

Εν ολίγοις, προτείνουμε το PBKDF2 αλγόριθμος «stretching» με SHA-256 ως κατακερματισμός πυρήνα του, με τυχαίο ανά χρήστη salt of 16 bytes (128 bit) ή περισσότερα.

Αυτό ταιριάζει με τις συστάσεις στην τελευταία κρίση του CNIL.

Το CNIL δεν προσφέρει συμβουλές για τον αριθμό των επαναλήψεων PBKDF2, αλλά όπως θα δείτε στο άρθρο μας, η συμβουλή μας (Οκτώβριος 2022) είναι να χρησιμοποιήσετε 200,000 or more. (Μπορείτε να αυξάνετε τακτικά τον αριθμό των βρόχων για να συμβαδίζετε με την αύξηση της υπολογιστικής ισχύος.)

Εάν δεν θέλετε να χρησιμοποιήσετε το PBKDF2, σας προτείνουμε να διαβάσετε τους αλγόριθμους bcrypt, scrypt και Argon2 για να σας βοηθήσει να κάνετε μια σοφή επιλογή.

Μην παρασυρθείτε στο κρυπτογραφικό άτακτο βήμα!


Σφραγίδα ώρας:

Περισσότερα από Γυμνή ασφάλεια