L'attaque PCFG — Fonctionnement exhaustif
Document de référence pour le projet Time2Crack
Destinataires : développeurs, chercheurs en sécurité, utilisateurs avancés
Table des matières
addPCFGAttacks()pcfgKeyspace() et hypothèses1. Vue d'ensemble
PCFG (Probabilistic Context-Free Grammar) modélise la structure des mots de passe en segments typés (lettres, chiffres, symboles), puis génère les candidats les plus probables en priorité.
2. Contexte historique et académique
Les travaux de Weir et al. (2009) ont établi PCFG comme une méthode majeure de cracking probabiliste, souvent supérieure aux approches purement dictionnaire à budget égal sur des corpus humains.
3. Fondements : grammaire structurelle des mots de passe
Exemple :
Password123!->L8 D3 S1
Le modèle apprend que certains schémas (L8D2, L6D4) sont fréquents, d'autres rares.
4. Apprentissage du modèle PCFG
5. Génération ordonnée des candidats
PCFG produit d'abord les dérivations à probabilité élevée. Cette priorisation est la source principale de son efficacité.
6. Pourquoi PCFG casse des secrets à entropie apparente élevée
Une chaîne peut sembler forte en entropy brute tout en étant très prévisible structurellement (mot + chiffres + symbole). PCFG exploite cette prévisibilité.
7. Implémentation dans Time2Crack : addPCFGAttacks()
Time2Crack calcule un budget via pcfgKeyspace(pw) puis convertit en temps avec budgetTime(...).
Catégorie: cat: "pcfg", note: nPCFGDetected.
8. Fonction pcfgKeyspace() et hypothèses
Le modèle interne approxime les dimensions lexicales, numériques et symboliques, puis borne le keyspace pour rester réaliste en usage interactif.
Composants principaux :
wordGuesses),10^digitLen),32^symbolCount),Le budget PCFG est ensuite converti en temps via budgetTime(pcfgGuesses, rate).
9. Gestion numérique : soft cap (remplacement du cap dur)
Time2Crack utilise désormais un soft cap pour éviter les plateaux artificiels causés par un cap dur unique.
9.1 Ancienne approche (cap dur)
Un Math.min(..., cap) écrase toutes les valeurs au-dessus du cap en une même constante. Cela supprime la hiérarchie entre cas "difficiles" et "très difficiles".
9.2 Nouvelle approche (soft cap)
Le modèle applique une compression continue :
knee),max).Formule utilisée :
soft = knee + (max - knee) * (1 - exp(-(raw - knee)/(max - knee))) pour raw > knee.
Sinon soft = raw.
9.3 Paramètres actuels (app.js)
PCFGSOFTCAPKNEE = 1e14PCFGMAXGUESSES = 1e18Effet : stabilité numérique conservée sans rupture brutale ni perte totale de différenciation.
10. Calibration haute fidélité
Avec PCFG v2, les signaux structurels sont déjà intégrés dans l'estimation de rang (pcfgKeyspace). L'ajustement HF est donc neutre pour éviter le double comptage.
11. Benchmarks et ordres de grandeur
Sur hash rapides, les structures courantes tombent très vite.
Sur KDF lents, l'ordre PCFG reste avantageux mais le coût par tentative reste déterminant.
12. Exemples concrets
Password123 : cible idéale PCFG.xQ7$vP2!mL9@ : faible compatibilité PCFG.13. Limites de l'attaque PCFG
14. Défenses efficaces
Word+Digits+Symbol).