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
