« CSPRNG » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 23 : | Ligne 23 : | ||
== Evolutions == |
== Evolutions == |
||
== Sources et Liens utiles == |
|||
[https://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator les CSPRNG] |
|||
[https://en.wikipedia.org/wiki/Entropy_(computing) Entropie] |
|||
[https://www.schneier.com/academic/paperfiles/paper-yarrow.pdf Article Yarrow] (1999) |
|||
[https://en.wikipedia.org/wiki/Yarrow_algorithm Wiki Yarrow] |
|||
[https://www.schneier.com/academic/paperfiles/fortuna.pdf Article Fortuna] (2003) |
|||
[https://en.wikipedia.org/wiki/Fortuna_(PRNG) Wiki Fortuna] |
|||
[https://eprint.iacr.org/2014/167.pdf Généralisation de Fortuna] (2014) |
|||
[https://en.wikipedia.org/wiki/Random_number_generator_attack Wiki Attaques sur les PRNG] |
|||
[https://www.schneier.com/academic/paperfiles/paper-prngs.pdf Article sur les attaques] |
|||
[http://dc.wikia.com/wiki/Krypto_the_Superdog_(TV_Series) Bonus] |
Version du 23 novembre 2018 à 21:01
Les générateurs pseudo-aléatoires (PRNG) sont énormément utilisés en cryptographie, que ce soit pour générer des clés utilisées par des algorithmes de chiffrement symétriques, des salts pour perturber les logiciels de prédiction, des vecteurs d'initialisation utiles lors de l'utilisation de chiffrements par bloc en chaine, etc ...
Les cryptographes développent des algorithmes en se basant sur l'idée qu'on peut effectivement générer des nombres de manière imprévisible. Mais peut-on vraiment soutenir la robustesse d'un algorithme de chiffrement qui se base sur des nombres qu'un attaquant saurait deviner à l'avance ? Autrement dit, à quel point un algorithme peut être sécurisé, s'il est possible pour un attaquant de compromettre le générateur qu'il utilise ? Il apparait alors évidemment qu'un générateur se doit d'être lui aussi robuste et sécurisé.
Nous nous intéressons donc ici à certains modèles de générateurs pseudo-aléatoires crypto-sécurisés (CSPRNG).
Attaques de PRNG
Yarrow
Yarrow désigne une famille de PRNG conçue par Bruce Schneier, John Kelsey et Niels Ferguson en 1999, dont le nom fait référence à d'anciens rites de divination.
Le modèle Yarrow se divise en 3 composants principaux : un accumulateur d'entropie, un mécanisme de reseed et un générateur à proprement parler (+ problème des anniversaires).
Accumulateur d'entropie (mesure du caractère aléatoire) : Yarrow comporte 2 boîtes de 160 bits, dédiées à stocker les bits aléatoires issus de sources d'entropie. Typiquement, ces bits proviennent du système d'exploitation de la machine et du materiel en lui même (exemples : timing exacts de pression des touches, trajectoire du pointeur, ...). Pour les remplir, il va donc être question d'estimer la quantité d'entropie présente dans un apport. Cette estimation s'effectue en gardant la plus petite valeur issue, soit de l'estimation du programmer lorsqu'il récupère un apport d'une source, soit d'un estimateur statistique spécialisé pour une source, ou soit de la division de la longueur de l'apport (en bits) par 2.
Bons points :
Limites :
Fortuna
Evolutions
Sources et Liens utiles
Article Yarrow (1999)
Article Fortuna (2003)
Généralisation de Fortuna (2014)