Dans quels domaines les nombres aléatoires sont-ils utiles?
Qu’est-ce qui caractérise le pseudo aléatoire?
Qu’est-ce qui caractérise la génération sécuritaire/crypto?
Vrai ou faux:
RNG n’est jamais réellement aléatoire en informatique, même CSPRNG?
Vrai
Cloudflare ajoute de l’entropie à leur algo aléatoire cryptographique à l’aide de _____
Lava lamps
Pourquoi ne devrait-on JAMAIS utiliser un PRNG pour la sécurité?
Parce qu’un attaquant peut deviner/prédire les valeurs futures si il connaît quelques valeurs générées, permettant d’exploiter (ex: deviner lien reset password, prédire tokens CSRF)
Qu’est-ce qu’un seed dans un PRNG?
La valeur initiale qui détermine toute la séquence de nombres “aléatoires”. Même seed = même séquence à chaque fois.
Comment Java Random génère ses nombres (type d’algo)?
LCG (Linear Congruential Generator) - utilise formule mathématique: (seed × multiplier + addend) & mask
Combien de bits doivent être brute-forcés pour récupérer le seed interne de Java Random si on connaît 2 valeurs consécutives?
16 bits (2^16 = 65,536 possibilités) - très faisable en quelques secondes!
Pourquoi les appareils IoT ont-ils des problèmes de PRNG?
OS minimal, peu de sources d’entropie (pas de réseau/interruptions variées), économie de ressources, parfois hardware PRNG seulement
Étapes pour attaquer un Java Random si j’observe 2 valeurs consécutives?
1) Observer value1 et value2,
2) Brute-force les 16 bits manquants de seed,
3) Valider avec value2,
4) Prédire toute la séquence future
Le multiplier et l’addend sont publiques vu que le code est Open Source