Pour autant que je sache, la plupart des implémentations de la génération de nombres pseudo-aléatoires utilisent des méthodes telles que les registres de rétroaction à décalage linéaire (LSFR), ou ces algorithmes "Mersenne Twister". Bien qu'ils passent de nombreux tests statistiques (heuristiques), il n'y a aucune garantie théorique qu'ils semblent pseudo-aléatoires pour, disons, tous les tests statistiques efficacement calculables. Pourtant, ces méthodes sont utilisées sans discernement dans toutes sortes d'applications, allant des protocoles cryptographiques au calcul scientifique en passant par la banque (probablement). Je trouve quelque peu inquiétant que nous ayons peu ou pas de garantie que ces applications fonctionnent comme prévu (car toute sorte d'analyse aurait probablement supposé un vrai caractère aléatoire en entrée).
D'un autre côté, la théorie de la complexité et la cryptographie fournissent une théorie très riche de la pseudo-aléatoire, et nous avons même des constructions candidates de générateurs de pseudo-aléatoire qui tromperaient TOUT test statistique efficace que vous pourriez trouver, en utilisant des fonctions unidirectionnelles candidates.
Ma question est: cette théorie a-t-elle fait son chemin dans la pratique? J'espère que pour des utilisations importantes de l'aléatoire, telles que la cryptographie ou le calcul scientifique, des PRG théoriquement solides sont utilisés.
En passant, je pourrais trouver une analyse limitée de la façon dont les algorithmes populaires tels que le tri rapide fonctionnent lorsque vous utilisez les LSFR comme source de hasard, et apparemment, ils fonctionnent bien. Voir les «algorithmes randomisés et nombres pseudo-aléatoires» de Karloff et Raghavan .
la source
Réponses:
La notion de générateurs pseudo-aléatoires "théoriquement solides" n'est pas vraiment bien définie. Après tout, aucun générateur pseudo-aléatoire n'a de preuve de sécurité. Je ne sais pas si nous pouvons dire qu'un générateur pseudo-aléatoire basé sur la dureté de la factorisation de grands entiers est "plus sûr" que, disons, en utilisant AES comme générateur pseudo-aléatoire. (En fait, on a le sentiment qu'il est moins sûr, car nous connaissons des algorithmes de factorisation quantique mais pas des algorithmes quantiques pour briser l'AES.)
Nous avons des preuves mathématiques pour différents résultats de composition, en disant que si vous composez des chiffrements par blocs ou des fonctions de hachage de certaines manières, vous pouvez obtenir des générateurs pseudo-aléatoires ou une fonction pseudo-aléatoire. Certains de ces résultats sont largement utilisés dans la pratique, par exemple HMAC . Mais il est vrai que les résultats qui atteignent un PRG et commencent simplement en supposant que le composant de base est une fonction unidirectionnelle simple ne sont pas assez efficaces pour être utilisés pour les applications (et cela est au moins en partie inhérent). Donc, généralement, nous devons assumer une fonction PRG / stream cipher / block-cipher / hash comme une primitive de base et commencer à en construire d'autres. Le problème ne concerne pas vraiment l'analyse asymptotique, car pratiquement toutes les réductions cryptographiques (à l'exception peut-être du PRG universel de Levin) peuvent être concrétisées et donner ainsi des garanties concrètes sous des hypothèses concrètes.
Mais même si elles ne sont pas basées sur des fonctions à sens unique, il y a un sens dans lequel les constructions telles que AES sont "théoriquement solides" parce que: (1) Il existe des conjectures formelles concernant leur sécurité. (2) Il y a du travail pour essayer de réfuter ces conjectures, et aussi d'en tirer des implications.
Et en effet, les gens sont conscients que pour de nombreuses applications, il ne serait pas intelligent d'utiliser des PRG tels que LSFR qui ne satisfont pas (1) et (2) ci-dessus.
la source
Vous semblez confondre théorie et pratique. Un générateur pseudo-aléatoire théoriquement solide ne convient pas pour une utilisation pratique pour plusieurs raisons:
Contrairement à cela, les générateurs pseudo-aléatoires réels sont rapides et se déclinent en différentes saveurs en fonction de leur utilisation. Pour une utilisation non cryptographique, presque tout autre chose qu'un simple LFSR fera le travail - pas de manière prouvable, mais dans la pratique (ce qui est plus important pour les personnes utilisant des choses en réalité).
Pour une utilisation cryptographique, les gens essaient d'être plus intelligents. À ce stade, votre critique est logique: nous ne pouvons pas savoir qu'un générateur pseudo-aléatoire utilisé est "sûr", et en effet certains anciens ont été cassés, par exemple RC4 tel qu'il est utilisé dans WEP. Cependant, pour les raisons indiquées ci-dessus, l'utilisation d'un générateur pseudo-aléatoire théoriquement (conditionnellement) n'est malheureusement pas une solution réaliste. Au lieu de cela, la communauté cryptologique s'appuie sur un «examen par les pairs» - d'autres chercheurs qui tentent de «casser» le système (leur définition du moment où un chiffre est rompu est très large).
Enfin, dans les applications où l'argent peut être investi et la sécurité est suffisamment importante - disons les codes nucléaires - les gens utilisent du bruit généré physiquement (passé par un extracteur de hasard), même si cela n'est pas au-delà des critiques théoriques.
Lorsque les chercheurs rédigent des propositions de subvention ou des introductions à des articles, ils affirment souvent que leur recherche se rapporte et informe la pratique. Qu'ils y croient ou que ce soit du bout des lèvres, je ne sais pas (et cela peut dépendre du chercheur), mais vous devez être conscient que la connexion est grandement exagérée dans les milieux universitaires, pour des raisons évidentes.
Une chose qui nous limite en tant que chercheurs en mathématiques est notre attachement dogmatique à la preuve formelle. Vous mentionnez l'analyse d'algorithmes randomisés alimentés par de simples générateurs pseudo-aléatoires. Ce type d'analyse ne peut être étendu aux problèmes du monde réel, car ils sont tout simplement trop compliqués. Et pourtant, dans la pratique, les gens résolvent tout le temps même des problèmes difficiles avec des méthodes éclairées.
Les problèmes du monde réel sont mieux compris avec un œil plus scientifique et expérimental. Ils sont mieux résolus du point de vue de l'ingénierie. Ils inspirent la recherche théorique et en sont parfois informés. Comme l'a dit Dijsktra, l'informatique (théorique) ne concerne pas vraiment les ordinateurs, pas plus.
la source