Το SHA είναι ένα ακρωνύμιο του Secure Hash Algorithm, ένα πρότυπο κρυπτογράφησης που επινοήθηκε από την Εθνική Υπηρεσία Ασφαλείας και δημοσιεύτηκε από τα Εθνικά Ινστιτούτα Προτύπων και Τεχνολογίας. Ο αρχικός αλγόριθμος SHA βρέθηκε να έχει αδυναμίες στις μεθόδους κρυπτογράφησης και αντικαταστάθηκε με SHA-1 για μεγαλύτερη ασφάλεια.
Ασφαλής αλγόριθμος κατακερματισμού
Το SHA είναι μια κρυπτογραφική συνάρτηση κατακερματισμού. Μια συνάρτηση κατακερματισμού παίρνει ένα αρχικό μη κρυπτογραφημένο κείμενο, που ονομάζεται απλό κείμενο, και παράγει έναν θεωρητικά μοναδικό αριθμό που αποτελεί το κρυπτογραφημένο μήνυμα. Το SHA δημιουργεί έναν αριθμό 160-bit, ο οποίος είναι ένας αριθμός μεταξύ 0 και 1,46 x 10^48. Δεν είναι δυνατόν αυτός ο αριθμός να είναι εγγυημένος μοναδικός για όλα τα πιθανά μηνύματα απλού κειμένου, καθώς ο αριθμός αυτών των μηνυμάτων είναι θεωρητικά άπειρες, αλλά οι πιθανότητες είναι περίπου 2^80, ή 1,21 x 10^24, έναντι δύο μηνυμάτων που παράγουν το ίδιο κρυπτογραφημένο αποτέλεσμα. Εάν συμβεί αυτό, αυτό ονομάζεται σύγκρουση. Μια σύγκρουση παρέχει μια μαθηματική επίθεση σε έναν αλγόριθμο κρυπτογράφησης, καθιστώντας δυνατή για έναν κρυπτογράφο να αποκρυπτογραφήσει το απλό κείμενο.
Το βίντεο της ημέρας
SHA-0 και SHA-1
Μετά τη δημοσίευσή του, ανακαλύφθηκαν ελαττώματα στον αρχικό αλγόριθμο SHA που επέτρεπαν μια κρυπτογραφική επίθεση να προκαλέσει συγκρούσεις κατακερματισμού, αποδυναμώνοντας σοβαρά την αποτελεσματικότητά του. Αναπτύχθηκε μια αναθεωρημένη έκδοση SHA, το SHA-1, που δημιούργησε τα ίδια αποτελέσματα 160-bit χωρίς τα αρχικά ελαττώματα στον αλγόριθμο. Το αρχικό SHA μετονομάστηκε αναδρομικά σε SHA-0 για να γίνει διάκριση μεταξύ της χρήσης του και της χρήσης του SHA-1.
Αλλαγές στο SHA-1
Τα αρχικά ελαττώματα στο SHA-0 δεν έχουν δημοσιευθεί ποτέ, καθώς αυτά τα ελαττώματα παρέχουν μια εργαλειοθήκη για κάθε εισβολέα που προσπαθεί να αποκρυπτογραφήσει ένα μήνυμα χρησιμοποιώντας κρυπτογράφηση SHA-0. Οι μόνες δημόσιες πληροφορίες σχετικά με τις αδυναμίες στον αρχικό αλγόριθμο δείχνουν ότι οι συγκρούσεις κατακερματισμού είναι πιο πιθανές παρά από τυχαία πιθανότητα κατά τη χρήση του SHA-0 και ότι οι συγκρούσεις που χρησιμοποιούν την αδημοσίευτη μέθοδο εξαλείφονται κατά τη χρήση SHA-1. Δεδομένου ότι τα SHA-1 και SHA-0 παράγουν μαθηματικά αποτελέσματα του ίδιου μήκους, το SHA-1 μπορεί να χρησιμοποιηθεί ως εναλλακτική λύση σε λογισμικό υπολογιστή για τον αρχικό αλγόριθμο SHA-0 χωρίς να απαιτούνται σημαντικές επανεγγραφές στο υπόλοιπο λογισμικό.
SHA-2 και SHA-3
Το SHA-1 έχει βρεθεί ότι είναι πιο ανθεκτικό από το SHA-0, αλλά αφήνει περιθώρια βελτίωσης. Μια μαθηματική ανάλυση των αποτελεσμάτων SHA-1 έδειξε μια μέθοδο με την οποία η κρυπτογράφηση SHA-1 μπορούσε να σπάσει 2.000 φορές πιο γρήγορα από ό, τι θα ήταν θεωρητικά δυνατό ελέγχοντας και τους 10^48 πιθανούς συνδυασμούς του παραγωγή. Καθώς ένας ιδανικός κρυπτογραφικός αλγόριθμος αποτρέπει τέτοιες βελτιώσεις στην ταχύτητα αποκρυπτογράφησης, ο αλγόριθμος SHA-2 αποφεύγει αυτήν την επίθεση και αυξάνει το πιθανό μέγεθος κατακερματισμού σε 512-bit ή 1,34 x 10^154. Ο SHA-3, ένας ακόμα πιο ισχυρός αλγόριθμος κρυπτογράφησης, βρίσκεται επί του παρόντος σε ανάπτυξη.