Sortie de l'implémentation de référence de la fonction de hachage cryptographique BLAKE3 1.0

Une implémentation de référence de la fonction de hachage cryptographique BLAKE3 1.0 a été publiée, se distinguant par ses très hautes performances de calcul de hachage tout en garantissant une fiabilité au niveau SHA-3. Dans le test de génération de hachage pour un fichier de 16 Ko, BLAKE3 avec une clé de 256 bits surpasse SHA3-256 de 17 fois, SHA-256 de 14 fois, SHA-512 de 9 fois, SHA-1 de 6 fois et BLAKE2b - 5 fois. Un écart important subsiste lors du traitement de très grandes quantités de données, par exemple, BLAKE3 s'est avéré 256 fois plus rapide que SHA-8 lors du calcul d'un hachage pour 1 Go de données aléatoires. Le code d'implémentation de référence BLAKE3 est disponible en versions C et Rust sous une double licence domaine public (CC0) et Apache 2.0.

Sortie de l'implémentation de référence de la fonction de hachage cryptographique BLAKE3 1.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é au hachage de mots de passe, car il vise à calculer les hachages le plus rapidement possible (pour les mots de passe, il est recommandé d'utiliser les fonctions de hachage lent yescrypt, bcrypt, scrypt ou Argon2). La fonction de hachage considérée est insensible à la taille des données hachées et est protégée contre les attaques sur la sélection de collision et la recherche de pré-image.

L'algorithme a été développé par des experts renommés en cryptographie (Jack O'Connor, Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn) et poursuit le développement de l'algorithme BLAKE2 et utilise le mécanisme Bao pour coder l'arbre de la chaîne de blocs. . Contrairement à BLAKE2 (BLAKE2b, BLAKE2s), BLAKE3 propose un algorithme unique pour toutes les plates-formes, non lié à la profondeur de bits et à la taille de hachage.

Des performances accrues ont été obtenues en réduisant le nombre de tours de 10 à 7 et en hachant les blocs séparément en morceaux de 1 Ko. Selon les créateurs, ils ont trouvé une preuve mathématique convaincante qu'il est possible de se débrouiller avec 7 tours au lieu de 10 tout en conservant le même niveau de fiabilité (pour plus de clarté, on peut donner un exemple avec le mélange de fruits dans un mixeur - après 7 secondes le fruit est déjà complètement mélangé et 3 secondes supplémentaires n'affecteront pas la consistance du mélange). Cependant, certains chercheurs expriment des doutes, estimant que même si 7 tours suffisent actuellement pour contrer toutes les attaques connues sur les hachages, alors 3 tours supplémentaires pourraient être utiles si de nouvelles attaques sont identifiées à l'avenir.

Quant à la division en blocs, dans BLAKE3, le flux est divisé 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 de l'arbre binaire de Merkle. Cette division nous permet de résoudre le problème de la parallélisation du traitement des données lors du calcul des hachages - par exemple, vous pouvez utiliser des instructions SIMD à 4 threads pour calculer simultanément les hachages de 4 blocs. Les fonctions de hachage SHA-* traditionnelles 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.
  • La sécurité, y compris la résistance aux attaques par extension de message auxquelles SHA-2 est sensible ;
  • Disponible en Rust, optimisé pour les instructions SSE2, SSE4.1, AVX2, AVX-512 et NEON.
  • Assurer la parallélisation des calculs sur un nombre quelconque de threads et de canaux SIMD.
  • Possibilité de mise à jour incrémentielle et de traitement vérifié des flux ;
  • Utiliser en modes PRF, MAC, KDF, XOF et comme hachage régulier ;
  • Un algorithme unique pour toutes les architectures, rapide sur les systèmes x86-64 et les processeurs ARM 32 bits.

Les principales différences entre BLAKE3 et BLAKE2 :

  • Utilisation d'une structure arborescente binaire qui permet un parallélisme illimité dans les calculs de hachage.
  • Réduire le nombre de tours de 10 à 7.
  • Trois modes de fonctionnement : hachage, hachage avec clé (HMAC) et génération de clé (KDF).
  • Pas de surcharge supplémentaire lors du hachage avec une clé en raison de l'utilisation de la zone précédemment occupée par le bloc de paramètres clé.
  • Mécanisme de commande intégré sous forme de fonction à résultat étendu (XOF, Extendable Output Function), permettant la parallélisation et le positionnement (seek).

Source: opennet.ru

Ajouter un commentaire