Release av referensimplementeringen av den kryptografiska hashfunktionen BLAKE3 1.0

En referensimplementering av den kryptografiska hashfunktionen BLAKE3 1.0 släpptes, känd för dess mycket höga hashberäkningsprestanda samtidigt som den säkerställer tillförlitlighet på SHA-3-nivå. I hashgenereringstestet för en 16 KB-fil överträffar BLAKE3 med en 256-bitars nyckel SHA3-256 17 gånger, SHA-256 14 gånger, SHA-512 9 gånger, SHA-1 6 gånger och BLAKE2b - 5 gånger. En betydande lucka kvarstår vid bearbetning av mycket stora datamängder, till exempel visade sig BLAKE3 vara 256 gånger snabbare än SHA-8 vid beräkning av en hash för 1 GB slumpmässig data. BLAKE3-referensimplementeringskoden är tillgänglig i C- och Rust-versioner under en dual public domain (CC0) och Apache 2.0-licens.

Release av referensimplementeringen av den kryptografiska hashfunktionen BLAKE3 1.0

Hashfunktionen är designad för applikationer som kontroll av filintegritet, meddelandeautentisering och generering av data för kryptografiska digitala signaturer. BLAKE3 är inte avsett för att hasha lösenord, eftersom det syftar till att beräkna hash så snabbt som möjligt (för lösenord rekommenderas att använda de långsamma hashfunktionerna yescrypt, bcrypt, scrypt eller Argon2). Den aktuella hashfunktionen är okänslig för storleken på hashad data och är skyddad från attacker mot kollisionsval och förbildssökning.

Algoritmen har utvecklats av välkända kryptografiexperter (Jack O'Connor, Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn) och fortsätter utvecklingen av BLAKE2-algoritmen och använder Bao-mekanismen för att koda blockkedjeträdet . Till skillnad från BLAKE2 (BLAKE2b, BLAKE2s) erbjuder BLAKE3 en enda algoritm för alla plattformar, inte bunden till bitdjupet och hashstorleken.

Ökad prestanda uppnåddes genom att minska antalet rundor från 10 till 7 och hasha block separat i 1 KB bitar. Enligt skaparna har de hittat övertygande matematiska bevis för att det är möjligt att klara sig med 7 omgångar istället för 10 samtidigt som man bibehåller samma nivå av tillförlitlighet (för tydlighetens skull kan vi ge ett exempel med att blanda frukt i en mixer - efter 7 sekunder frukten är redan helt blandad och ytterligare 3 sekunder påverkar inte blandningens konsistens). Vissa forskare uttrycker dock tvivel och tror att även om 7 omgångar för närvarande räcker för att motverka alla kända attacker på hash, så kan ytterligare 3 omgångar vara användbara om nya attacker identifieras i framtiden.

När det gäller uppdelning i block, i BLAKE3 är strömmen uppdelad i 1 KB bitar och varje bit hashas oberoende av varandra. Baserat på bitarnas hash bildas en stor hash baserat på det binära Merkle-trädet. Denna uppdelning gör att vi kan lösa problemet med parallellisering av databehandling vid beräkning av hash - till exempel kan du använda 4-trådiga SIMD-instruktioner för att samtidigt beräkna hash om 4 block. Traditionella SHA-*-hashfunktioner behandlar data sekventiellt.

Funktioner hos BLAKE3:

  • Hög prestanda, BLAKE3 är betydligt snabbare än MD5, SHA-1, SHA-2, SHA-3 och BLAKE2.
  • Säkerhet, inklusive motstånd mot attacker mot meddelandeförlängning som SHA-2 är känsligt för;
  • Finns i Rust, optimerad för instruktionerna SSE2, SSE4.1, AVX2, AVX-512 och NEON.
  • Säkerställ parallellisering av beräkningar på valfritt antal trådar och SIMD-kanaler.
  • Möjlighet till inkrementell uppdatering och verifierad bearbetning av strömmar;
  • Använd i lägen PRF, MAC, KDF, XOF och som en vanlig hash;
  • En enda algoritm för alla arkitekturer, snabb på både x86-64-system och 32-bitars ARM-processorer.

De viktigaste skillnaderna mellan BLAKE3 och BLAKE2:

  • Användning av en binär trädstruktur som möjliggör obegränsad parallellitet i hashberäkningar.
  • Minska antalet omgångar från 10 till 7.
  • Tre driftslägen: hashning, hashning med nyckel (HMAC) och nyckelgenerering (KDF).
  • Ingen extra omkostnad vid hashning med en nyckel på grund av användningen av området som tidigare upptogs av nyckelparametrarnas block.
  • Inbyggd manövermekanism i form av en funktion med utökat resultat (XOF, Extendable Output Function), vilket möjliggör parallellisering och positionering (sök).

Källa: opennet.ru

Lägg en kommentar