Die endgĂŒltige Implementierung des Algorithmus wurde veröffentlicht , der eine kryptografische Hash-Funktion anbietet, die fĂŒr Anwendungen wie die IntegritĂ€tsprĂŒfung von Dateien, die Authentifizierung von Nachrichten und die Erstellung von Daten fĂŒr digitale Signaturen konzipiert ist. BLAKE3 ist nicht fĂŒr das Hashing von Passwörtern gedacht (fĂŒr Passwörter sollten yescrypt, bcrypt, scrypt oder Argon2 verwendet werden), da es darauf abzielt, Hashes so schnell wie möglich zu berechnen, mit der Garantie der Kollisionsfreiheit und dem Schutz vor und Unempfindlichkeit gegenĂŒber der GröĂe der gehashten Daten. Die Referenzimplementierung von BLAKE3 ist unter doppelter Lizenz â Public Domain (CC0) und Apache 2.0.
Ein entscheidendes Merkmal der neuen Hash-Funktion ist die sehr hohe Geschwindigkeit bei der Berechnung des Hashs, wĂ€hrend die ZuverlĂ€ssigkeit auf dem Niveau von SHA-3 bleibt. StandardmĂ€Ăig betrĂ€gt die GröĂe des resultierenden Hashs in BLAKE3 32 Byte (256 Bit), kann jedoch auf beliebige Werte erweitert werden. In einem Test zur Hash-Generierung fĂŒr eine 16- kB groĂe Datei ĂŒberholt BLAKE3 SHA3-256 um das 15-Fache, SHA-256 um das 12-Fache, SHA-512 um das 8-Fache, SHA-1 um das 6-Fache und BLAKE2b um das 4-Fache. Der Abstand bleibt auch bei der Verarbeitung sehr groĂer Datenmengen erheblich, zum Beispiel war BLAKE3 als SHA-256 um das 8-Fache bei der Berechnung des Hashs fĂŒr 1 GB zufĂ€lliger Daten.
Der Algorithmus wurde von renommierten Krypto-Experten entwickelt (, , , ) und baut auf dem Algorithmus auf und verwendet zur Kodierung des Chains Block Tree einen Mechanismus . Im Gegensatz zu BLAKE2 (BLAKE2b, BLAKE2s) bietet BLAKE3 fĂŒr alle Plattformen einen einheitlichen Algorithmus, der nicht an die Architektur und die GröĂe des Hashs gebunden ist.
Die Leistungssteigerung wurde durch die Reduzierung der Anzahl der Runden von 10 auf 7 und das separate Hashing von Blöcken in StĂŒcken von 1 KB erreicht. Laut den Entwicklern haben sie einen ĂŒberzeugenden , dass man mit 7 Runden anstelle von 10 auskommen kann, ohne das gleiche MaĂ an ZuverlĂ€ssigkeit zu verlieren (zum besseren VerstĂ€ndnis kann man das Beispiel des Mischens von FrĂŒchten im Mixer anfĂŒhren â nach 7 Sekunden sind die FrĂŒchte bereits vollkommen vermischt, und zusĂ€tzliche 3 Sekunden haben keinen Einfluss auf die Konsistenz der Mischung). Einige Forscher Ă€uĂern jedoch Zweifel und sind der Meinung, dass, selbst wenn 7 Runden gegen alle bekannten Angriffe auf Hash-Funktionen ausreichend sind, zusĂ€tzliche 3 Runden nĂŒtzlich sein könnten, falls in Zukunft neue Angriffe entdeckt werden.
Was die Blockaufteilung betrifft, so wird im BLAKE3-Strom in StĂŒcke von 1 Kb zerlegt, und jedes StĂŒck wird unabhĂ€ngig gehasht. Auf Grundlage der Hashes der StĂŒcke basierend auf wird ein groĂer Hash erstellt. Diese Aufteilung ermöglicht es, das Problem der Parallelisierung der Datenverarbeitung bei der Berechnung des Hashes zu lösen â zum Beispiel können 4-fĂ€dige SIMD-Anweisungen verwendet werden, um die Hashes von 4 Blöcken gleichzeitig zu berechnen. Traditionelle Hash-Funktionen wie SHA-* verarbeiten Daten sequenziell.
Eigenschaften von BLAKE3:
- Hohe Leistung;
- Sicherheit, einschlieĂlich Widerstand gegen , gegen die SHA-2 anfĂ€llig ist;
- GewĂ€hrleistung der Parallelisierung der Berechnungen ĂŒber beliebig viele Threads und SIMD-KanĂ€le;
- Möglichkeit der inkrementellen Aktualisierung und verifizierten Verarbeitung von Streams;
- Anwendung in den Modi PRF, MAC, KDF, XOF und als gewöhnlicher Hash;
- Ein einheitlicher Algorithmus fĂŒr alle Architekturen, schnell sowohl auf x86-64-Systemen als auch auf 32-Bit-ARM-Prozessoren.
Quelle: opennet.ru
