Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Générateur de mots de passe

Application de bureau légère (Rust + egui) qui produit un binaire unique, sans runtime, de ~8 Mo, pour Windows et Linux.

Téléchargement

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

Fonctionnalités

  • 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.

Calcul de l'entropie

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.

Échelles de robustesse

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é.

Usage courant (par défaut) : CNIL

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

ANSSI : systèmes sensibles

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).

Compilation

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.

Structure

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

Listes de mots

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.

Licence

Le code est distribué sous double licence, au choix :

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.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages