Έκδοση της υλοποίησης αναφοράς της κρυπτογραφικής συνάρτησης κατακερματισμού BLAKE3 1.0

Κυκλοφόρησε μια εφαρμογή αναφοράς της κρυπτογραφικής συνάρτησης κατακερματισμού BLAKE3 1.0, η οποία είναι αξιοσημείωτη για την πολύ υψηλή απόδοση υπολογισμού κατακερματισμού, ενώ παράλληλα διασφαλίζει την αξιοπιστία σε επίπεδο SHA-3. Στη δοκιμή δημιουργίας κατακερματισμού για ένα αρχείο 16 KB, το BLAKE3 με κλειδί 256 bit ξεπερνά το SHA3-256 κατά 17 φορές, το SHA-256 κατά 14 φορές, το SHA-512 κατά 9 φορές, το SHA-1 κατά 6 φορές και το BLAKE2b - 5 φορές. Ένα σημαντικό κενό παραμένει κατά την επεξεργασία πολύ μεγάλων ποσοτήτων δεδομένων, για παράδειγμα, το BLAKE3 αποδείχθηκε ότι ήταν 256 φορές ταχύτερο από το SHA-8 κατά τον υπολογισμό ενός κατακερματισμού για 1 GB τυχαίων δεδομένων. Ο κώδικας εφαρμογής αναφοράς BLAKE3 είναι διαθέσιμος σε εκδόσεις C και Rust με άδεια διπλού δημόσιου τομέα (CC0) και Apache 2.0.

Έκδοση της υλοποίησης αναφοράς της κρυπτογραφικής συνάρτησης κατακερματισμού BLAKE3 1.0

Η συνάρτηση κατακερματισμού έχει σχεδιαστεί για εφαρμογές όπως ο έλεγχος ακεραιότητας αρχείων, ο έλεγχος ταυτότητας μηνυμάτων και η δημιουργία δεδομένων για κρυπτογραφικές ψηφιακές υπογραφές. Το BLAKE3 δεν προορίζεται για κατακερματισμό κωδικών πρόσβασης, καθώς στοχεύει στον υπολογισμό των κατακερματισμών όσο το δυνατόν γρηγορότερα (για τους κωδικούς πρόσβασης, συνιστάται η χρήση των συναρτήσεων αργού κατακερματισμού yescrypt, bcrypt, scrypt ή Argon2). Η υπό εξέταση συνάρτηση κατακερματισμού δεν είναι ευαίσθητη στο μέγεθος των κατακερματισμένων δεδομένων και προστατεύεται από επιθέσεις στην επιλογή σύγκρουσης και την εύρεση προεικόνας.

Ο αλγόριθμος αναπτύχθηκε από γνωστούς ειδικούς κρυπτογραφίας (Jack O'Connor, Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn) και συνεχίζει την ανάπτυξη του αλγορίθμου BLAKE2 και χρησιμοποιεί τον μηχανισμό Bao για την κωδικοποίηση του δέντρου της αλυσίδας μπλοκ . Σε αντίθεση με το BLAKE2 (BLAKE2b, BLAKE2s), το BLAKE3 προσφέρει έναν μόνο αλγόριθμο για όλες τις πλατφόρμες, χωρίς να συνδέεται με το βάθος bit και το μέγεθος κατακερματισμού.

Αυξήθηκε η απόδοση μειώνοντας τον αριθμό των γύρων από 10 σε 7 και κατακερματίζοντας μπλοκ ξεχωριστά σε κομμάτια 1 KB. Σύμφωνα με τους δημιουργούς, βρήκαν πειστική μαθηματική απόδειξη ότι είναι δυνατό να τα βγάλεις πέρα ​​με 7 γύρους αντί για 10 διατηρώντας το ίδιο επίπεδο αξιοπιστίας (για λόγους σαφήνειας, μπορούμε να δώσουμε ένα παράδειγμα με την ανάμειξη φρούτων σε μίξερ - μετά από 7 δευτερόλεπτα ο καρπός έχει ήδη αναμειχθεί πλήρως και άλλα 3 δευτερόλεπτα δεν θα επηρεάσουν τη συνοχή του μείγματος). Ωστόσο, ορισμένοι ερευνητές εκφράζουν αμφιβολίες, πιστεύοντας ότι ακόμη και αν 7 γύροι είναι επί του παρόντος επαρκείς για την αντιμετώπιση όλων των γνωστών επιθέσεων σε hashes, τότε επιπλέον 3 γύροι μπορεί να είναι χρήσιμοι εάν εντοπιστούν νέες επιθέσεις στο μέλλον.

Όσο για τη διαίρεση σε μπλοκ, στο BLAKE3 η ροή χωρίζεται σε κομμάτια 1 KB και κάθε κομμάτι κατακερματίζεται ανεξάρτητα. Με βάση τους κατακερματισμούς των κομματιών, σχηματίζεται ένας μεγάλος κατακερματισμός με βάση το δυαδικό δέντρο Merkle. Αυτή η διαίρεση μας επιτρέπει να λύσουμε το πρόβλημα της παραλληλοποίησης της επεξεργασίας δεδομένων κατά τον υπολογισμό των κατακερματισμών - για παράδειγμα, μπορείτε να χρησιμοποιήσετε οδηγίες SIMD 4 νημάτων για να υπολογίσετε ταυτόχρονα τους κατακερματισμούς 4 μπλοκ. Οι παραδοσιακές συναρτήσεις κατακερματισμού SHA-* επεξεργάζονται δεδομένα διαδοχικά.

Χαρακτηριστικά του BLAKE3:

  • Υψηλής απόδοσης, το BLAKE3 είναι σημαντικά ταχύτερο από τα MD5, SHA-1, SHA-2, SHA-3 και BLAKE2.
  • Ασφάλεια, συμπεριλαμβανομένης της αντίστασης σε επιθέσεις επιμήκυνσης μηνυμάτων στις οποίες είναι ευαίσθητο το SHA-2.
  • Διατίθεται σε Rust, βελτιστοποιημένο για οδηγίες SSE2, SSE4.1, AVX2, AVX-512 και NEON.
  • Εξασφάλιση παραλληλισμού των υπολογισμών σε οποιοδήποτε αριθμό νημάτων και καναλιών SIMD.
  • Δυνατότητα σταδιακής ενημέρωσης και επαληθευμένης επεξεργασίας των ροών.
  • Χρήση σε λειτουργίες PRF, MAC, KDF, XOF και ως κανονικό κατακερματισμό.
  • Ένας ενιαίος αλγόριθμος για όλες τις αρχιτεκτονικές, γρήγορος τόσο σε συστήματα x86-64 όσο και σε επεξεργαστές ARM 32 bit.

Οι κύριες διαφορές μεταξύ BLAKE3 και BLAKE2:

  • Χρήση μιας δυαδικής δομής δέντρου που επιτρέπει απεριόριστο παραλληλισμό στους υπολογισμούς κατακερματισμού.
  • Μείωση του αριθμού των γύρων από 10 σε 7.
  • Τρεις τρόποι λειτουργίας: κατακερματισμός, κατακερματισμός με κλειδί (HMAC) και εξαγωγή κλειδιού (KDF).
  • Χωρίς πρόσθετο κόστος κατά τον κατακερματισμό με κλειδί λόγω της χρήσης της περιοχής που καταλάμβανε προηγουμένως το μπλοκ παραμέτρων κλειδιού.
  • Ενσωματωμένος μηχανισμός λειτουργίας σε μορφή λειτουργίας με εκτεταμένο αποτέλεσμα (XOF, Extendable Output Function), που επιτρέπει την παραλληλοποίηση και την τοποθέτηση (αναζήτηση).

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο