Keccak

Το Keccak (προφέρεται "ketchak") είναι μια πολύπλευρη συνάρτηση κρυπτογράφησης που αναπτύχθηκε από τους Guido Bertoni, Joan Daemen, Michaël Peeters και Gilles Van Assche. Παρόλο που το Keccak μπορεί να χρησιμοποιηθεί και για άλλους σκοπούς, είναι περισσότερο γνωστό ως συνάρτηση hash που προσφέρει υψηλότερα επίπεδα ασφάλειας σε σύγκριση με παλαιότερους αλγορίθμους hash, όπως οι SHA-1 και SHA-2.

Το SHA (Secure Hash Algorithm) σημαίνει "ασφαλείς αλγόριθμοι hash" και αφορά ένα σύνολο συναρτήσεων κρυπτογράφησης hash που δημοσιεύθηκαν από το Εθνικό Ινστιτούτο Προτύπων και Τεχνολογίας των ΗΠΑ (National Institute of Standards and Technology ή NIST). Τόσο ο SHA-1 όσο και ο SHA-2 αναπτύχθηκαν από την Εθνική Υπηρεσία Ασφαλείας των ΗΠΑ (NSA) και συνεπώς έχουν παρόμοια δομή. Παρόλο που το Keccak υποστηρίζει το ίδιο μέγεθος εκροής (μήκη hash) με το SHA-2, ο μηχανισμός λειτουργίας του είναι αρκετά διαφορετικός. Ωστόσο, το Keccak αποτελεί τμήμα του συστήματος SHA και συχνά αναφέρεται ως SHA-3.

Το 2004 έγιναν θεωρητικές επιθέσεις στον SHA-1 και το 2005 δημοσιεύτηκαν στο κοινό. Μερικά χρόνια αργότερα, το 2011, το SHA-2 δηλώθηκε από το NIST ως η νέα τυποποιημένη συνάρτηση hash που πρέπει να χρησιμοποιείται. Ωστόσο, η μετεγκατάσταση από το SHA-1 στο SHA-2 ήταν αρκετά αργή και μόνο στις αρχές του 2017 ένα μεγάλο ποσοστό προγραμματιστών και επιστημόνων υπολογιστών μετεγκαταστάθηκε τελικά στο SHA-2. Λίγο αργότερα, η Google ανακοίνωσε μια επιτυχημένη επίθεση σύγκρουσης SHA-1 τον Φεβρουάριο του 2017 και έκτοτε, ο SHA-1 δεν θεωρείται πλέον ασφαλής και η χρήση του δεν συνιστάται.
Η συνάρτηση Keccak (SHA-3) άρχισε να αναπτύσσεται γύρω στο 2007, αφού το NIST προκήρυξε δημόσιο διαγωνισμό και διαδικασία ελέγχου, αναζητώντας μια νέα συνάρτηση κρυπτογράφησης hash που θα μπορούσε να ξεπεράσει τις πιθανές αδυναμίες των προηγούμενων SHA-1 και SHA-2.

Παρόλο που δεν έχει εκδηλωθεί ακόμη καμία σημαντική επίθεση στον SHA-2, αναμένεται ότι οι συναρτήσεις hash παραβιάζονται με την πάροδο του χρόνου και χρειάζονται χρόνια για να αναπτυχθεί μια νέα τυποποιημένη συνάρτηση. Αν ληφθεί αυτό υπόψη, καθώς και τις επιτυχείς επιθέσεις κατά του SHA-1 το 2004 και το 2005, το NIST έκρινε ότι έπρεπε να δημιουργηθεί ένας νέος κρυπτογραφικός αλγόριθμος hash. Το 2012, το NIST ανακοίνωσε ότι ο Keccak ήταν ο αλγόριθμος που κέρδισε τον διαγωνισμό και τυποποιήθηκε ως το νεότερο μέλος της οικογένειας SHA (συνεπώς, SHA-3). 

Ένας από τους λόγους για τους οποίους το NIST επέλεξε τον Keccak είναι η πρωτοποριακή δομή του, η οποία αποδείχθηκε πιο ασφαλής και αποδοτική από αυτήν των άλλων αλγορίθμων. Από τυπική άποψη, ο αλγόριθμος SHA-3 βασίζεται στις λεγόμενες συναρτήσεις sponge (ή δομή sponge) - σε αντίθεση με τη δομή Merkle Damgård που χρησιμοποιείται από τους SHA-1 και SHA-2.

Για την ώρα, ο SHA-2 εξακολουθεί να θεωρείται ασφαλής και χρησιμοποιείται πολύ συχνά. Για παράδειγμα, ο SHA-256 χρησιμοποιείται από το Bitcoin και άλλα κρυπτονομίσματα και παίζει καθοριστικό ρόλο στη διαδικασία εξόρυξης. Μπορεί να παρατηρήσουμε μεγαλύτερη υιοθέτηση του SHA-3 στο μέλλον, καθώς φαίνεται ότι δεν πρόκειται να δεχτεί καμία επιτυχημένη επίθεση. Παρόλα αυτά, τα επόμενα χρόνια θα δούμε να αναπτύσσονται περισσότεροι κρυπτογραφικοί αλγόριθμοι hash, καθώς ο τομέας της κρυπτογράφησης εξελίσσεται και ανακαλύπτονται νέα σφάλματα.