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)

Cet article propose 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

Les rapports persistants de fuites de comptes et de mots de passe sur les sites web soulignent l'importance cruciale de la sécurité de l'information et des mots de passe. Si les vulnérabilités des sites web sont un facteur, la sécurité intrinsèque du mot de passe lui-même est primordiale. Les pratiques courantes de mots de passe non sécurisés incluent les mots de passe basés sur des mots-clés, l'utilisation de phrases populaires, l'incorporation d'informations personnelles et la réutilisation des 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.

Cette recherche propose un générateur de mots de passe sécurisé basé sur des générateurs de nombres pseudo-aléatoires cryptographiquement sûrs (PRNG). Il construit des PRNG en utilisant le code d'authentification de message à hachage avec clé (HMAC), le code d'authentification de message basé sur un chiffrement (CMAC) ou le code d'authentification de message KECCAK (KMAC) pour produire des nombres aléatoires sécurisés, qui sont ensuite utilisés pour générer des mots de passe. L'aléatoire des nombres générés est validé par rapport à la norme NIST SP 800-90B via des tests d'entropie et des tests d'indépendance et de distribution identique (IID).

Contributions clés :

2. Revue de la littérature

2.1. PRNG basé sur un générateur congruentiel linéaire

Couramment utilisé dans des langages comme C et Java, les GCL génèrent une séquence de nombres en utilisant une relation de récurrence linéaire. Étant donné une graine $k$, la valeur initiale $f_0(k)$ est calculée comme $f_0(k) \equiv a \oplus k \ (\text{mod} \ m)$. Les nombres suivants sont générés par $f_i(k) \equiv a \times f_{i-1}(k) + c \ (\text{mod} \ m)$. Cependant, les GCL sont non sécurisés car l'état peut être inversé en utilisant $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é

Pour remédier aux vulnérabilités des GCL, les PRNG cryptographiquement sûrs sont essentiels. Cet article se concentre sur trois constructions recommandées par le NIST.

2.2.1. PRNG 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 $r_{hmac}(k, M) = h((k \oplus opad) \ || \ h((k \oplus ipad) \ || \ M))$, où $ipad$ et $opad$ sont des constantes. Pour générer un long flux de bits, un mode compteur est utilisé : $M_i = i \ || \ KDF \ || \ 0x00 \ || \ M \ || \ L$, produisant les sorties $r_{hmac,i}$.

2.2.2. PRNG basé sur CMAC

La sécurité est basée sur la norme de chiffrement avancé (AES). En utilisant le mode chaînage par blocs de chiffrement (CBC) avec la clé $k$, le message $M$ est divisé en blocs $M'_1, M'_2, ...$. Le texte chiffré est calculé itérativement : $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.

2.2.3. PRNG basé sur KMAC

Basé sur la fonction de hachage SHA-3 (KECCAK), KMAC fournit une sortie de longueur variable et est considéré comme un candidat solide pour la cryptographie post-quantique. Sa construction suit un principe similaire de hachage authentifié, offrant des garanties de sécurité élevées.

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

La norme NIST SP 800-90B fournit des méthodologies pour évaluer la qualité des générateurs de nombres aléatoires. Deux aspects clés sont évalués :

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

L'architecture du système implique deux étapes principales :

  1. Génération de nombres aléatoires sécurisés : Un utilisateur peut éventuellement fournir un message à hacher (TBHM). Celui-ci, ainsi qu'une clé cryptographique, est traité par le PRNG sécurisé choisi (basé sur HMAC/CMAC/KMAC) pour produire une séquence de bits aléatoires cryptographiquement robuste.
  2. Génération 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 plus symboles) d'une longueur spécifiée pour générer le mot de passe textuel final. La force de sécurité est analysée par rapport à AES-128/256, en tenant compte de l'entropie fournie par la taille du jeu de caractères et la longueur du mot de passe.

4. Expériences et résultats

4.1. Configuration expérimentale

Des expériences ont été menées pour valider l'aléatoire des sorties des PRNG. La suite de tests a mis en œuvre les procédures d'évaluation du NIST SP 800-90B pour l'estimation de l'entropie et les tests IID sur de grands échantillons de nombres aléatoires générés par les trois types de PRNG.

4.2. Résultats de la validation de l'aléatoire

Résumé des résultats : Les PRNG proposés basés sur HMAC, CMAC et KMAC ont tous réussi les tests de validation d'entropie et IID du NIST SP 800-90B. Les séquences générées n'ont montré aucune déviation statistiquement significative par rapport à un véritable aléatoire, confirmant leur adéquation pour la génération cryptographique de mots de passe.

Description du graphique (imaginaire) : Un diagramme à barres comparant les estimations de min-entropie (en bits par bit) pour les trois types de PRNG par rapport au seuil de réussite du NIST. Les trois barres seraient nettement au-dessus de la ligne de seuil, KMAC montrant potentiellement la valeur la plus élevée, suivi de près par HMAC-SHA3 et CMAC-AES256.

4.3. Analyse des performances

Une analyse comparative de l'efficacité computationnelle (par exemple, générations par seconde) a été réalisée. Les générateurs basés sur CMAC (utilisant l'accélération matérielle AES-NI) ont généralement montré le débit le plus élevé, suivis par ceux basés sur HMAC (SHA2/SHA3), KMAC étant plus lourd en calcul mais offrant des propriétés de sécurité post-quantique robustes.

5. Conclusion et travaux futurs

Cette recherche a conçu et validé avec succès un générateur de mots de passe sécurisé construit sur des PRNG cryptographiquement sûrs (HMAC, CMAC, KMAC). La sécurité des mots de passe générés découle de la robustesse éprouvée de ces primitives cryptographiques sous-jacentes et de l'aléatoire élevé vérifié de la sortie du PRNG. Les travaux futurs incluent l'intégration du générateur dans des extensions de navigateur ou des gestionnaires de mots de passe, l'exploration de son utilisation pour générer des clés cryptographiques au-delà des mots de passe, et la conduite d'une analyse de résistance aux attaques par canaux auxiliaires sur le système complet.

6. Analyse originale et commentaire d'expert

Idée centrale : Cet article est une réponse pragmatique et axée sur l'ingénierie au maillon faible perpétuel de la cybersécurité : les mots de passe choisis par les humains. Sa valeur fondamentale ne réside pas dans une cryptographie nouvelle, mais dans l'application correcte et la validation rigoureuse de constructions existantes et éprouvées (HMAC, CMAC, KMAC) pour un cas d'utilisation spécifique et à fort impact. Il identifie correctement que le déplacement de la génération des mots de passe du cerveau de l'utilisateur vers un processus cryptographique validé constitue une amélioration fondamentale de la sécurité, similaire au passage de la cryptographie symétrique à asymétrique pour l'échange de clés.

Flux logique : La logique est solide et suit un schéma classique de recherche appliquée : définition du problème (mots de passe faibles) → critique des solutions courantes (GCL non sécurisés) → proposition d'une solution robuste (générateur basé sur CSPRNG) → validation empirique (tests NIST). Le choix du NIST SP 800-90B comme référence de validation est excellent, car c'est la norme de facto pour évaluer l'aléatoire dans les contextes cryptographiques, conférant une crédibilité immédiate aux résultats.

Points forts et faiblesses :
Points forts : Le plus grand atout de l'article est sa validation pratique. De nombreuses propositions s'arrêtent à la phase de conception. En soumettant la sortie aux tests stricts du NIST, les auteurs fournissent des preuves concrètes de sécurité, ce qui est crucial pour l'adoption. L'inclusion de KMAC, basé sur SHA-3, montre une prévoyance concernant les considérations post-quantiques, comme noté dans le processus de normalisation de la cryptographie post-quantique en cours au NIST.
Faiblesses/Omissions : L'analyse est quelque peu cloisonnée. Une faiblesse significative est l'absence de discussion sur la gestion de la graine. La sécurité de tout PRNG s'effondre si sa graine est prévisible ou divulguée. Comment le système génère-t-il, stocke-t-il et protège-t-il la clé cryptographique initiale pour HMAC/CMAC/KMAC ? C'est aussi critique que l'algorithme lui-même. De plus, bien que la comparaison de la force des mots de passe à AES soit utile, une comparaison plus directe avec les générateurs de mots de passe existants (comme ceux de KeePass ou 1Password) et leurs PRNG sous-jacents (par exemple, utilisant ChaCha20) fournirait un meilleur contexte pour son avantage concurrentiel.

Perspectives actionnables : Pour les praticiens de la sécurité, cet article sert de plan directeur. Action 1 : Déprécier immédiatement toute utilisation de GCL ou de RNG non cryptographiques similaires (comme `rand()`) pour les tâches sensibles à la sécurité. Action 2 : Lors de la construction ou de l'audit d'un générateur de mots de passe, les éléments principaux de la liste de contrôle doivent être : 1) Utiliser un CSPRNG (HMAC_DRBG, CTR_DRBG du NIST SP 800-90A, ou les constructions ici présentes), 2) Valider sa sortie avec une suite comme NIST SP 800-90B ou Dieharder, et 3) Implémenter une génération de graine robuste à partir d'une source à haute entropie (par exemple, `getrandom()` sous Linux). L'article se concentre avec succès sur le point 2, mais les points 1 et 3 sont des parties tout aussi vitales de l'image complète.

7. Détails techniques et formulation mathématique

La sécurité du générateur proposé dépend des fonctions cryptographiques sous-jacentes. Les opérations mathématiques clés sont :

8. Cadre d'analyse et exemple de cas

Exemple de cas : Audit de la fonction de réinitialisation de mot de passe d'une application web
Scénario : Une application web génère un mot de passe temporaire pour les utilisateurs qui cliquent sur "Mot de passe oublié".
Application du cadre :

  1. Identifier le RNG : Inspecter le code côté serveur. Trouver `Math.random()` (JavaScript) ou un simple GCL en PHP serait un échec critique.
  2. Évaluer la source d'entropie : Comment le PRNG est-il amorcé ? Utilise-t-il l'entropie système (`/dev/urandom`, `CryptGenRandom`) ?
  3. Cartographier vers la solution proposée : Recommander de remplacer le RNG défectueux par un module implémentant la conception de cet article — par exemple, une fonction Python utilisant `hmac.new` avec SHA256 et une graine provenant de `os.urandom(32)`.
  4. Valider la sortie (post-implémentation) : Générer un échantillon de 1 000 000 de mots de passe temporaires, convertir en flux de bits, et exécuter la suite NIST STS (une suite de tests connexe) pour garantir l'aléatoire.
Ce cadre transforme la théorie de l'article en une liste de contrôle concrète pour l'audit et la remédiation.

9. Applications futures et orientations

La technologie de base a des applications au-delà de la génération de mots de passe utilisateur :

10. Références

  1. M. Bishop, "Computer Security: Art and Science," Addison-Wesley, 2003.
  2. NIST, "Special Publication 800-63B: Digital Identity Guidelines," 2017.
  3. NIST, "Special Publication 800-90A: Recommendation for Random Number Generation Using Deterministic Random Bit Generators," 2015.
  4. NIST, "Special Publication 800-90B: Recommendation for the Entropy Sources Used for Random Bit Generation," 2018.
  5. J. Kelsey, B. Schneier, D. Wagner, "Secure Applications of Low-Entropy Keys," ISW '97.
  6. D. D. Hwang, B. B. Gupta, "A Study of Password Security and Its Implications," JIS, 2019.
  7. NIST, "FIPS 202: SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions," 2015.
  8. NIST, "SP 800-185: SHA-3 Derived Functions: cSHAKE, KMAC, TupleHash and ParallelHash," 2016.
  9. M. S. Turan, E. Barker, J. Kelsey, "Recommendation for Random Bit Generator (RBG) Constructions," NIST SP 800-90C, 2016.
  10. P. G. Neumann, "Illustrative Risks to the Public in the Use of Computer Systems and Related Technology," ACM SIGSOFT, 1995.