Sélectionner la langue

Générateur de mots de passe sécurisé basé sur un générateur de nombres pseudo-aléatoires (PRNG)

Un article de recherche proposant un générateur de mots de passe sécurisé utilisant des PRNG basés sur HMAC, CMAC ou KMAC, validé via les tests d'entropie et IID du NIST SP 800-90B.
computationalcoin.com | PDF Size: 0.5 MB
Note: 4.5/5
Votre note
Vous avez déjà noté ce document
Couverture du document PDF - Générateur de mots de passe sécurisé basé sur un générateur de nombres pseudo-aléatoires (PRNG)

Table des matières

1. Introduction

Cette recherche aborde le problème persistant des fuites de mots de passe et du risque d'exposition des données personnelles qui en résulte. Si la sécurité des sites web est un facteur, la robustesse intrinsèque du mot de passe lui-même est primordiale. Les vulnérabilités courantes incluent les mots de passe basés sur des mots-clés, des phrases populaires, des informations utilisateur et la réutilisation de mots de passe. L'essor de l'IA et des grands modèles de langage renforce encore la capacité des attaquants à deviner les mots de passe plus efficacement.

En réponse, cet article propose un générateur de mots de passe sécurisé construit sur un générateur de nombres pseudo-aléatoires (PRNG) sécurisé. Le PRNG central est construit à l'aide de primitives cryptographiques comme HMAC, CMAC ou KMAC pour générer des nombres aléatoires de haute qualité, qui sont ensuite utilisés pour créer des mots de passe. Le système permet une entrée utilisateur facultative (Message à hacher, TBHM) pour amorcer le processus. Les principales contributions sont :

2. Revue de la littérature

2.1. Générateur de nombres pseudo-aléatoires basé sur un générateur congruentiel linéaire

Les langages de programmation courants (C, Java) utilisent des générateurs congruentiels linéaires (LCG). Étant donné une graine $k$, la séquence est générée comme suit : $f_0(k) \equiv a \oplus k \ (\text{mod} \ m)$ et $f_i(k) \equiv a \times f_{i-1}(k) + c \ (\text{mod} \ m)$. Cette méthode est non sécurisée car l'état peut être inversé : $f_{i-1}(k) \equiv (f_i(k) - c) \times a^{-1} \ (\text{mod} \ m)$, exposant ainsi la graine et toute la séquence.

2.2. Générateur de nombres pseudo-aléatoires sécurisé

Les PRNG sécurisés sont basés sur des primitives cryptographiques telles que décrites dans le NIST SP 800-108 Rev. 1.

2.2.1. Basé sur HMAC

La sécurité repose sur la propriété unidirectionnelle des fonctions de hachage (par exemple, SHA2, SHA3). Pour une clé $k$ et un message $M$, le HMAC est calculé comme suit : $r_{hmac}(k, M) = h((k \oplus opad) \ || \ h((k \oplus ipad) \ || \ M))$. Pour générer un flux de bits aléatoires de longueur $L$, un mode compteur est utilisé : $M_i = i \ || \ \text{KDF} \ || \ 0x00 \ || \ M \ || \ L$, produisant les sorties $r_{hmac,i}$.

2.2.2. Basé sur CMAC

La sécurité repose sur le chiffrement par bloc AES en mode CBC. Le message $M$ est divisé en blocs $M'_1, M'_2, ...$. Le processus itère : $c_{i+1} = AES(k, c_i \oplus M'_{i+1})$ avec $c_0 = Pad0(0)$. La sortie finale $r_{cmac}$ est dérivée du dernier bloc de chiffrement après un remplissage spécifique (Pad1).

2.2.3. Basé sur KMAC

Utilise la fonction d'éponge KECCAK (fondement de SHA-3), offrant une fonction MAC flexible et robuste adaptée à la génération de bits aléatoires déterministes.

2.3. Méthodes de validation de l'aléatoire

L'article adopte le cadre du NIST SP 800-90B, qui est la norme de facto pour valider les sources d'entropie. Il comprend deux suites de validation critiques :

3. Générateur de mots de passe sécurisé proposé

L'architecture du système proposé est simple mais puissante :

  1. Entrée/Graine : Accepte un TBHM facultatif fourni par l'utilisateur. S'il est fourni, il est traité ; sinon, une graine sécurisée générée par le système est utilisée.
  2. Cœur PRNG sécurisé : Le TBHM/graine est introduit dans l'une des trois constructions cryptographiques de PRNG (basée sur HMAC, CMAC ou KMAC) pour générer une séquence de bits pseudo-aléatoires cryptographiquement robuste.
  3. Construction du mot de passe : Les bits aléatoires sont mappés sur un jeu de caractères défini par l'utilisateur ou par le système (par exemple, alphanumérique + symboles) pour produire un mot de passe de la longueur souhaitée.

Analyse de sécurité : L'article soutient que la sécurité du mot de passe généré dépend directement de l'entropie de la sortie du PRNG et de la taille du jeu de caractères. Il effectue une analyse comparative, montrant qu'un mot de passe de 16 caractères provenant d'un jeu de 94 caractères généré par cette méthode peut offrir une résistance à la force brute comparable ou supérieure à celle des clés AES-128 ou AES-256, en supposant que la sortie du PRNG est véritablement aléatoire.

4. Résultats expérimentaux et analyse

La validation expérimentale est un point fort clé de l'article.

Description du graphique (implicite) : Un diagramme à barres permettrait de comparer efficacement les estimations d'entropie minimale (en bits par bit) pour les trois méthodes PRNG par rapport à la valeur idéale de 1,0. Toutes les barres seraient très proches de 1,0. Un deuxième graphique pourrait montrer les valeurs p des tests IID clés (par exemple, Chi-carré, Kolmogorov-Smirnov), toutes les valeurs étant bien au-dessus du seuil de signification typique (par exemple, 0,01), indiquant une réussite.

5. Conclusion et travaux futurs

La recherche démontre avec succès un cadre de génération de mots de passe sécurisé basé sur des PRNG cryptographiques. Les méthodes proposées génèrent des mots de passe avec une aléatoire suffisant, comme rigoureusement validé par les normes NIST. Les orientations des travaux futurs incluent :

6. Analyse originale et avis d'expert

Idée centrale : Cet article ne consiste pas à inventer une nouvelle primitive cryptographique ; il s'agit de l'application et de la validation disciplinées de primitives existantes et éprouvées (HMAC, CMAC, KMAC) pour résoudre le problème banal mais critique de la génération de mots de passe. Sa valeur réelle réside dans le fait de combler le fossé entre la cryptographie théorique et l'hygiène de sécurité pratique, en prouvant rigoureusement que sa sortie est adaptée à l'objectif en utilisant la suite de tests de référence NIST.

Enchaînement logique : L'argumentation est solide : 1) Les LCG standard sont cryptographiquement cassés. 2) Les PRNG sécurisés construits à partir de MAC cryptographiques sont prouvés robustes. 3) Par conséquent, les mots de passe dérivés de tels PRNG héritent de cette robustesse. 4) Cette affirmation est validée non seulement par la théorie, mais aussi par la réussite de tests empiriques stricts (NIST SP 800-90B). Cette validation de bout en bout est ce qui manque à de nombreux outils de « générateur de mots de passe sécurisé ».

Points forts et faiblesses :
Points forts : La rigueur méthodologique est louable. L'utilisation du NIST SP 800-90B pour la validation élève immédiatement sa crédibilité, à l'instar de la validation des algorithmes cryptographiques via le CAVP (Cryptographic Algorithm Validation Program). La comparaison avec la robustesse des clés AES est une métrique pratique et compréhensible pour les équipes de sécurité.
Faiblesses : L'article opère dans un cadre contrôlé et idéalisé. Il suppose que la graine/TBHM initiale a une entropie suffisante – un maillon critique et souvent faible dans les systèmes réels. L'entrée utilisateur « facultative » est une arme à double tranchant ; une phrase utilisateur faible et prévisible (par exemple, « monmotdepasse ») pourrait compromettre toute la construction cryptographique, un risque non pleinement quantifié. De plus, comme indiqué dans la revue de 2023 « Post-Quantum Cryptography: A Ten-Year Journey » du NIST, le domaine évolue vers des algorithmes résistants aux ordinateurs quantiques. Les constructions de l'article, bien que sécurisées contre les ordinateurs classiques, reposent sur SHA2/AES, dont la résistance quantique à long terme est incertaine.

Perspectives exploitables : Pour les architectes de sécurité, cet article fournit un plan. Ne créez pas votre propre PRNG. Utilisez des constructions cryptographiques établies comme blocs de construction. Plus important encore, validez, validez, validez. Intégrez une validation continue de l'entropie (comme les tests NIST) dans vos systèmes critiques de génération de nombres aléatoires, une pratique mise en avant par des organisations comme les efforts de certification CC (Critères Communs) de la Linux Foundation. Pour le développement de produits, la conclusion immédiate est de remplacer toute génération de mots de passe basée sur LCG dans vos systèmes par un générateur basé sur KMAC ou HMAC-SHA256, en utilisant une graine provenant d'une source sécurisée. L'étape de pérennisation consiste à commencer le prototypage avec des conceptions basées sur SHA-3/KECCAK (comme KMAC) et à surveiller l'évolution des normes de cryptographie post-quantique du NIST pour une intégration future.

7. Détails techniques et formulation mathématique

Les opérations mathématiques centrales sont définies dans la Revue de la littérature (Section 2). Les formules clés incluent :

La génération du mot de passe mappe un entier aléatoire $R$ (provenant de la sortie du PRNG) à un index de caractère : $\text{index} = R \ \text{mod} \ |S|$, où $|S|$ est la taille du jeu de caractères.

8. Cadre d'analyse et exemple de cas

Exemple de cas : Évaluation du générateur de mots de passe d'un système hérité
Scénario : Une application web héritée utilise un LCG modifié pour générer des mots de passe temporaires utilisateur. Un audit de sécurité est requis.
Application du cadre :

  1. Identifier le type de PRNG : Inspecter le code source. Trouver : seed = (a * seed + c) % m; Confirmer qu'il s'agit d'une variante de LCG.
  2. Évaluer la sécurité cryptographique : Le LCG est déterministe et réversible. Un attaquant obtenant quelques mots de passe consécutifs pourrait résoudre pour la graine et prédire tous les mots de passe futurs, violant les directives du NIST SP 800-63B sur l'aléatoire des authentificateurs.
  3. Proposer une correction en utilisant la méthode de l'article :
    • Source de la graine : Remplacer la graine basée sur l'heure système par un CSPRNG (par exemple, /dev/urandom sur Linux, CryptGenRandom sur Windows).
    • Générateur central : Implémenter un PRNG basé sur HMAC-SHA256 selon la conception de l'article.
    • Validation : Générer un large échantillon (1 000 000 bits) à partir du nouveau générateur et exécuter le NIST STS (Statistical Test Suite) ou les estimateurs d'entropie du SP 800-90B pour vérifier l'aléatoire avant le déploiement.
Ce cadre fait passer l'évaluation de « cela semble-t-il aléatoire ? » à « cela passe-t-il la validation cryptographique standardisée ? »

9. Applications futures et orientations de développement

Les principes s'étendent au-delà des mots de passe utilisateur :

10. Références

  1. M. Bishop, “Computer Security: Art and Science”, Addison-Wesley, 2019.
  2. NIST, “Special Publication 800-63B: Digital Identity Guidelines”, 2020.
  3. NIST, “Special Publication 800-90B: Recommendation for the Entropy Sources Used for Random Bit Generation”, 2018.
  4. NIST, “Special Publication 800-108 Rev. 1: Recommendation for Key Derivation Using Pseudorandom Functions”, 2022.
  5. NIST, “FIPS 202: SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions”, 2015.
  6. J. Kelsey, B. Schneier, D. Wagner, “Secure Applications of Low-Entropy Keys”, Information Security Workshop, 1997.
  7. M. Dworkin, “Recommendation for Block Cipher Modes of Operation: The CMAC Mode for Authentication”, NIST SP 800-38B, 2005.
  8. NIST, “Status Report on the Third Round of the NIST Post-Quantum Cryptography Standardization Process”, 2022. [En ligne]. Disponible : https://csrc.nist.gov/projects/post-quantum-cryptography
  9. Linux Foundation, “Common Criteria Certification and Open Source”, 2023. [En ligne]. Disponible : https://www.linuxfoundation.org/