La version de rĂ©fĂ©rence de la fonction de hachage cryptographique BLAKE3 1.0 a Ă©tĂ© publiĂ©e, remarquable par sa trĂšs haute performance de calcul du hachage tout en garantissant une fiabilitĂ© au niveau de SHA-3. Dans le test de gĂ©nĂ©ration de hachage pour un fichier de 16 Ko, BLAKE3 avec une clĂ© de 256 bits dĂ©passe SHA3-256 de 17 fois, SHA-256 de 14 fois, SHA-512 de 9 fois, SHA-1 de 6 fois, et BLAKE2b de 5 fois. Cet Ă©cart significatif se maintient Ă©galement lors du traitement de trĂšs gros volumes de donnĂ©es, par exemple, BLAKE3 s'est rĂ©vĂ©lĂ© plus rapide que SHA-256 d'un facteur de 8 lors du calcul du hachage pour 1 Go de donnĂ©es alĂ©atoires. Le code de la version de rĂ©fĂ©rence de BLAKE3 est disponible en versions sur les langages C et Rust sous une double licence â domaine public (CC0) et Apache 2.0.

La fonction de hachage est conçue pour des applications telles que la vĂ©rification de lâintĂ©gritĂ© des fichiers, lâauthentification des messages et la gĂ©nĂ©ration de donnĂ©es pour les signatures numĂ©riques cryptographiques. BLAKE3 n'est pas destinĂ©e Ă hacher des mots de passe, car elle se concentre sur un calcul de hachage aussi rapide que possible (pour les mots de passe, il est recommandĂ© d'utiliser des fonctions de hachage lentes comme yescrypt, bcrypt, scrypt ou Argon2). La fonction de hachage prĂ©sentĂ©e est insensible Ă la taille des donnĂ©es hachĂ©es et est protĂ©gĂ©e contre les attaques de collision et la recherche de prĂ©images.
L'algorithme a été développé par des experts en cryptographie renommés (Jack O'Connor, Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn) et poursuit le développement de l'algorithme BLAKE2 tout en appliquant le mécanisme Bao pour coder l'arbre de chaßnes de blocs. Contrairement à BLAKE2 (BLAKE2b, BLAKE2s), BLAKE3 propose un algorithme unique pour toutes les plateformes, sans lien avec la largeur de champ ou la taille du hachage.
L'augmentation des performances a Ă©tĂ© obtenue grĂące Ă la rĂ©duction du nombre de rondes de 10 Ă 7 et au hachage des blocs en morceaux de 1 Ko. Selon les crĂ©ateurs, ils ont trouvĂ© une preuve mathĂ©matique convaincante qu'il est possible de se contenter de 7 rondes au lieu de 10 tout en maintenant le mĂȘme niveau de fiabilitĂ© (pour illustrer, on peut prendre l'exemple du mĂ©lange de fruits dans un mixeur : aprĂšs 7 secondes, les fruits sont dĂ©jĂ parfaitement mĂ©langĂ©s, et 3 secondes supplĂ©mentaires n'affecteront pas la consistance du mĂ©lange). Certains chercheurs expriment toutefois des doutes, estimant que mĂȘme si, Ă l'heure actuelle, 7 rondes suffisent Ă rĂ©sister Ă toutes les attaques connues sur les hachages, les 3 rondes supplĂ©mentaires pourraient se rĂ©vĂ©ler utiles en cas de dĂ©couverte de nouvelles attaques Ă l'avenir.
En ce qui concerne la division en blocs, le BLAKE3 décompose le flux en morceaux de 1 Ko et chaque morceau est haché indépendamment. Sur la base des hachages des morceaux, un grand hachage est formé sur la base d'un arbre binaire de Merkle. Cette division permet de résoudre le problÚme de la parallélisation du traitement des données lors du calcul du hachage : par exemple, il est possible d'utiliser des instructions SIMD à 4 fils pour calculer simultanément les hachages de 4 blocs. Les fonctions de hachage traditionnelles SHA-* traitent les données de maniÚre séquentielle.
Caractéristiques de BLAKE3 :
- Haute performance, BLAKE3 est nettement plus rapide que MD5, SHA-1, SHA-2, SHA-3 et BLAKE2.
- Sécurité, y compris la résistance aux attaques par prolongement de message, auxquelles SHA-2 est vulnérable ;
- Des versions en langage Rust, optimisées pour l'utilisation d'instructions SSE2, SSE4.1, AVX2, AVX-512 et NEON, sont disponibles.
- Assure la parallélisation des calculs sur n'importe quel nombre de fils et canaux SIMD.
- Possibilité de mise à jour incrémentielle et de traitement vérifié des flux ;
- Utilisation dans les modes PRF, MAC, KDF, XOF et comme hachage ordinaire ;
- Un algorithme unique pour toutes les architectures, rapide sur les systĂšmes x86-64 ainsi que sur les processeurs ARM 32 bits.
Les principales différences entre BLAKE3 et BLAKE2 :
- Utilisation d'une structure arborescente binaire permettant d'atteindre une parallélisation illimitée lors du calcul du hachage.
- Réduction du nombre de rondes de 10 à 7.
- Trois modes de fonctionnement : hachage, hachage avec clé (HMAC) et génération de clé (KDF).
- Absence de frais supplémentaires lors du hachage avec clé grùce à l'utilisation de la zone précédemment occupée par le bloc de paramÚtres de clé.
- Mécanisme intégré fonctionnant comme une fonction avec sortie extensible (XOF, Extendable Output Function), permettant la parallélisation et la position (seek).
Source : opennet.ru
