CSPRNG

De Wiki du LAMA (UMR 5127)
Aller à la navigation Aller à la recherche

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

les CSPRNG

Entropie

Article Yarrow (1999)

Wiki Yarrow

Article Fortuna (2003)

Wiki Fortuna

Généralisation de Fortuna (2014)

Wiki Attaques sur les PRNG

Article sur les attaques

Bonus