OKULT est un gestionnaire de mots de passe en ligne de commande, écrit en Python. Il permet de générer, chiffrer et stocker des mots de passe de façon sécurisée pour chaque site ou service utilisé.
- Génération de mots de passe aléatoires et forts
- Chiffrement des mots de passe avec une clé dérivée d'un mot de passe maître
- Stockage des identifiants chiffrés dans un fichier JSON local
OKULT-version1-TerminalUI/
├── main_app.py # Point d'entrée principal
├── crypto_funct.py # Fonctions de chiffrement / déchiffrement
├── generate_password.py # Génération de mots de passe aléatoires
├── store_passwords.py # Lecture et écriture dans login_data.json
├── login_data.json # Stockage persistant des identifiants (chiffrés)
└── salt.bin # Sel cryptographique (généré automatiquement)
Bibliothèque Python de référence pour la cryptographie. Deux composants sont utilisés :
-
PBKDF2HMAC(Password-Based Key Derivation Function 2) : permet de dériver une clé cryptographique solide à partir du mot de passe maître de l'utilisateur. L'algorithme applique la fonction de hachage SHA-256 de façon répétée (390 000 itérations), ce qui rend les attaques par force brute très coûteuses. Un sel aléatoire de 128 bits est intégré dans la dérivation pour garantir l'unicité de la clé. -
Fernet: schéma de chiffrement symétrique authentifié (AES-128-CBC + HMAC-SHA256). Il garantit à la fois la confidentialité (personne ne peut lire le mot de passe sans la clé) et l'intégrité (toute altération du message chiffré est détectée). Le format Fernet inclut un horodatage et un vecteur d'initialisation (IV) aléatoire dans chaque message chiffré.
Module de la bibliothèque standard Python, conçu pour la génération de valeurs aléatoires cryptographiquement sûres. Il est utilisé à la place de random car ce dernier est prévisible et ne doit jamais être utilisé pour générer des mots de passe ou des tokens de sécurité.
Module standard utilisé pour :
- Générer le sel via
os.urandom(), une source d'entropie sûre fournie par le système d'exploitation. - Vérifier l'existence de fichiers (
os.path.exists).
Module standard utilisé pour la persistance des données : les identifiants chiffrés sont sérialisés et stockés dans login_data.json, et rechargés à chaque nouvelle sauvegarde.
Module standard utilisé pour encoder la clé dérivée par PBKDF2 en format URL-safe Base64, format attendu par Fernet.
Module standard fournissant les ensembles de caractères (lettres, chiffres, ponctuation) utilisés pour construire le pool de caractères des mots de passe générés.
python main_app.pyLe programme demande :
- Le mot de passe maître (utilisé pour dériver la clé de chiffrement)
- Le nom du site concerné
- Le nom d'utilisateur
Un mot de passe de caractères est ensuite généré, chiffré, puis sauvegardé dans login_data.json.
- Le mot de passe maître n'est jamais stocké.
- Seuls les mots de passe chiffrés sont persistés.
- Le sel (
salt.bin) doit être conservé : sans lui, il est impossible de retrouver la clé et donc de déchiffrer les mots de passe.
OKULT v1 — projet personnel, usage local uniquement.