Application de bureau légère (Rust + egui) qui produit un binaire unique, sans runtime, de ~8 Mo, pour Windows et Linux.
Les binaires sont publiés sur la page Releases :
| Système | Fichier | Utilisation |
|---|---|---|
| Windows | PasswordGenerator.exe |
double-clic, aucune installation |
| Linux | PasswordGenerator-x86_64.AppImage |
chmod +x PasswordGenerator-x86_64.AppImage puis l'exécuter |
| Linux | password-generator-linux-x86_64 |
binaire brut, même usage |
- Mode Aléatoire : de 4 à 64 caractères. On peut activer les majuscules, les chiffres et les symboles, et chaque classe activée est garantie présente au moins une fois.
- Mode Mémorable : de 1 à 12 mots tirés de listes anglaise (EFF Large Wordlist, 7 772 mots), française (7 776 mots courants issus de Lexique) ou des deux (15 065 mots). Options disponibles : majuscule initiale, chiffre ajouté à chaque mot, et choix du séparateur (tirets, points, virgules, underscores, espaces, aucun, nombres aléatoires, nombres et symboles aléatoires).
- Cinq propositions alternatives : un clic en sélectionne une, l'icône la copie.
- Jauge de robustesse, entropie en bits et temps de cassage estimé.
- Tous les tirages passent par le générateur cryptographique de l'OS (
getrandom) avec échantillonnage par rejet, donc sans biais. - Les listes de mots sont embarquées dans le binaire : l'application fonctionne entièrement hors ligne.
Pour un secret formé de L tirages uniformes et indépendants parmi N possibilités :
H = L × log2(N) (bits)
C'est la définition employée par la CNIL (délibération 2022-100, §19) et par l'ANSSI. On additionne l'entropie de chaque tirage indépendant :
| Élément | Entropie |
|---|---|
| Caractère aléatoire | log2(taille de l'alphabet) |
| Mot | log2(taille de la liste) |
| Chiffre ajouté à un mot | log2(10) ≈ 3,32 |
| Séparateur « Nombres » | log2(10) |
| Séparateur « Nombres et symboles » | log2(10 + 27) |
| Majuscule initiale, séparateur fixe | 0 (déterministe) |
On suppose que l'attaquant connaît le générateur, ses réglages et les listes de mots (principe de Kerckhoffs). L'entropie ainsi calculée est donc une borne basse réaliste.
L'application propose deux échelles, au choix dans le panneau « Niveau de sécurité ». La jauge est découpée en 4 zones égales, une par niveau, de sorte que le remplissage correspond toujours au niveau affiché.
Source : CNIL, délibération n° 2022-100 du 21 juillet 2022, §41–42.
| Entropie | Niveau | Signification |
|---|---|---|
| < 50 bits | faible | sous le minimum CNIL |
| 50 – 80 bits | correct | suffisant si le service limite les tentatives (cas n° 2) |
| 80 – 100 bits | fort | suffisant seul, sans autre mesure (cas n° 1) |
| ≥ 100 bits | très fort | au-delà des exigences CNIL |
Source : ANSSI-PG-078, Recommandations relatives à l'authentification multifacteur et aux mots de passe (08/10/2021), recommandation R21, tableau 3.
| Entropie | Niveau de sensibilité couvert |
|---|---|
| < 65 bits | insuffisant |
| ≈ 65 bits | faible à moyen |
| ≈ 85 bits | moyen à fort |
| ≥ 100 bits | fort à très fort (MFA recommandée) |
Le temps de cassage est indicatif : 2^(H−1) essais en moyenne, au rythme de 10¹⁰ essais/s (attaque hors ligne sur un hachage rapide).
Il faut Rust ≥ 1.85 (édition 2024).
cargo test --release # tests unitaires
cargo run --release # lancer l'application| Cible | Commande | Résultat |
|---|---|---|
| Windows | packaging\build-windows.ps1 |
dist\PasswordGenerator.exe |
| Linux | bash packaging/build-linux.sh |
dist/password-generator-linux-x86_64 + dist/PasswordGenerator-x86_64.AppImage |
Les dépendances de build Linux sont listées en tête de packaging/build-linux.sh.
Le workflow .github/workflows/release.yml compile les deux cibles sur GitHub Actions. Un tag v* publie aussi une release.
src/generator.rs moteur : génération, entropie, échelles CNIL / ANSSI (+ tests)
src/main.rs interface graphique egui
src/wordlists/ listes de mots EN / FR (embarquées à la compilation)
assets/ icônes (.png Linux, .ico Windows)
packaging/ scripts de build et fichier .desktop
tools/ génération de la liste française depuis Lexique
| Fichier | Origine | Licence |
|---|---|---|
src/wordlists/en.txt |
EFF Large Wordlist, Electronic Frontier Foundation | CC BY 3.0 US |
src/wordlists/fr.txt |
Dérivée de Lexique 3.83 (B. New, C. Pallier et al.) | CC BY-SA 4.0 |
- Anglais : la liste EFF, sans les 4 mots composés avec un tiret.
- Français : générée par
tools/build_fr_wordlist.py. On garde les noms, adjectifs, verbes et adverbes de 3 à 9 lettres sans accent (faciles à taper sur tout clavier), une seule orthographe par prononciation (pas d'homophones), puis les 7 776 plus fréquents.
Le code est distribué sous double licence, au choix :
- MIT (LICENSE-MIT)
- Apache 2.0 (LICENSE-APACHE)
Les listes de mots gardent leur propre licence (voir ci-dessus). La liste française, dérivée de Lexique, reste sous CC BY-SA 4.0.
Toute contribution soumise à ce projet est, sauf mention contraire, placée sous la même double licence, sans condition supplémentaire.