Hachage de vitesse

Hachage à grande vitesse basé sur un nouvel algorithme cryptographique


Malheureusement, les mathématiciens connaissent mal les subtilités de la programmation, ils inventent quelque chose, puis le programmeur doit implémenter cela dans le code du programme. Il est loin d'être toujours possible de mettre en œuvre efficacement leurs algorithmes.

Cela est particulièrement évident dans la cryptographie symétrique russe récente, Stribourg et Grasshopper ... Il est impossible de mettre en œuvre ces algorithmes efficacement dans les codes de programme x86 / 64, un processeur cryptographique spécialisé est nécessaire.

Nous faisons le contraire et voyons ce qui se passe.

Un programmeur qui sait comment fonctionne le processeur x86 / 64 moderne développera l'algorithme de chiffrement symétrique le plus efficace et laissera les mathématiciens, comme au bon vieux temps, faire leur travail principal - la cryptanalyse de la solution résultante.

Rappelant que «le meilleur est l'ennemi du bien», nous prenons le «bien» comme base - GOST 28147-89. Ensuite, selon le principe médical «Ne pas nuire», nous allons l'effort en utilisant des méthodes informatiques multithread.

Ce qui suit a été fait:

  • Augmentation de la taille des clés à 256 octets.
  • Augmentation de la taille du bloc de données à 256 octets.
  • L'opération de substitution est remplacée par une opération de permutation.
  • Dans le décalage cyclique, le fonctionnement des groupes de bits inverseurs est mis en œuvre.
  • L'entrée de clé se fait sous la forme d'une permutation de bits.
  • Le réseau Feistel est modifié en un réseau en anneau de huit segments.
  • Le mode de jeu avec rétroaction est utilisé, en deux passes sur des données cryptées.
  • Les passages se font avec des permutations différentes et l'anneau le décale avec les mêmes touches.
  • Avant le chiffrement, la redondance est supprimée du texte chiffré à l'aide d'un compresseur.

Mise en œuvre des tests


L'algorithme est implémenté, et la première chose qui est testée est ses paramètres statistiques lors de la génération d'une séquence pseudo-aléatoire (le compresseur est éteint), voici à quoi ils ressemblent:

image

Il s'agit d'un résultat de test NIST typique d'une nouvelle conversion cryptographique. Les résultats des tests sur toutes les clés aléatoires et les populations initiales correspondent toujours aux paramètres statistiques d'une séquence aléatoire.

Les paramètres statistiques obtenus lors d'expériences sur les normes d'un chiffrement par blocs de 8 octets pour un chiffrement par blocs d'une taille de bloc de 256 octets sont fantastiques.

C’est la même chose que, par exemple, lancer une pièce 12 fois et obtenir une perte égale d’aigle et de noix, pour exiger que le dé, également lancé 12 fois, tombe bien sur chaque face deux fois ...

Ceci n'est théoriquement possible qu'avec une entropie différentielle très élevée entre les blocs adjacents et caractérise le niveau de complexité du chiffrement des blocs.

Ces paramètres gamma ont été obtenus en un tour de conversion. L'algorithme a une particularité - la vitesse de jeu dépend des performances de la RAM et du cache, et non de la vitesse du processeur.

Roulette russe, 2018 et son application


Récemment, des algorithmes cryptographiques ont commencé à recevoir des noms sonores, tels que "Magma", "Grasshopper", "Stribog", nous continuerons cette tradition.

Nous appellerons ce chiffre de bloc «Roulette russe» ou RU2 pour faire court, en l'honneur du premier générateur purement russe de séquences binaires aléatoires, - un tambour rotatif revolver ...

Eh bien, en outre, la conversion cryptographique est basée sur des rotations (changements d'anneau) de séquences binaires. Il n'y a que 192 changements explicites dans un tel cycle.
L'analogie directe avec le tambour revolver est donc évidente.

Auparavant, lors de l'implémentation de la méthode d'implémentation parallèle de GOST 28147-89 sur les registres XMM / YMM, je devais la décrire complètement, car elle avait passé la certification officielle FSB.
Maintenant, la situation est différente, aucune autorité officielle n'est assumée. Par conséquent, il n'y aura pas de description détaillée de l'algorithme de la «roulette russe», il s'agit d'une sorte de protection des droits d'auteur. En bref, l'algorithme de la «roulette russe» sera jusqu'à présent propriétaire et, par conséquent, sa désignation complète sera Russian Roulette, 2018 ou RU2 pour faire court.

Un algorithme de chiffrement fermé à la recherche est bien sûr un non-sens, car il n'y a aucune confiance dans la force du chiffrement.

Mais rien n'empêche d'utiliser l'algorithme RU2 pour convertir du texte chiffré en une séquence satisfaisant aux exigences de pseudo- aléatoire .

Ensuite, la séquence pseudo-aléatoire résultante peut être chiffrée avec des algorithmes bien connus et "fiables", en fait, tous les systèmes cryptographiques sérieux sont construits.
En attendant, la roulette russe est utilisée pour le hachage à grande vitesse avec une taille arbitraire du résultat de la fonction de hachage. Ceci est important dans les tâches de sauvegarde et d'intégrité.
Le gamma standard de rétroaction se transforme en fonction de hachage si vous effectuez un deuxième passage sur des données chiffrées. C'est ainsi que l'algorithme RU2 a été implémenté à l'origine.
Le double gamma de rétroaction n'a pas été précédemment considéré comme une variante de la mise en œuvre de la fonction de hachage, apparemment en raison de la faible vitesse de fonctionnement, bien qu'il ait des paramètres de convolution plus fiables. Cela s'applique principalement à l'effet d'avalanche, il agit non seulement sur les cycles de convolution suivants, mais également sur les précédents.

De plus, les caractéristiques obtenues de la fonction de hachage sont vérifiées de manière fiable par des tests statistiques, car tout le texte chiffré reçu, qui est un gamma pseudo-aléatoire fiable, devient un hachage.

À partir de cette gamme, des morceaux arbitraires peuvent être coupés pour stocker la valeur de la fonction de hachage. Maintenant, un bloc de 1024 octets est utilisé, il est beaucoup plus fiable qu'un bloc de 64 octets dans la norme SHA3-512 la plus «avancée».

Le hachage RU2 protège les données de la visualisation / modification, mais jusqu'à ce que les cryptographes soient convaincus de la robustesse de l'algorithme, nous considérerons que la protection par mot de passe des données limite l'accès.

Implémentation pratique de RU2


L'algorithme de la roulette russe est intégré au duplicateur médico-légal des disques durs et SDD. L'algorithme y est utilisé pour créer des sauvegardes différentielles, le contrôle d'intégrité, les restrictions d'accès basées sur un mot de passe et la compression des informations.

Le compresseur pour supprimer la redondance a déjà été décrit plus haut dans l'article « Un nouvel algorithme de compression de données à haute vitesse» , le hachage est utilisé pour confirmer l'intégrité des données copiées, et en cas de saisie d'un mot de passe, également pour la «protection par mot de passe» des vidages reçus de la visualisation / modification.

Voici les caractéristiques de vitesse de RU2 obtenues en vrai travail sur la création d'une sauvegarde différentielle:

image

La vitesse de copie est limitée par les paramètres du lecteur, un lecteur SSD connecté via un pont USB 3.0-SATA ne peut pas fournir une vitesse de lecture élevée.

À une vitesse de flux d'entrée de 360 ​​mégaoctets / sec. L' algorithme RU2 charge le processeur de seulement 5% avec une fréquence de fonctionnement réduite de 1,4 Gigahertz. Cela permet la compression des informations, leur hachage et le chiffrement (protection par mot de passe) du vidage.

Les systèmes de hachage traditionnels ne peuvent pas fournir de telles performances. À titre de comparaison, voici comment fonctionne le système de hachage intégré à Acronis lors de la création d'une sauvegarde différentielle du même lecteur:

image

Le processeur hache le flux de données d'entrée à une vitesse de 340 mégaoctets / sec., Et en même temps fonctionne à une fréquence de 3,8 GigaHertz et est chargé à 28%.

Si nous recalculons les résultats obtenus dans les paramètres limites pour un processeur dual-core fonctionnant à une fréquence de 3,8 GigaHertz, alors le système de hachage Acronis peut fournir un débit de 1,4 GigaBytes / sec.

Beaucoup plus chargé de tâches (hachage + compression + "protection par mot de passe"), l'algorithme de la roulette russe fournit une vitesse de 21 gigaoctets / sec.

En d'autres termes, le hachage RU2 fonctionne un ordre de grandeur plus rapidement que le hachage standard implémenté dans Acronis.

De plus, la roulette russe offre un taux de génération de nombres pseudo-aléatoires de 12 gigaoctets par seconde. Il s'agit du générateur de séquence pseudo-aléatoire le plus rapide connu qui répond aux exigences des tests NIST officiels.

Génération de nombres aléatoires, hachage, protection par mot de passe, alors que cela suffit pour la roulette russe.

"... Mais qu'en est-il de la cryptographie?, - puis de la cryptographie ...."

Source: https://habr.com/ru/post/fr435362/


All Articles