Vrijgave van de referentie-implementatie van de cryptografische hashfunctie BLAKE3 1.0

Er werd een referentie-implementatie van de cryptografische hashfunctie BLAKE3 1.0 uitgebracht, die opvalt vanwege de zeer hoge hashberekeningsprestaties en tegelijkertijd betrouwbaarheid op SHA-3-niveau garandeert. In de hashgeneratietest voor een bestand van 16 KB presteert BLAKE3 met een 256-bits sleutel 3 keer beter dan SHA256-17, SHA-256 14 keer, SHA-512 9 keer, SHA-1 6 keer en BLAKE2b - 5 keer. Er blijft een aanzienlijke kloof bestaan ​​bij het verwerken van zeer grote hoeveelheden gegevens. BLAKE3 bleek bijvoorbeeld 256 keer sneller te zijn dan SHA-8 bij het berekenen van een hash voor 1 GB aan willekeurige gegevens. De BLAKE3-referentie-implementatiecode is beschikbaar in C- en Rust-versies onder een dubbele public domain (CC0) en Apache 2.0-licentie.

Vrijgave van de referentie-implementatie van de cryptografische hashfunctie BLAKE3 1.0

De hash-functie is ontworpen voor toepassingen zoals het controleren van de bestandsintegriteit, berichtauthenticatie en het genereren van gegevens voor cryptografische digitale handtekeningen. BLAKE3 is niet bedoeld voor het hashen van wachtwoorden, omdat het tot doel heeft om zo snel mogelijk hashes te berekenen (voor wachtwoorden wordt aanbevolen om de langzame hash-functies yescrypt, bcrypt, scrypt of Argon2 te gebruiken). De hashfunctie in kwestie is ongevoelig voor de grootte van de gehashte gegevens en is beschermd tegen aanvallen op botsingsselectie en preimage-vinding.

Het algoritme is ontwikkeld door bekende cryptografie-experts (Jack O'Connor, Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn) en zet de ontwikkeling van het BLAKE2-algoritme voort en gebruikt het Bao-mechanisme om de blokketenboom te coderen. . In tegenstelling tot BLAKE2 (BLAKE2b, BLAKE2s) biedt BLAKE3 één enkel algoritme voor alle platforms, niet gebonden aan de bitdiepte en hashgrootte.

Er werden betere prestaties bereikt door het aantal rondes terug te brengen van 10 naar 7 en blokken afzonderlijk te hashen in stukjes van 1 KB. Volgens de makers hebben ze overtuigend wiskundig bewijs gevonden dat het mogelijk is om met 7 rondes in plaats van 10 rond te komen met behoud van hetzelfde betrouwbaarheidsniveau (voor de duidelijkheid kunnen we een voorbeeld geven door fruit in een mixer te mixen - na 7 seconden het fruit is al volledig gemengd, en nog eens 3 seconden heeft geen invloed op de consistentie van het mengsel). Sommige onderzoekers uiten echter hun twijfels, omdat ze van mening zijn dat zelfs als zeven rondes momenteel voldoende zijn om alle bekende aanvallen op hashes tegen te gaan, drie extra rondes nuttig kunnen zijn als er in de toekomst nieuwe aanvallen worden geïdentificeerd.

Wat betreft het verdelen in blokken: in BLAKE3 wordt de stream verdeeld in stukken van 1 KB en wordt elk stuk afzonderlijk gehasht. Op basis van de hashes van de stukken wordt één grote hash gevormd op basis van de binaire Merkle-boom. Deze verdeling stelt ons in staat het probleem van de parallellisatie van gegevensverwerking bij het berekenen van hashes op te lossen. U kunt bijvoorbeeld 4-threaded SIMD-instructies gebruiken om tegelijkertijd hashes van 4 blokken te berekenen. Traditionele SHA-*-hashfuncties verwerken gegevens opeenvolgend.

Kenmerken van BLAKE3:

  • Hoge prestaties, BLAKE3 is aanzienlijk sneller dan MD5, SHA-1, SHA-2, SHA-3 en BLAKE2.
  • Beveiliging, inclusief weerstand tegen berichtenverlengingsaanvallen waarvoor SHA-2 vatbaar is;
  • Er zijn roestvarianten beschikbaar, geoptimaliseerd voor SSE2-, SSE4.1-, AVX2-, AVX-512- en NEON-instructies.
  • Zorgen voor parallellisatie van berekeningen op een willekeurig aantal threads en SIMD-kanalen.
  • Mogelijkheid tot incrementele updates en geverifieerde verwerking van streams;
  • Gebruik in PRF-, MAC-, KDF-, XOF-modi en als gewone hash;
  • Eén enkel algoritme voor alle architecturen, snel op zowel x86-64-systemen als 32-bits ARM-processors.

De belangrijkste verschillen tussen BLAKE3 en BLAKE2:

  • Gebruik van een binaire boomstructuur die onbeperkt parallellisme bij hashberekeningen mogelijk maakt.
  • Het aantal rondes terugbrengen van 10 naar 7.
  • Drie werkingsmodi: hashen, hashen met een sleutel (HMAC) en sleutelgeneratie (KDF).
  • Geen extra overhead bij het hashen met een sleutel vanwege het gebruik van het gebied dat voorheen werd ingenomen door het sleutelparameterblok.
  • Ingebouwd bedieningsmechanisme in de vorm van een functie met een uitgebreid resultaat (XOF, Extendable Output Function), waardoor parallellisatie en positionering (zoeken) mogelijk is.

Bron: opennet.ru

Voeg een reactie