Sélectionner la langue

Un 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 - Un 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

Ces dernières années, des fuites continues de comptes de sites web et de mots de passe textuels ont été rapportées, soulignant l'importance cruciale de la sécurité de l'information et des mots de passe. Au-delà des vulnérabilités des sites web, la sécurité 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, les mots de passe basés sur des phrases populaires, les mots de passe basés sur les informations de l'utilisateur et la réutilisation des mots de passe. Le développement rapide de l'IA et des modèles de langage de grande taille (LLM) renforce encore la capacité des attaquants à deviner les mots de passe plus efficacement.

Bien que les plateformes utilisent des défenses telles que les mots de passe à usage unique (OTP), l'authentification multifacteur (MFA) et le stockage chiffré des mots de passe, renforcer la sécurité intrinsèque des mots de passe reste crucial. Cette recherche propose un générateur de mots de passe sécurisé basé sur un générateur de nombres pseudo-aléatoires (PRNG) sécurisé. Le PRNG est construit en utilisant le code d'authentification de message à base de hachage (HMAC), le code d'authentification de message à base de chiffrement (CMAC) ou le code d'authentification de message KECCAK (KMAC) pour générer des nombres aléatoires cryptographiquement sûrs, qui sont ensuite utilisés pour produire des mots de passe.

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

De nombreux langages de programmation (par exemple, C, Java) implémentent des PRNG basés sur 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)$

$f_i(k) \equiv a \times f_{i-1}(k) + c \ (\text{mod} \ m)$ pour $i \ge 1$

Cependant, les LCG sont non sécurisés car l'état suivant est dérivé linéairement du précédent ($f_{i-1}(k) \equiv (f_i(k) - c) \times a^{-1} \ (\text{mod} \ m)$), permettant à un attaquant de remonter à la graine.

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

2.2.1. Basé sur le code d'authentification de message à base de hachage (HMAC)

La sécurité du HMAC repose sur la propriété à sens unique des fonctions de hachage cryptographiques (par exemple, SHA-2, SHA-3). 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))$

où $ipad$ et $opad$ sont des constantes de remplissage fixes, et $h$ est la fonction de hachage. Pour générer un flux de bits aléatoires de longueur $L$, un mode compteur est utilisé, modifiant le message pour chaque bloc de sortie : $M_i = i \ || \ \text{KDF} \ || \ 0x00 \ || \ M \ || \ L$, produisant $r_{hmac,i}(k, M_i)$.

2.2.2. Basé sur le code d'authentification de message à base de chiffrement (CMAC)

La sécurité du CMAC est basée sur la norme de chiffrement avancé (AES). Pour une clé $k$ et un message $M$ divisé en blocs $M'_i$ de longueur $l_a$, il fonctionne en mode chaînage par blocs de chiffrement (CBC) :

$c_{i+1} = AES(k, c_i \oplus M'_{i+1})$, avec $c_0 = Pad0(0)$.

La sortie finale $r_{cmac}(k, Split(M))$ est dérivée du dernier bloc de texte chiffré après un remplissage spécifique (Pad1).

2.2.3. Basé sur le code d'authentification de message KECCAK (KMAC)

Le KMAC est basé sur la construction éponge de SHA-3 (KECCAK), offrant flexibilité et sécurité. Il peut être utilisé de manière similaire au HMAC en mode compteur pour générer un flux de bits déterministe et imprévisible adapté aux fins de PRNG, comme décrit dans le NIST SP 800-108 Rev. 1.

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

L'article adopte le cadre du NIST SP 800-90B pour valider l'aléatoire, en se concentrant sur deux aspects clés :

3. Générateur de mots de passe sécurisé proposé basé sur un PRNG sécurisé

L'architecture du système proposé implique :

  1. Entrée : Un "Message à hacher" (TBHM) facultatif fourni par l'utilisateur et des paramètres (longueur de mot de passe souhaitée, jeu de caractères).
  2. Cœur du PRNG sécurisé : Un PRNG construit en utilisant l'une des trois fonctions MAC (HMAC, CMAC ou KMAC) en mode compteur, conformément au NIST SP 800-108. Ce cœur prend le TBHM (et une clé/graine interne) pour générer une séquence de bits pseudo-aléatoires cryptographiquement sûre.
  3. Génération du mot de passe : Les bits aléatoires sont mappés sur le jeu de caractères spécifié par l'utilisateur (par exemple, alphanumérique + symboles) pour créer un mot de passe de la longueur souhaitée.

L'analyse de sécurité compare l'espace de clés effectif des mots de passe générés (basé sur la taille du jeu de caractères $C$ et la longueur $L$, donnant $C^L$ possibilités) à la résistance à la force brute d'AES-128 ($2^{128}$) et d'AES-256 ($2^{256}$). Par exemple, un mot de passe de 16 caractères provenant d'un jeu de 94 caractères offre environ $94^{16} \approx 2^{105}$ possibilités, ce qui est plus faible qu'AES-128 mais reste robuste pour de nombreux usages.

4. Environnement expérimental et résultats

4.1. Configuration expérimentale

Des expériences ont été menées pour générer de grandes séquences de nombres aléatoires en utilisant les PRNG proposés basés sur HMAC, CMAC et KMAC. Ces séquences ont ensuite été soumises à la suite de tests du NIST SP 800-90B.

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

Résultat clé : Les résultats expérimentaux ont démontré que les nombres aléatoires générés par les trois méthodes PRNG proposées (HMAC/SHA-256, CMAC/AES-256, KMAC) ont réussi à passer à la fois la validation d'entropie et les tests de validation IID spécifiés dans le NIST SP 800-90B.

Implication : Cela confirme que les séquences de sortie possèdent une entropie élevée et ne présentent aucune dépendance statistique ou biais détectable, satisfaisant ainsi l'exigence fondamentale d'une source d'aléatoire sécurisée pour la génération de mots de passe.

4.3. Analyse de l'efficacité computationnelle

Bien que ce ne soit pas l'objectif principal, l'article sous-entend un compromis. HMAC/SHA-256 et KMAC sont généralement très efficaces en logiciel. CMAC/AES peut présenter des avantages d'accélération matérielle sur des plateformes spécifiques. Le choix peut être adapté en fonction des contraintes de performance de l'environnement de déploiement.

5. Conclusion et travaux futurs

Cette recherche a conçu et validé avec succès un cadre de générateur de mots de passe sécurisé basé sur des PRNG cryptographiquement robustes (HMAC, CMAC, KMAC). La sécurité des mots de passe générés découle des propriétés éprouvées de ces fonctions MAC et de l'aléatoire élevé validé du flux de bits sous-jacent.

Les orientations futures incluent :

6. Analyse originale et perspective d'expert

Perspective centrale : Le travail de Chen est une solution d'ingénierie pragmatique et conforme aux normes pour un problème de sécurité fondamental : la faible entropie des mots de passe. Il identifie correctement que la cause profonde de nombreuses fuites de mots de passe n'est pas seulement les failles de stockage, mais une génération prévisible. En ancrant la solution dans des constructions approuvées par le NIST (HMAC, CMAC, KMAC) et des cadres de validation (SP 800-90B), la recherche évite la nouveauté cryptographique pour elle-même et fournit plutôt une méthode vérifiablement solide. Cette approche reflète la philosophie derrière des systèmes bien établis comme l'interface /dev/urandom sous Linux, qui agrège l'entropie des événements système, mais ici l'accent est mis sur un processus déterministe, ensemençable et influençable par l'utilisateur, adapté à la génération reproductible de mots de passe.

Flux logique : L'argumentation est méthodique : 1) Établir le problème (mots de passe faibles, devinables). 2) Rejeter les solutions courantes mais imparfaites (RNG basés sur LCG). 3) Proposer des blocs de construction avec une sécurité éprouvée (MAC cryptographiques). 4) Les assembler selon les normes existantes (mode compteur NIST SP 800-108). 5) Valider la sortie par rapport à des références rigoureuses (NIST SP 800-90B). Ce flux est robuste et reflète les meilleures pratiques de la recherche en cryptographie appliquée, similaire à l'évaluation structurée observée dans des travaux fondateurs comme celui de CycleGAN qui a systématiquement validé la qualité de la traduction d'images à travers plusieurs domaines et métriques.

Points forts et faiblesses : Le principal point fort est sa fiabilité. L'utilisation de primitives cryptographiques éprouvées et des directives du NIST minimise les risques. L'entrée utilisateur facultative (TBHM) est une fonctionnalité astucieuse, permettant des graines personnalisées mais sécurisées. Cependant, une faiblesse significative est l'absence d'une analyse de sécurité comparative directe avec les générateurs de mots de passe de pointe, comme ceux utilisant Argon2 ou bcrypt pour l'étirement de clé dans un contexte similaire. La comparaison avec la résistance à la force brute d'AES est utile mais simpliste. Le vecteur d'attaque réel est souvent le craquage hors ligne des mots de passe hachés ; l'article pourrait renforcer son argumentation en modélisant la résistance contre des outils comme Hashcat avec des ensembles de règles optimisés. De plus, bien que les tests du NIST soient autoritaires, ils ne sont pas exhaustifs pour toutes les propriétés cryptographiques ; une discussion sur la résistance aux attaques par canaux auxiliaires sur l'implémentation du PRNG serait précieuse.

Perspectives actionnables : Pour les architectes de sécurité, cet article fournit un plan prêt à l'emploi. Recommandation 1 : Implémenter la variante basée sur KMAC. En tant que dérivé de SHA-3, elle est conçue pour résister aux attaques par extension de longueur qui affectent théoriquement le HMAC basé sur SHA-2 dans certains scénarios, et elle représente un choix plus pérenne. Recommandation 2 : Intégrer ce générateur comme moteur central pour les coffres-forts de mots de passe d'entreprise ou les systèmes SSO où la création de mots de passe basée sur des politiques est requise. Sa nature déterministe (même TBHM + paramètres = même mot de passe) peut être une fonctionnalité pour les scénarios de récupération. Recommandation 3 : Compléter cette solution technique par de l'éducation utilisateur. Le générateur peut produire une chaîne aléatoire de 20 caractères, mais si l'utilisateur opte pour un TBHM court et mémorable et une longueur de 8 caractères, la sécurité chute. L'interface doit imposer des valeurs par défaut raisonnables (par exemple, minimum 12 caractères, jeu de caractères complet) et communiquer visuellement la force de l'entropie, un peu comme les indicateurs de force de mot de passe informés par la recherche d'organisations comme le NCC Group.

7. Détails techniques et formulations mathématiques

La sécurité centrale repose sur la propriété de fonction pseudo-aléatoire (PRF) des MAC. Le PRNG en mode compteur peut être abstrait comme suit :

$R_i = PRF(K, \text{Compteur} \ || \ \text{Étiquette} \ || \ 0x00 \ || \ \text{Entrée} \ || \ L)$

où $PRF$ est $HMAC$, $CMAC$ ou $KMAC$, $K$ est une clé secrète, et $R_i$ sont les blocs de sortie concaténés pour former le flux de bits final.

Mappage du mot de passe : Étant donné une valeur entière aléatoire $v$ dérivée du flux de bits et un jeu de caractères de taille $C$, l'index du caractère est sélectionné comme suit : $index = v \mod C$. Ceci est répété $L$ fois.

8. Cadre d'analyse et exemple conceptuel

Scénario : Un service web doit générer un mot de passe initial robuste et aléatoire pour les nouveaux utilisateurs.

Application du cadre :

  1. Sélection des paramètres : Le service choisit KMAC256 comme PRF, une clé cryptographique dérivée du système $K_{sys}$ stockée de manière sécurisée, et un TBHM composé de l'identifiant utilisateur unique et immuable et d'un horodatage.
  2. Processus :
    • Entrée : TBHM = "USER12345@2023-10-27T10:30:00Z", Longueur $L$ = 16, Jeu de caractères = 94 ASCII imprimables.
    • Le cœur PRNG traite cela avec $K_{sys}$ en mode compteur pour générer 128 bits aléatoires (16 caractères * log2(94) ≈ 105 bits, donc 128 bits fournissent une entropie amplement suffisante).
    • Les bits sont convertis en une chaîne comme : s9*!Lq9@Pz%2m#X&
  3. Propriétés de sécurité :
    • Imprévisibilité : Sans $K_{sys}$, la sortie est imprévisible même si le TBHM est connu.
    • Déterminisme : Le même utilisateur à ce moment exact obtiendrait le même mot de passe, facilitant le débogage.
    • Entropie élevée : Le mot de passe a une entropie d'environ 105 bits, rendant le craquage par force brute irréalisable.

9. Applications futures et orientations de développement

10. Références

  1. M. Bellare, R. Canetti, et H. Krawczyk, "Keying Hash Functions for Message Authentication," CRYPTO 1996.
  2. NIST, "Recommendation for Block Cipher Modes of Operation: The CMAC Mode for Authentication," SP 800-38B.
  3. NIST, "SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions," FIPS PUB 202.
  4. NIST, "Recommendation for the Entropy Sources Used for Random Bit Generation," SP 800-90B.
  5. NIST, "Recommendation for Key Derivation Using Pseudorandom Functions," SP 800-108 Rev. 1.
  6. J. Kelsey, B. Schneier, et N. Ferguson, "Yarrow-160: Notes on the Design and Analysis of the Yarrow Cryptographic Pseudorandom Number Generator," SAC 1999.
  7. J. Zhu, T. Park, P. Isola, A.A. Efros, "Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks," ICCV 2017. (Cité comme exemple d'évaluation méthodologique rigoureuse).
  8. NCC Group, "Password Storage Cheat Sheet," OWASP Foundation. (Cité comme source de conseils pratiques sur les politiques de mots de passe).