[Principe de la cryptographie] Génération de nombres pseudo-aléatoires

Un grand nombre d'algorithmes et de protocoles de sécurité réseau basés sur la cryptographie utilisent des nombres aléatoires binaires:

  • Distribution de clés et schéma d'authentification mutuelle
  • Génération de clé de session
  • Génération de clé dans l'algorithme de chiffrement à clé publique RSA
  • Génération de flux binaires chiffrés par chiffrement de flux symétrique

Deux exigences pour la génération de séquences de nombres aléatoires: le caractère aléatoire et l'imprévisibilité.

  • Aléatoire: distribution uniforme, la distribution des bits dans la série doit être uniforme; indépendance, aucune sous-séquence de la séquence ne peut être déduite d'autres sous-séquences.
  • Imprévisibilité: non seulement le nombre aléatoire doit être statistiquement aléatoire, mais la séquence de nombres aléatoires est également imprévisible. 

TRNG , PRNG , PRF

TPNG est un véritable générateur de nombres aléatoires, PRNG est un générateur de nombres pseudo aléatoires et PRF est une fonction pseudo aléatoire.

Un véritable générateur de nombres aléatoires prend une source très aléatoire en entrée. Cette source est appelée source d'entropie. La source d'entropie est extraite de l'environnement physique de l'ordinateur. Elle peut inclure les modèles de temps de frappe du clavier, l'activité électrique du disque, les mouvements de la souris et l'heure système. La valeur instantanée et ainsi de suite. Des sources ou des combinaisons de sources sont utilisées comme entrée de l'algorithme pour produire des sorties binaires aléatoires, peut-être simplement convertir des sources de signaux analogiques en sorties binaires.

Le PRNG prend une valeur fixe comme germe, comme entrée, et utilise un algorithme déterministe pour générer une séquence de sortie de bits sans limite sur la longueur du train de bits. Le flux de bits d'entrée n'est déterminé que par la valeur d'entrée, de sorte qu'un attaquant qui connaît l'algorithme et la graine peut reproduire l'intégralité du flux de bits. Un flux binaire illimité est également utilisé pour l'entrée du chiffrement de flux symétrique.

PRF est utilisé pour générer une chaîne de bits pseudo-aléatoire de longueur fixe, et la clé de chiffrement symétrique et la valeur variant dans le temps sont les graines. Habituellement, l'entrée de PRF est une valeur spécifique liée à la graine et au contexte (comme l'ID).

Exigences pour PRNG

Lorsque PRNG ou PRF est utilisé dans des applications de cryptographie, la condition de base est qu'un attaquant qui ne connaît pas la graine ne peut pas déterminer un nombre pseudo-aléatoire. Les exigences pour la confidentialité de la production de PRNG et PRF sont le caractère aléatoire, l'imprévisibilité et la spécificité des semences.

Aléatoire: Pour PRNG, le flux binaire à générer est déterministe, mais l'affichage est aléatoire. Il n’existe pas de test unique permettant de juger du caractère aléatoire des données générées par un PRNG, et seule une série de tests peut être effectuée. Selon NIST SP800-22, ces tests doivent satisfaire:

  • Uniformité: à tout moment où une séquence de bits aléatoire ou pseudo-aléatoire est générée, la quantité de 0 ou 1 est approximativement égale.
  • Évolutivité: tout test utilisé pour les tests de séquence peut également être utilisé pour tester les sous-séquences extraites de la séquence. Si la séquence est aléatoire, toutes les sous-séquences tirées de celle-ci doivent également être aléatoires.
  • Cohérence: Pour toutes les valeurs initiales (graines), le comportement du générateur doit être cohérent. Le test de sortie basé sur une seule graine, ou le test basé sur la sortie d'une seule source physique, n'est pas suffisant.

Il existe trois types de tests:

  • Test de fréquence: le test le plus élémentaire, tout ensemble d'outils de test doit inclure. Déterminez si le nombre de 0 et 1 dans la séquence est approximativement le même que la valeur attendue de la vraie séquence aléatoire.
  • Exécuter le test: l'objectif du test est le nombre total d'exécutions dans la séquence. La longueur d'exécution fait référence à une séquence ininterrompue des mêmes bits, et les bits avant et après elle prennent des valeurs différentes du bit d'exécution. Déterminez si le nombre d'exécutions 0 et 1 de différentes longueurs correspond à la valeur attendue de la séquence aléatoire.
  • Test statistique général de Maurer: L'objectif du test est de faire correspondre le nombre de bits entre les motifs. Il s'agit de tester si la séquence peut être fortement compressée sans perte d'information. La séquence qui peut être fortement compressée est considérée comme non aléatoire.

Imprévisibilité: le flux binaire de nombres aléatoires a deux types d'imprévisibilité

  • Imprévisibilité directe: si vous ne connaissez pas la valeur de départ, vous ne savez pas combien de bits dans la séquence et vous ne pouvez pas prédire le bit suivant de la séquence.
  • Imprévisibilité en amont: la valeur de départ ne peut être déduite d'aucune valeur produite. Ensuite, il ne devrait y avoir aucune corrélation entre la graine et toute valeur produite par la graine, et chaque élément de la séquence devrait apparaître comme le résultat d'un événement aléatoire indépendant.

L'ensemble de test utilisé pour les tests aléatoires fournit également des tests d'imprévisibilité.

Exigences de semences: en tant que semences, elles doivent être sûres. PRNG est un algorithme déterministe. Si l'attaquant peut dériver la graine, alors la sortie peut être déterminée.

Une façon de générer PRNG est illustrée sur la figure, la graine est générée par TRNG.

TRNG peut générer de vrais nombres aléatoires, mais au lieu d'utiliser TRNG directement, PENG est utilisé.

Dans les chiffrements de flux, l'expéditeur doit générer un flux de clé de la même longueur que le texte en clair, et envoyer le flux de clé et le texte chiffré au récepteur en toute sécurité, ce qui n'est pas réaliste. S'il s'agit d'un PRNG, l'expéditeur n'a qu'à essayer d'envoyer la clé en toute sécurité au destinataire.

Dans PRF, on espère également utiliser TRNG pour générer des semences, puis utiliser la sortie de PRF comme clé. TRNG peut produire des séquences binaires déséquilibrées. PRF a pour effet de randomiser la sortie de TRNG et d'éliminer le déséquilibre.

De plus, le mécanisme utilisé pour générer de vrais nombres aléatoires peut ne pas répondre aux besoins en termes de taux.

Générateur de nombres pseudo aléatoires

Générateur congruentiel linéaire

Générateur BBS

Génération de nombres pseudo-aléatoires à l'aide du chiffrement par blocs

Générateur de nombres pseudo-aléatoires ANSI X9.17

Je suppose que tu aimes

Origine blog.csdn.net/m0_50984266/article/details/108904352
conseillé
Classement