domicile - Cloison sèche
Générateur de nombres aléatoires. Les Russes ont mis au point le « premier » générateur de nombres aléatoires biologiques au monde. Comment travaille-t-il ? À quoi sert le code de sécurité

Il existe trois manières fondamentalement différentes d'obtenir des nombres utilisés comme aléatoires : physique, tabulaire et algorithmique.

On pense que la première tentative de créer un générateur physique de nombres aléatoires remonte à 3500 av. et est associé au jeu de société senet, un ancien divertissement laïque égyptien. Selon les reconstructions modernes des règles du jeu, quatre bâtons plats ont été utilisés pour déterminer le nombre de points marqués par chaque joueur et la séquence de mouvements dans ce jeu, dont un côté était blanc, l'autre noir. Les bâtons étaient lancés en même temps et, en fonction de la combinaison de couleurs qui tombaient, ils déterminaient des opportunités supplémentaires pour les joueurs. Au début du XXe siècle. des séquences de nombres aléatoires ont été simulées manuellement - en lançant une pièce ou un dé, en posant des cartes à jouer, en utilisant une roulette, en retirant des boules d'une urne, etc. Les capteurs physiques (hardware) modernes sont des dispositifs spéciaux qui génèrent des nombres aléatoires basés sur la transformation de bruits aléatoires d'origine naturelle ou artificielle (bruit thermique, effet de grenaille dans des tubes à vide, désintégration radioactive, etc.). Par exemple, une voiture ERNIE 4 (équipement électronique indicateur de nombres aléatoires),

  • 1 Parfois, bien que rarement, la distribution donnée par le tableau est qualifiée de standard 0 1 ... 8 9
  • 0,1 0,1 ... 0,1 0,1 / à l'aide duquel sont déterminés les numéros gagnants de la loterie britannique mensuelle, utilise le bruit thermique des transistors comme source de variables aléatoires. La méthode physique d'obtention d'une séquence de nombres aléatoires présente des caractéristiques qui sont des inconvénients pour un modèle de simulation. Ceux-ci incluent, tout d'abord, la nécessité de mesures spéciales pour assurer la stabilité de la source du signal, converti en nombres aléatoires, et l'impossibilité de reproduire la séquence de nombres aléatoires résultante.

Les tableaux de nombres aléatoires sont exempts de ces inconvénients. Expliquons ce que l'on entend par un tableau de nombres aléatoires. Supposons que nous ayons implémenté N des expériences indépendantes, qui ont abouti à des nombres aléatoires a, a 2, osdr. L'écriture de ces nombres (par ordre d'apparition et sous la forme d'un tableau rectangulaire) donnera ce qu'on appelle un tableau de nombres aléatoires. Il est utilisé comme suit. Au cours des calculs, nous pouvons avoir besoin soit d'un nombre aléatoire, soit d'un nombre aléatoire. Si un nombre aléatoire est requis, alors nous pouvons prendre n'importe quel nombre de cette table. La même chose s'applique au cas d'un entier aléatoire - n'importe quel chiffre peut être sélectionné pour chaque chiffre. Si nous avons besoin d'un nombre aléatoire 0 k de chiffres successifs cc, a 2, ao /, et supposons que 8 = (Hoco ^ .- peut être d'affilée, vous pouvez utiliser n'importe quel algorithme de sélection qui ne dépend pas des valeurs des chiffres du tableau, commencez n'importe où dans le tableau, lisez dans n'importe quelle direction.

Les premières tables de nombres aléatoires ont été obtenues à l'aide de roulettes. De tels tableaux ont été publiés plusieurs fois sous forme de livres. L'un des tableaux les plus célèbres, publié en 1927, contenait plus de 40 000 nombres aléatoires « tirés au hasard des rapports de recensement ».

Référence historique

Léonard Tippett (Leonard Henry Caleb Tippett, 1902-1985) - statisticien anglais, élève de K. Pearson et R. Fisher. En 1965-1966. - Président de la Royal Statistical Society. Certains résultats importants dans la théorie des valeurs extrêmes sont associés à son nom, par exemple, la distribution de Fisher - Tippett et le théorème de Fisher - Tippett - Gnedenko.

Plus tard, des dispositifs spéciaux (machines) ont été conçus pour générer mécaniquement des nombres aléatoires. La première machine de ce type a été utilisée en 1939 par M.J. Kendall et B. Babington-Smith pour créer des tableaux contenant 100 000 chiffres aléatoires. En 1955, la société Société RAND ont publié des tables bien connues avec un million de chiffres aléatoires obtenus par une autre machine de ce type. L'application pratique des tableaux de nombres aléatoires est actuellement limitée, en règle générale, aux problèmes qui utilisent des méthodes de sélection aléatoire.

échantillons, par exemple, dans la recherche sociologique ou lors du contrôle statistique d'acceptation de la qualité des produits à la pièce à des fins diverses.

C'est intéressant

En Russie, GOST 18321-73 (ST SEV 1934-79) est en vigueur, qui établit les règles de sélection des unités de produits dans un échantillon lors du contrôle qualité de l'acceptation statistique, des méthodes statistiques d'analyse et de la réglementation des processus technologiques pour tous les types de pièces produits à usage industriel et biens de consommation. Dans celui-ci, en particulier, il est indiqué que lors de la sélection des unités de production dans l'échantillon « des tableaux de nombres aléatoires selon ST SEV 546-77 sont utilisés ».

présenter une nouvelle demande ; tous les nombres sont facilement reproductibles ; et l'offre de nombres dans une telle séquence est limitée. Cependant, une séquence de nombres pseudo-aléatoires a un avantage évident par rapport à un tableau : il existe des formules simples pour calculer un nombre pseudo-aléatoire, tandis que l'obtention de chaque nombre ne prend que 3 à 5 commandes, et le programme de calcul n'occupe que quelques cellules dans le lecteur.

Il existe de nombreux algorithmes pour obtenir des séquences de nombres pseudo-aléatoires ; les implémentations de tels algorithmes, appelées capteurs (générateurs) de nombres pseudo-aléatoires, sont décrites en détail dans la littérature spécialisée. Voici quelques-uns des algorithmes les plus connus.

  • Tippett L. Nombres d'échantillonnage aléatoires. Londres : Cambridge University Press, 1927.
  • Voir : D.E. Knut, L'art de la programmation. 3e éd. M. : Williams, 2000. T. 2. Ch. 3. Nombres aléatoires.

19/09/2017, mar, 13:18, heure de Moscou , Texte : Valeria Shmyrova

La société Security Code, développeur du complexe cryptographique Continent, a reçu un brevet pour un capteur biologique de nombres aléatoires. Il s'agit précisément d'un capteur biologique, puisque l'aléatoire est basé sur la réaction de l'utilisateur à l'image qui lui est montrée. La société assure que de telles technologies n'étaient pas brevetées dans le monde auparavant.

Obtention d'un brevet

Security Code a reçu un brevet pour la technologie des capteurs biologiques de nombres aléatoires. Selon les développeurs, lors de la création de la technologie, ils ont utilisé "une nouvelle approche pour résoudre le problème de la génération de nombres aléatoires à l'aide d'un ordinateur et d'une personne". Le développement est déjà utilisé dans un certain nombre de produits, notamment Continent-AP, Secret Net Studio, Continent TLS et Jinn, ainsi que dans la bibliothèque cryptographique SCrypt.

Des représentants de la société ont expliqué à CNews que les travaux sur le capteur duraient déjà depuis la troisième année. Il se compose d'une partie scientifique, d'une mise en œuvre et d'une partie expérimentale. Trois personnes sont responsables de la partie scientifique de l'entreprise, toute l'équipe de programmeurs a participé au développement, et les tests et expérimentations ont été réalisés par toute l'équipe, soit plusieurs centaines de personnes.

Capacités technologiques

Le nouveau capteur peut générer des séquences aléatoires sur des appareils personnels sans avoir besoin d'instruments supplémentaires ou de modules complémentaires matériels. Il peut être utilisé dans le cryptage des données et dans tous les domaines où des séquences binaires aléatoires sont nécessaires. Selon les développeurs, il crée des clés de cryptage beaucoup plus rapidement sur les appareils mobiles. Cette propriété peut être utilisée pour crypter des données ou générer une signature électronique.

Comme expliqué Alisa Koreneva, un analyste système du "Security Code", un capteur créé par l'entreprise génère des séquences aléatoires basées sur la vitesse et la précision de la réponse de la main de l'utilisateur à un changement d'image sur l'écran du PC ou de la tablette. La souris ou l'écran tactile est utilisé pour la saisie. Cela ressemble à ceci : les cercles se déplacent de manière chaotique sur l'écran, certains de leurs paramètres changent avec le temps. À certains moments, l'utilisateur réagit aux changements dans l'image. Compte tenu de sa motricité, cela se traduit par une masse aléatoire de bits.

Vous pouvez générer des séquences de nombres aléatoires basées sur des réactions humaines spontanées

En dehors de la cryptographie, le capteur peut être utilisé pour générer des nombres aléatoires dans les jeux informatiques ou pour sélectionner les gagnants de la compétition.

Nouveauté scientifique

Comme la société l'a expliqué à CNews, de nombreuses méthodes connues de construction de capteurs de nombres aléatoires sont basées soit sur des lois et phénomènes physiques, soit sur des algorithmes déterministes. Les séquences peuvent être générées à l'aide d'un ordinateur - dans ce cas, l'instabilité du fonctionnement de certaines parties de l'ordinateur et l'incertitude des interférences matérielles sont considérées comme la base du caractère aléatoire.

La nouveauté de la technologie "Security Code" réside dans le fait que la source du hasard est la réaction d'une personne à une image changeante, qui s'affiche sur l'écran de l'appareil. C'est pourquoi le titre de l'invention contient le mot « biologique ». La société rapporte que ni elle ni Rospatent n'ont trouvé d'analogues brevetés de la technologie en Russie et dans le monde. Cependant, en général, de telles techniques sont connues : par exemple, une séquence peut être générée à partir d'actions de l'utilisateur telles que des clics ou des mouvements avec la souris ou des frappes sur le clavier.

Selon Koreneva, l'équipe de développement a analysé différentes manières de générer des séquences aléatoires. Il s'est avéré que dans de nombreux cas, il n'y a pas d'estimations valables des performances de génération, ou des propriétés statistiques des séquences générées, ou des deux. Cela est dû à la difficulté de justifier une technologie déjà inventée. Le Code de sécurité affirme que dans son étude, il a obtenu des estimations raisonnables du taux de génération, a pu justifier de bonnes caractéristiques probabilistes et propriétés statistiques, et estimé l'entropie introduite par les actions humaines.

Produits utilisant la technologie

« Continent » est un complexe matériel-logiciel conçu pour le cryptage des données. Utilisé dans le secteur public russe, par exemple, au Trésor. Se compose d'un pare-feu et d'une boîte à outils de création de VPN. Il a été créé par NIP "Informzashita", maintenant il est développé par "Security Code" LLC.

Plus précisément, le serveur d'accès Continent et le système de cryptage des informations Continent-AP sont un module d'accès à distance sécurisé utilisant les algorithmes GOST, et le Continent TLS VPN est un système permettant de fournir un accès distant sécurisé aux applications Web utilisant les algorithmes de cryptage GOST.

Secret Net Studio est une solution complète de protection des postes de travail et des serveurs au niveau des données, des applications, du réseau, du système d'exploitation et des périphériques, qui développe également le "Code de sécurité". Jinn-Client est conçu pour la protection cryptographique des informations afin de créer des signatures électroniques et une visualisation fiable des documents, et Jinn-Server est un complexe logiciel et matériel permettant de créer des systèmes de gestion de documents électroniques importants sur le plan juridique.

La bibliothèque cryptographique SCRypt, qui utilise également un nouveau capteur, a été développée par le "Security Code" pour faciliter l'application d'algorithmes cryptographiques dans divers produits. Il s'agit d'un code de programme unique qui a réussi la vérification d'erreur. La bibliothèque prend en charge les algorithmes cryptographiques pour le hachage, la signature électronique, le cryptage.

À quoi sert le code de sécurité

Security Code est une société russe qui développe des logiciels et du matériel. Elle a été fondée en 2008. La portée des produits est la protection des systèmes d'information et leur mise en conformité avec les normes internationales et industrielles, y compris la protection des informations confidentielles, jusqu'aux secrets d'État. Security Code détient neuf licences du Service fédéral de contrôle technique et des exportations (FSTEC) de Russie, du Service fédéral de sécurité (FSB) de Russie et du ministère de la Défense.

L'entreprise emploie environ 300 spécialistes ; 900 partenaires agréés dans toutes les régions de la Russie et des pays de la CEI sont engagés dans la vente de produits. La base de clients du code de sécurité compte environ 32 000 organisations gouvernementales et commerciales.

PRNG déterministe

Aucun algorithme déterministe ne peut générer des nombres complètement aléatoires, il ne peut qu'approximer certaines propriétés des nombres aléatoires. Comme le disait John von Neumann : « quiconque a un faible pour les méthodes arithmétiques pour obtenir des nombres aléatoires est sans aucun doute un péché».

Tout PRNG avec des ressources limitées se retrouve tôt ou tard coincé dans une boucle - il commence à répéter la même séquence de nombres. La longueur des cycles PRNG dépend du générateur lui-même et est en moyenne d'environ 2 n/2, où n est la taille de l'état interne en bits, bien que les générateurs linéaires congruents et LFSR aient des cycles maximum de l'ordre de 2 n. Si un PRNG peut converger vers des cycles trop courts, le PRNG devient prévisible et inutilisable.

La plupart des générateurs arithmétiques simples, bien que rapides, souffrent de nombreux inconvénients graves :

  • Période/périodes trop courtes.
  • Les valeurs consécutives ne sont pas indépendantes.
  • Certains bits sont "moins aléatoires" que d'autres.
  • Distribution unidimensionnelle inégale.
  • Réversibilité.

En particulier, l'algorithme mainframe s'est avéré très pauvre, ce qui a soulevé des doutes sur la fiabilité des résultats de nombreuses études utilisant cet algorithme.

PRNG avec source d'entropie ou RNG

Parallèlement au besoin existant de générer des séquences de nombres aléatoires facilement reproductibles, il existe également un besoin de générer des nombres complètement imprévisibles ou simplement complètement aléatoires. De tels générateurs sont appelés générateurs de nombres aléatoires(RNG - ing. générateur de nombres aléatoires, RNG). Étant donné que de tels générateurs sont le plus souvent utilisés pour générer des clés symétriques et asymétriques uniques pour le chiffrement, ils sont le plus souvent construits à partir d'une combinaison d'un PRNG fort et d'une source externe d'entropie (et c'est cette combinaison qui est maintenant communément comprise comme un RNG) .

Presque tous les principaux fabricants de puces électroniques fournissent des RNG matériels avec différentes sources d'entropie, en utilisant différentes méthodes pour les nettoyer de l'inévitable prévisibilité. Cependant, à l'heure actuelle, la vitesse de collecte des nombres aléatoires par toutes les puces existantes (plusieurs milliers de bits par seconde) ne correspond pas à la vitesse des processeurs modernes.

Dans les ordinateurs personnels, les auteurs de logiciels RNG utilisent des sources d'entropie beaucoup plus rapides, telles que le bruit de la carte son ou le nombre d'horloges du processeur. Avant qu'il ne devienne possible de lire les valeurs du compteur d'horloge, la collecte d'entropie était le point le plus vulnérable du RNG. Ce problème n'est toujours pas entièrement résolu dans de nombreux appareils (par exemple les cartes à puce) qui restent vulnérables de cette manière. De nombreux RNG utilisent encore des méthodes traditionnelles (obsolètes) pour collecter l'entropie, telles que la mesure de la réponse de l'utilisateur (mouvement de la souris, etc.), comme, par exemple, dans, ou les interactions entre les threads, comme, par exemple, dans Java secure random.

Exemples de sources RNG et d'entropie

Quelques exemples de RNG avec leurs sources et générateurs d'entropie :

Source d'entropie PRNG Dignité désavantages
/ dev / random sous Linux Compteur de cycles du processeur, mais uniquement collecté pendant les interruptions matérielles LFSR, avec hachage de sortieIl « chauffe » très longtemps, il peut « rester bloqué » longtemps, ou il fonctionne comme un PRNG ( / dev / urandom)
Achillée par Bruce Schneier Méthodes traditionnelles (déconseillées) AES -256 etConception cryptographique flexible « Chauffe » pendant une longue période, très petit état interne, dépend trop de la force cryptographique des algorithmes sélectionnés, lent, applicable exclusivement pour la génération de clés
Générateur Leonid Yuriev Bruit de la carte son ? Très probablement une bonne et rapide source d'entropie Pas de PRNG indépendant, connu pour être cryptographiquement fort, disponible exclusivement sous Windows
Microsoft Intégré à Windows, ne "reste pas bloqué" Petit état intérieur, facilement prévisible
Interaction entre les fils Java n'a pas encore d'autre choix, gros état interne Collection d'entropie lente
Chaos par Ruptor Compteur de cycles du processeur, collecté en continu Hachage d'un état interne de 4096 bits basé sur une variante non linéaire du générateur Marsaglia Jusqu'à ce que le plus rapide de tous, grand état intérieur, ne "se coince"
RRAND par Ruptor Compteur de cycles du processeur Cryptage de l'état interne avec chiffrement de fluxTrès rapide, état interne de taille arbitraire par choix, ne "se bloque" pas

PRNG en cryptographie

Une sorte de PRNG sont les PRBG - générateurs de bits pseudo-aléatoires, ainsi que divers chiffrements de flux. PRNG, comme les chiffrements de flux, consiste en un état interne (généralement de 16 bits à plusieurs mégaoctets), une fonction pour initialiser l'état interne avec une clé, ou la graine(eng. la graine), les fonctions de mise à jour de l'état interne et les fonctions de sortie. Les PRNG sont subdivisés en arithmétique simple, en chiffres brisés et en chiffres cryptographiques. Leur objectif commun est de générer des séquences de nombres qui ne peuvent pas être distinguées des nombres aléatoires par des méthodes de calcul.

Bien que de nombreux PRNG ou chiffrements de flux puissants offrent beaucoup plus de nombres "aléatoires", ces générateurs sont beaucoup plus lents que les générateurs arithmétiques conventionnels et peuvent ne pas convenir à tout type de recherche nécessitant que le processeur soit libre pour des calculs plus utiles.

À des fins militaires et sur le terrain, seuls des PRNG synchrones classés cryptographiquement forts (chiffrements de flux) sont utilisés, les chiffrements par blocs ne sont pas utilisés. Des exemples de PRNG cryptographiquement forts bien connus sont ISAAC, SEAL, Snow, l'algorithme théorique très lent de Blum, Blum et Shub, ainsi que des compteurs avec des fonctions de hachage cryptographiques ou des chiffrements par blocs cryptographiquement forts au lieu d'une fonction de sortie.

Matériel PRNG

Mis à part les générateurs LFSR obsolètes et bien connus qui ont été largement utilisés comme PRNG matériels au 20e siècle, malheureusement, on sait très peu de choses sur les PRNG matériels modernes (ciphers de flux), car la plupart d'entre eux sont conçus à des fins militaires et sont gardés secrets. . Presque tous les PRNG matériels commerciaux existants sont brevetés et également gardés secrets. Les PRNG matériels sont limités par des exigences strictes concernant la mémoire consommée (le plus souvent l'utilisation de la mémoire est interdite), la vitesse (1 à 2 cycles d'horloge) et la superficie (plusieurs centaines de FPGA - ou

En raison du manque de bons PRNG matériels, les fabricants sont obligés d'utiliser les chiffrements par blocs beaucoup plus lents mais largement connus disponibles (Computer Review # 29 (2003)

  • Yuri Lifshits. Cours "Problèmes modernes de cryptographie" Cours 9 : Générateurs pseudo-aléatoires
  • L. Barach. Algorithme AKS pour vérifier la simplicité des nombres et trouver des constantes pour les générateurs de nombres pseudo-aléatoires
  • Jelnikov Vladimir. Séquences pseudo-aléatoires de nombres // Cryptographie du papyrus à l'ordinateur M. : ABF, 1996.
  • random.org (eng.) - service en ligne pour générer des nombres aléatoires
  • Nombres aléatoires cryptographiques
  • Théorie et pratique de la génération de nombres aléatoires (eng.)
  • Zvi Gutterman, Benny Pinkas, Tzachy Reinman. Analyse du générateur de nombres aléatoires Linux
  • Une suite de tests statistiques pour les générateurs de nombres aléatoires et pseudo-aléatoires pour les applications cryptographiques NIST SP 800-22
  • PRNG déterministe

    Aucun algorithme déterministe ne peut générer des nombres complètement aléatoires, il ne peut qu'approximer certaines propriétés des nombres aléatoires. Comme le disait John von Neumann : « quiconque a un faible pour les méthodes arithmétiques pour obtenir des nombres aléatoires est sans aucun doute un péché».

    Tout PRNG avec des ressources limitées se retrouve tôt ou tard coincé dans une boucle - il commence à répéter la même séquence de nombres. La longueur des cycles PRNG dépend du générateur lui-même et est en moyenne d'environ 2 n/2, où n est la taille de l'état interne en bits, bien que les générateurs linéaires congruents et LFSR aient des cycles maximum de l'ordre de 2 n. Si un PRNG peut converger vers des cycles trop courts, le PRNG devient prévisible et inutilisable.

    La plupart des générateurs arithmétiques simples, bien que rapides, souffrent de nombreux inconvénients graves :

    • Période/périodes trop courtes.
    • Les valeurs consécutives ne sont pas indépendantes.
    • Certains bits sont "moins aléatoires" que d'autres.
    • Distribution unidimensionnelle inégale.
    • Réversibilité.

    En particulier, l'algorithme mainframe s'est avéré très pauvre, ce qui a soulevé des doutes sur la fiabilité des résultats de nombreuses études utilisant cet algorithme.

    PRNG avec source d'entropie ou RNG

    Parallèlement au besoin existant de générer des séquences de nombres aléatoires facilement reproductibles, il existe également un besoin de générer des nombres complètement imprévisibles ou simplement complètement aléatoires. De tels générateurs sont appelés générateurs de nombres aléatoires(RNG - ing. générateur de nombres aléatoires, RNG). Étant donné que de tels générateurs sont le plus souvent utilisés pour générer des clés symétriques et asymétriques uniques pour le chiffrement, ils sont le plus souvent construits à partir d'une combinaison d'un PRNG fort et d'une source externe d'entropie (et c'est cette combinaison qui est maintenant communément comprise comme un RNG) .

    Presque tous les principaux fabricants de puces électroniques fournissent des RNG matériels avec différentes sources d'entropie, en utilisant différentes méthodes pour les nettoyer de l'inévitable prévisibilité. Cependant, à l'heure actuelle, la vitesse de collecte des nombres aléatoires par toutes les puces existantes (plusieurs milliers de bits par seconde) ne correspond pas à la vitesse des processeurs modernes.

    Dans les ordinateurs personnels, les auteurs de logiciels RNG utilisent des sources d'entropie beaucoup plus rapides, telles que le bruit de la carte son ou le nombre d'horloges du processeur. Avant qu'il ne devienne possible de lire les valeurs du compteur d'horloge, la collecte d'entropie était le point le plus vulnérable du RNG. Ce problème n'est toujours pas entièrement résolu dans de nombreux appareils (par exemple les cartes à puce) qui restent vulnérables de cette manière. De nombreux RNG utilisent encore des méthodes traditionnelles (obsolètes) pour collecter l'entropie, telles que la mesure de la réponse de l'utilisateur (mouvement de la souris, etc.), comme, par exemple, dans, ou les interactions entre les threads, comme, par exemple, dans Java secure random.

    Exemples de sources RNG et d'entropie

    Quelques exemples de RNG avec leurs sources et générateurs d'entropie :

    Source d'entropie PRNG Dignité désavantages
    / dev / random sous Linux Compteur de cycles du processeur, mais uniquement collecté pendant les interruptions matérielles LFSR, avec hachage de sortieIl « chauffe » très longtemps, il peut « rester bloqué » longtemps, ou il fonctionne comme un PRNG ( / dev / urandom)
    Achillée par Bruce Schneier Méthodes traditionnelles (déconseillées) AES -256 etConception cryptographique flexible « Chauffe » pendant une longue période, très petit état interne, dépend trop de la force cryptographique des algorithmes sélectionnés, lent, applicable exclusivement pour la génération de clés
    Générateur Leonid Yuriev Bruit de la carte son ? Très probablement une bonne et rapide source d'entropie Pas de PRNG indépendant, connu pour être cryptographiquement fort, disponible exclusivement sous Windows
    Microsoft Intégré à Windows, ne "reste pas bloqué" Petit état intérieur, facilement prévisible
    Interaction entre les fils Java n'a pas encore d'autre choix, gros état interne Collection d'entropie lente
    Chaos par Ruptor Compteur de cycles du processeur, collecté en continu Hachage d'un état interne de 4096 bits basé sur une variante non linéaire du générateur Marsaglia Jusqu'à ce que le plus rapide de tous, grand état intérieur, ne "se coince"
    RRAND par Ruptor Compteur de cycles du processeur Cryptage de l'état interne avec chiffrement de fluxTrès rapide, état interne de taille arbitraire par choix, ne "se bloque" pas

    PRNG en cryptographie

    Une sorte de PRNG sont les PRBG - générateurs de bits pseudo-aléatoires, ainsi que divers chiffrements de flux. PRNG, comme les chiffrements de flux, consiste en un état interne (généralement de 16 bits à plusieurs mégaoctets), une fonction pour initialiser l'état interne avec une clé, ou la graine(eng. la graine), les fonctions de mise à jour de l'état interne et les fonctions de sortie. Les PRNG sont subdivisés en arithmétique simple, en chiffres brisés et en chiffres cryptographiques. Leur objectif commun est de générer des séquences de nombres qui ne peuvent pas être distinguées des nombres aléatoires par des méthodes de calcul.

    Bien que de nombreux PRNG ou chiffrements de flux puissants offrent beaucoup plus de nombres "aléatoires", ces générateurs sont beaucoup plus lents que les générateurs arithmétiques conventionnels et peuvent ne pas convenir à tout type de recherche nécessitant que le processeur soit libre pour des calculs plus utiles.

    À des fins militaires et sur le terrain, seuls des PRNG synchrones classés cryptographiquement forts (chiffrements de flux) sont utilisés, les chiffrements par blocs ne sont pas utilisés. Des exemples de PRNG cryptographiquement forts bien connus sont ISAAC, SEAL, Snow, l'algorithme théorique très lent de Blum, Blum et Shub, ainsi que des compteurs avec des fonctions de hachage cryptographiques ou des chiffrements par blocs cryptographiquement forts au lieu d'une fonction de sortie.

    Matériel PRNG

    Mis à part les générateurs LFSR obsolètes et bien connus qui ont été largement utilisés comme PRNG matériels au 20e siècle, malheureusement, on sait très peu de choses sur les PRNG matériels modernes (ciphers de flux), car la plupart d'entre eux sont conçus à des fins militaires et sont gardés secrets. . Presque tous les PRNG matériels commerciaux existants sont brevetés et également gardés secrets. Les PRNG matériels sont limités par des exigences strictes concernant la mémoire consommée (le plus souvent l'utilisation de la mémoire est interdite), la vitesse (1 à 2 cycles d'horloge) et la superficie (plusieurs centaines de FPGA - ou

    En raison du manque de bons PRNG matériels, les fabricants sont obligés d'utiliser les chiffrements par blocs beaucoup plus lents mais largement connus disponibles (Computer Review # 29 (2003)

  • Yuri Lifshits. Cours "Problèmes modernes de cryptographie" Cours 9 : Générateurs pseudo-aléatoires
  • L. Barach. Algorithme AKS pour vérifier la simplicité des nombres et trouver des constantes pour les générateurs de nombres pseudo-aléatoires
  • Jelnikov Vladimir. Séquences pseudo-aléatoires de nombres // Cryptographie du papyrus à l'ordinateur M. : ABF, 1996.
  • random.org (eng.) - service en ligne pour générer des nombres aléatoires
  • Nombres aléatoires cryptographiques
  • Théorie et pratique de la génération de nombres aléatoires (eng.)
  • Zvi Gutterman, Benny Pinkas, Tzachy Reinman. Analyse du générateur de nombres aléatoires Linux
  • Une suite de tests statistiques pour les générateurs de nombres aléatoires et pseudo-aléatoires pour les applications cryptographiques NIST SP 800-22
  • Le logiciel de presque tous les ordinateurs a une fonction intégrée pour générer une séquence de nombres pseudo-aléatoires distribués de manière quasi uniforme. Cependant, pour la modélisation statistique, des exigences accrues sont imposées sur la génération de nombres aléatoires. La qualité des résultats d'une telle modélisation dépend directement de la qualité du générateur de nombres aléatoires uniformément distribués, puisque ces nombres sont aussi des sources (données initiales) pour obtenir d'autres variables aléatoires avec une loi de distribution donnée.

    Malheureusement, les générateurs idéaux n'existent pas et la liste de leurs propriétés connues est complétée par une liste de défauts. Cela conduit au risque d'utiliser un mauvais générateur dans une expérience informatique. Par conséquent, avant de réaliser une expérience informatique, il est nécessaire soit d'évaluer la qualité de la fonction de génération de nombres aléatoires intégrée à l'ordinateur, soit de choisir un algorithme approprié pour générer des nombres aléatoires.

    Pour être utilisé en physique numérique, un générateur doit avoir les propriétés suivantes :

      L'efficacité de calcul est le temps de calcul le plus court possible pour le cycle suivant et la quantité de mémoire pour que le générateur fonctionne.

      Grande longueur L d'une séquence aléatoire de nombres. Cette période doit inclure au moins l'ensemble des nombres aléatoires nécessaires à l'expérience statistique. De plus, même s'approcher de la fin de L est dangereux, ce qui peut conduire à des résultats incorrects d'une expérience statistique.

    Le critère de la longueur suffisante de la séquence pseudo-aléatoire est choisi parmi les considérations suivantes. La méthode de Monte Carlo consiste en une répétition répétée des calculs des paramètres de sortie du système modélisé, qui est sous l'influence de paramètres d'entrée qui fluctuent avec des lois de distribution données. La méthode est basée sur la génération de nombres aléatoires avec uniforme distribution dans l'intervalle, à partir de laquelle sont formés des nombres aléatoires avec des lois de distribution données. Ensuite, la probabilité d'un événement modélisé est calculée comme le rapport du nombre de répétitions d'expériences de modèle avec un résultat positif sur le nombre total de répétitions d'expériences dans des conditions initiales données (paramètres) du modèle.

    Pour un calcul fiable, au sens statistique, de cette probabilité, le nombre de répétitions de l'expérience peut être estimé par la formule :


    est la fonction inverse de la fonction de distribution normale, - probabilité d'erreur confidentielle mesure de probabilité.

    Par conséquent, pour que l'erreur ne dépasse pas l'intervalle de confiance avec un niveau de confiance, par exemple = 0.95 il faut que le nombre de répétitions de l'expérience ne soit pas moindre :

    (2.2)

    Par exemple, pour une erreur de 10 % ( = 0,1) on obtient
    , et pour une erreur de 3% ( = 0,03) on obtient déjà
    .

    Pour les autres conditions initiales du modèle, une nouvelle série de répétitions d'expériences doit être réalisée sur une séquence pseudo-aléatoire différente. Par conséquent, soit la fonction de génération d'une séquence pseudo-aléatoire doit avoir un paramètre qui la modifie (par exemple, R 0 ), ou sa longueur doit être au moins :

    K - le nombre de conditions initiales (points de la courbe déterminés par la méthode Monte Carlo), N - le nombre de répétitions de l'expérience modèle dans les conditions initiales données, L est la longueur de la séquence pseudo-aléatoire.

    Ensuite, chaque série de N les répétitions de chaque expérience seront effectuées sur son propre segment de la séquence pseudo-aléatoire.

      Reproductibilité. Comme indiqué ci-dessus, il est souhaitable d'avoir un paramètre qui modifie la génération des nombres pseudo-aléatoires. Habituellement, c'est R 0 . Par conséquent, il est très important que le changement de R 0 n'a pas gâché la qualité (c'est-à-dire les paramètres statistiques) du générateur de nombres aléatoires.

      Bonnes propriétés statistiques. C'est l'indicateur le plus important de la qualité d'un générateur de nombres aléatoires. Cependant, il ne peut pas être évalué par un seul critère ou test, car il n'y a pas de critères nécessaires et suffisants pour le caractère aléatoire d'une séquence finie de nombres. Tout ce que l'on peut dire d'une séquence de nombres pseudo-aléatoires, c'est qu'elle « ressemble » au hasard. Aucun critère statistique n'est un indicateur fiable d'exactitude. À tout le moins, il est nécessaire d'utiliser plusieurs tests reflétant les aspects les plus importants de la qualité du générateur de nombres aléatoires, c'est-à-dire le degré auquel il se rapproche d'un générateur idéal.

    Par conséquent, en plus de tester le générateur, il est extrêmement important de le vérifier à l'aide de tâches typiques qui permettent une évaluation indépendante des résultats par des méthodes analytiques ou numériques.

    On peut dire que l'idée de la fiabilité des nombres pseudo-aléatoires est créée lors de leur utilisation, avec une vérification minutieuse des résultats chaque fois que possible.



     


    Lire:



    Youri Trutnev Youri Trutnev vie personnelle

    Youri Trutnev Youri Trutnev vie personnelle

    Qui aurait pensé, tout récemment, que les divorces siégeraient tout à fait ouvertement au gouvernement fédéral? Cependant, les temps sont un peu...

    Le gouverneur de Sakhaline, Alexander Horoshavin, a été arrêté parce qu'il était soupçonné d'avoir accepté un pot-de-vin Qu'est-il arrivé à Horoshavin

    Le gouverneur de Sakhaline, Alexander Horoshavin, a été arrêté parce qu'il était soupçonné d'avoir accepté un pot-de-vin Qu'est-il arrivé à Horoshavin

    Un ancien responsable s'est plaint à Poutine du manque de yachts, de villas et d'hôtels au bord de la mer Le coût total est de plus de 240 millions de roubles. Voitures ...

    L'ancien souverain. III. Le souverain et sa cour. Dioclétien : Quae fuerunt vitia, mores sunt - Ce qu'étaient les vices est maintenant entré dans les mœurs

    L'ancien souverain.  III.  Le souverain et sa cour.  Dioclétien : Quae fuerunt vitia, mores sunt - Ce qu'étaient les vices est maintenant entré dans les mœurs

    Il y a 400 ans, la dynastie des Romanov monta sur le trône de Russie. Dans le contexte de cette date mémorable, des discussions s'enflamment sur l'influence du pouvoir tsariste...

    Réforme de l'ordre en Russie

    Réforme de l'ordre en Russie

    Le système des organes du pouvoir central de l'État, qui a commencé à se former sous Ivan III, a reçu une forme relativement complète au cours des réformes d'Ivan ...

    image de flux RSS