~/projects/passwords
status: completedSécurité des mots de passe
Un ensemble de mini-projets personnels que je développe sur mon temps libre, dans un but pédagogique : apprendre de nouvelles notions de cybersécurité tout en continuant à me perfectionner en Python. Chacun explore un angle concret de la sécurité des mots de passe, du choix d'un bon mot de passe jusqu'aux attaques qui ciblent leur stockage.
~/contexte
Le contexte
Passionné de cybersécurité, je me forme en continu sur des plateformes comme TryHackMe, Root-Me et Hack The Box. En parallèle, j'aime mettre en pratique ce que j'apprends à travers des projets personnels : c'est l'occasion d'explorer de nouvelles technologies, de consolider mes bases en développement Python et de comprendre les mécanismes que l'on cherche ensuite à défendre.
J'ai choisi de concentrer ces mini-labs autour d'un fil rouge : le mot de passe. Volontairement simples, lisibles et reproductibles, ils couvrent à la fois la défense et l'attaque pour saisir pourquoi un mot de passe faible ou mal stocké représente un vrai risque.
L'ensemble de ces projets est regroupé dans un dépôt unique sur mon GitHub ↗.
~/projets
Les mini-projets
Password Analyst
Analyse de robustesse en temps réel
Outil d'analyse de la robustesse d'un mot de passe en temps réel, sans jamais tenter de le casser. À chaque frappe, il évalue le mot de passe selon plusieurs critères concrets et le classe sur cinq niveaux, de très faible à très fort. C'est aussi la brique que j'ai réutilisée - portée en Java - dans le projet ProSE pour contrôler la robustesse à la création de compte. Le niveau de robustesse est évalué selon les critères suivants :
- Longueur et diversité des types de caractères
- Présence dans la wordlist rockyou (mots de passe déjà divulgués)
- Détection de motifs faibles : suites, répétitions, formats courants
- Estimation simple de l'entropie
- Recommandations alignées sur NIST SP 800-63B et OWASP
public/DemoPasswordAnalyst.mp4 Password Brute Force Attack
Attaque par force brute
Mini-lab illustrant l'attaque par force brute : tester systématiquement toutes les combinaisons possibles d'un jeu de caractères jusqu'à retrouver le mot de passe. Deux scénarios - comparaison en clair et via un hash - pour visualiser concrètement pourquoi la longueur et la complexité d'un mot de passe sont des défenses critiques.
- Cible en clair ou sous forme de hash (MD5, SHA-256)
- Jeu de caractères paramétrable : minuscules, majuscules, chiffres, spéciaux ou complet
- Longueur maximale à tester configurable
- Progression de l'attaque affichée en temps réel
- Mise en évidence de l'impact exponentiel de la complexité sur le temps de craquage
public/DemoBruteForce.mp4 Password Dictionary Attacks
Attaques par dictionnaire (Hash & ZIP)
Deux mini-labs autour de l'attaque par dictionnaire : plutôt que de tout tester, on essaie une liste de mots de passe probables (type rockyou). L'objectif est de montrer qu'un mot de passe faible tombe en quelques secondes, même lorsqu'il est protégé par un algorithme robuste.
Hash - SHA-512 crypt
Scénario proche d'un /etc/shadow : un hash est généré avec un sel et des paramètres réalistes (rounds) via passlib, puis attaqué par dictionnaire. On y comprend le rôle du sel et des paramètres de hashing - et les limites des mots de passe faibles, même avec un bon algorithme.
ZIP
Attaque par dictionnaire sur une archive ZIP protégée par mot de passe, pour observer la vitesse et l'efficacité du procédé face à un mot de passe simple.
public/DemoDictionnary.mp4 Password Lab
Fuite de base & audit de stockage
Petit laboratoire qui simule une fuite de base d'authentification pour analyser concrètement la sécurité du stockage des mots de passe. On crée des comptes, on « fuite » la base, puis on audite les hash hors-ligne. Le message clé : la sécurité ne repose pas seulement sur le mot de passe choisi par l'utilisateur, mais surtout sur des mécanismes de stockage adaptés en cas de fuite.
- Stockage comparé : SHA-256 salé vs bcrypt
- Simulation d'une fuite de base de données
- Audit hors-ligne : format, validité du sel, coût bcrypt, mots de passe bannis, réutilisation
- Benchmark de performances des différents algorithmes
Password Timing Attack
Attaque temporelle sur la vérification d'un token
Mini-lab sur l'attaque temporelle (timing attack) appliquée à la vérification d'un token. Il montre qu'une comparaison de chaînes naïve laisse fuir des informations sur le secret à travers le temps de réponse, et comment s'en protéger avec une comparaison en temps constant.
- Application vulnérable dont la vérification fuit des informations temporelles
- Reconstruction du token caractère par caractère en exploitant les écarts de temps
- Comparaison directe entre une vérification naïve (==) et hmac.compare_digest()
- Comprendre pourquoi == ne suffit pas pour comparer des secrets en sécurité
Démonstration volontairement simplifiée : le délai est amplifié artificiellement et l'attaque tourne en local, là où une exploitation réelle se ferait en boîte noire et nécessiterait des milliers de requêtes.
public/DemoTiming.mp4 ~/ethique
Cadre éthique
Tous ces projets sont réalisés dans un cadre strictement éducatif, afin de comprendre les limites des mots de passe faibles, l'importance d'un stockage sécurisé et l'impact réel des attaques hors-ligne. Aucun de ces outils n'est destiné à être employé sur des systèmes, comptes ou données sans autorisation explicite - toute utilisation malveillante étant illégale.