Documentation Technique
Architecture détaillée, algorithmes cryptographiques, modèle de menace et guide complet de SecureVault — l'outil de sécurisation de fichiers pour Windows.
Vue d'ensemble
SecureVault est un outil de sécurisation de fichiers et dossiers pour Windows 10/11, accessible directement depuis le menu contextuel de l'Explorateur (clic droit). Il propose deux niveaux de protection distincts selon le besoin de l'utilisateur.
🔒 Mode Rapide
Verrouillage instantané via les permissions NTFS (ACL). Bloque l'accès en un clic. Réversible par un administrateur.
🛡️ Mode Fort
Chiffrement complet AES-256-GCM avec dérivation Argon2id. Protection absolue, même en cas de vol physique du disque.
| Caractéristique | Détail |
|---|---|
| Langage | Rust (binaire natif, aucun runtime) |
| Taille de l'exécutable | < 10 Mo |
| Systèmes supportés | Windows 10 version 1903+, Windows 11 |
| Architectures | x86_64 |
| Dépendances externes | Aucune |
| Connexion internet | Requise une seule fois pour l'activation de la licence Pro (API LemonSqueezy). Tout le reste est local. |
| Données transmises | Activation uniquement : clé de licence + empreinte machine. Aucun fichier, aucune donnée personnelle. |
Modèle de menace
Il est essentiel de comprendre ce contre quoi chaque mode vous protège — et ce contre quoi il ne vous protège pas. La transparence sur les limites d'un outil de sécurité est aussi importante que ses capacités.
Mode Rapide — Contre quoi il protège
| Scénario | Protégé ? |
|---|---|
| Un collègue ouvre accidentellement un dossier sur votre poste | Oui |
| Un enfant parcourt vos fichiers sur le PC familial | Oui |
| Un logiciel tente d'accéder à un fichier protégé | Oui |
| Un utilisateur administrateur déterminé | Contournable |
| Vol physique du disque dur | Non |
| Malware avec privilèges administrateur | Non |
Mode Fort — Contre quoi il protège
| Scénario | Protégé ? |
|---|---|
| Tous les scénarios du mode Rapide | Oui |
| Vol physique du disque dur ou de l'ordinateur | Oui |
| Analyse forensique du disque | Oui |
| Accès administrateur au système | Oui |
| Attaque par force brute sur le mot de passe | Oui (Argon2id) |
| Enregistreur de frappe (keylogger) actif sur le système | Non |
| Perte du mot de passe ET de la clé de récupération | Données perdues |
Suppression sécurisée et SSD. La suppression sécurisée (3 passes d'écrasement) est efficace sur les disques durs traditionnels (HDD). Sur les SSD, le mécanisme de wear leveling peut conserver des copies résiduelles des données dans des blocs inaccessibles. Pour une protection maximale sur SSD, le mode Fort (chiffrement) est recommandé : le fichier original n'a jamais besoin d'être réellement "effacé" puisque seule la version chiffrée subsiste.
Antivirus et alertes de sécurité
Lors de la première exécution de SecureVault, il est normal que Windows Defender ou votre antivirus affiche une alerte. Cela se produit pour deux raisons.
Premièrement, SecureVault modifie les permissions de fichiers (ACL NTFS) et les attributs de fichiers — des opérations que les antivirus surveillent car elles sont parfois utilisées par des logiciels malveillants. SecureVault utilise ces mécanismes de façon légitime et documentée.
Deuxièmement, l'exécutable n'est pas (encore) signé avec un certificat de signature de code. Windows SmartScreen peut afficher un avertissement "Éditeur inconnu" au premier lancement. Cliquez sur "Informations complémentaires" puis "Exécuter quand même" pour autoriser l'exécution.
Code source vérifiable. Le code source de la version gratuite de SecureVault est intégralement disponible sur GitHub. Vous pouvez inspecter chaque ligne de code, vérifier les algorithmes cryptographiques utilisés, et compiler le binaire vous-même si vous le souhaitez. La transparence est un pilier de la confiance en matière de sécurité.
Comment ajouter SecureVault en exception
Si votre antivirus bloque ou met en quarantaine SecureVault, ajoutez le dossier d'installation (C:\Program Files\SecureVault\) à la liste des exclusions de votre antivirus. Pour Windows Defender : Paramètres → Mise à jour et sécurité → Sécurité Windows → Protection contre les virus et menaces → Gérer les paramètres → Exclusions → Ajouter une exclusion → Dossier.
Architecture
Stack technique
| Composant | Technologie | Rôle |
|---|---|---|
| Langage | Rust (edition 2021) | Performance, sécurité mémoire, binaire autonome |
| API Windows | Crate windows-rs | ACL, registre, UI Win32, GDI |
| Chiffrement | Crate aes-gcm | AES-256-GCM authentifié |
| Dérivation de clé | Crate argon2 | Argon2id |
| Nettoyage mémoire | Crate zeroize | Zéroïsation des secrets |
| CLI | Crate clap | Parsing des commandes |
| Archivage | Crate tar | Empaquetage des dossiers |
| HTTP client | Crate ureq | Activation de licence via API LemonSqueezy |
| Sérialisation | Crate serde + serde_json | Parsing des réponses API |
| Installeur | Inno Setup | Installation/désinstallation graphique |
Structure du projet
Mode Rapide — Verrouillage ACL
Le mode Rapide utilise les mécanismes de contrôle d'accès natifs de Windows (NTFS ACL) pour bloquer l'accès à un fichier ou dossier. Aucune modification du contenu du fichier n'est effectuée — seules les métadonnées de sécurité sont modifiées.
Flux de verrouillage
Verrouillage
- L'utilisateur saisit et confirme un mot de passe via la popup sécurisée
- Le mot de passe est hashé avec Argon2id (paramètres : m=64 MiB, t=3, p=4)
- Les ACE (Access Control Entries) actuelles sont lues, sérialisées, et stockées dans un fichier compagnon chiffré
- Le hash du mot de passe est sauvegardé dans un fichier
.securevault.hashséparé - Une DACL restrictive est appliquée, refusant
GENERIC_READ | GENERIC_WRITE | GENERIC_EXECUTE | DELETEtout en conservantFILE_READ_ATTRIBUTES - L'attribut
FILE_ATTRIBUTE_HIDDENest appliqué (le fichier apparaît en semi-transparent si "Éléments masqués" est activé) - Un fichier compagnon
.securevaultest créé pour permettre le double-clic de déverrouillage
Déverrouillage
- Le mot de passe est vérifié contre le hash stocké dans
.securevault.hash— sans aucune manipulation de DACL - Si correct : les ACE originales sont déchiffrées et restaurées
- L'attribut masqué est retiré
- Les fichiers compagnons (
.securevaultet.securevault.hash) sont supprimés
Vérification du mot de passe. La vérification du mot de passe se fait en temps constant via argon2::verify_password, ce qui prévient les attaques par canal auxiliaire (timing attacks). Le hash est vérifié avant toute modification de permission — un mot de passe incorrect ne provoque aucun changement sur le fichier.
Limites du mode Rapide
Le mode Rapide est une défense dissuasive, pas une protection cryptographique. Un administrateur Windows peut reprendre possession d'un fichier via takeown et icacls /reset. C'est par conception : le déverrouillage forcé dans le Centre d'administration utilise exactement ce mécanisme, protégé par le Master Password.
Pour une protection résistant à un accès physique ou administrateur, utilisez le mode Fort.
Mode Fort — Chiffrement AES-256-GCM
Le mode Fort fournit une protection cryptographique complète. Chaque fichier ou dossier est chiffré avec une clé unique dérivée du mot de passe de l'utilisateur. Le résultat est un fichier .vault autonome et opaque.
Dérivation de clé — Argon2id
Le mot de passe de l'utilisateur n'est jamais utilisé directement comme clé de chiffrement. Il est transformé en une clé de 256 bits via Argon2id, le vainqueur du Password Hashing Competition (2015) et la recommandation actuelle de l'OWASP.
| Paramètre | Valeur | Signification |
|---|---|---|
| Algorithme | Argon2id | Hybride résistant GPU et canal auxiliaire |
| Mémoire (m) | 65 536 KiB (64 MiB) | Chaque tentative de brute-force coûte 64 Mo de RAM |
| Itérations (t) | 3 | 3 passes sur la mémoire |
| Parallélisme (p) | 4 | 4 threads par dérivation |
| Sel | 32 octets aléatoires | Unique par fichier, généré par OsRng |
| Sortie | 256 bits (32 octets) | Clé AES-256 |
Résistance au brute-force. Avec ces paramètres, une seule tentative de dérivation prend environ 150 ms sur un processeur moderne et consomme 64 Mo de RAM. Un attaquant testant 1 million de mots de passe devrait mobiliser 64 To de RAM ou attendre environ 42 heures sur un seul cœur. Les paramètres sont largement au-dessus des minimums recommandés par l'OWASP (m=19 456, t=2).
Chiffrement — AES-256-GCM
AES-256-GCM (Galois/Counter Mode) est un algorithme de chiffrement authentifié : il assure à la fois la confidentialité et l'intégrité des données. Toute altération du fichier .vault (même d'un seul bit) sera détectée au déchiffrement.
| Propriété | Détail |
|---|---|
| Algorithme | AES-256-GCM (NIST SP 800-38D) |
| Taille de clé | 256 bits |
| Nonce | 96 bits (12 octets), aléatoire par OsRng |
| Tag d'authentification | 128 bits (16 octets) |
| Accélération matérielle | AES-NI (présent sur tous les processeurs x86 depuis 2010) |
Chiffrement de dossiers
Les dossiers sont empaquetés en archive tar en mémoire avant chiffrement, produisant un unique fichier .vault. Cette approche est plus sûre que le chiffrement fichier par fichier car elle masque la structure du dossier, les noms de fichiers, le nombre de fichiers, et les tailles individuelles. Seul le poids total est observable.
Format de fichier .vault
Double enveloppe (v1.0.1+). Le format v2 utilise un système de double enveloppe : une clé de chiffrement de fichier (FEK) aléatoire est générée, puis chiffrée indépendamment par le mot de passe ET par la clé de récupération. Cela permet de déchiffrer avec l'un ou l'autre, sans que la recovery key dépende du mot de passe.
Identification des dossiers. Si le nom stocké dans l'en-tête se termine par /, le contenu chiffré est une archive tar. Au déchiffrement, SecureVault détecte ce marqueur et extrait l'archive pour recréer la structure de dossier complète.
Clés de récupération
À chaque chiffrement, une clé de récupération aléatoire de 256 bits est générée. Grâce au système de double enveloppe (v2), la FEK est chiffrée indépendamment par le mot de passe et par la recovery key. Cela signifie que la recovery key peut déchiffrer le fichier sans connaître le mot de passe. Elle est affichée une seule fois à l'utilisateur lors du chiffrement.
Les recovery keys sont également conservées dans le registre local (vault_registry.json), chiffrées avec le Master Password via AES-256-GCM. Sans le Master Password, elles sont illisibles. L'export des recovery keys (fichier texte imprimable) nécessite la saisie du Master Password.
Perte du mot de passe. Si vous perdez à la fois le mot de passe de chiffrement ET la clé de récupération, vos données sont définitivement perdues. C'est une propriété fondamentale du chiffrement fort, pas une limitation de SecureVault. Imprimez vos clés de récupération et conservez-les en lieu sûr.
Suppression sécurisée
Après chiffrement, l'original peut être supprimé de façon sécurisée (sur confirmation de l'utilisateur). Le processus consiste en trois passes d'écrasement : une passe de zéros (0x00), une passe de uns (0xFF), et une passe de données aléatoires. Un flush force l'écriture sur disque avant la suppression du fichier.
Interface utilisateur
L'interface est entièrement en Win32 natif — aucun framework GUI, aucune dépendance Electron ou WebView. Chaque pixel est peint via les API GDI/GDI+ de Windows. Cela garantit un exécutable compact (< 10 Mo), un démarrage instantané, et une consommation mémoire minimale.
Sécurité de la saisie du mot de passe
Les mots de passe en mémoire sont encapsulés dans Zeroizing<String> (crate zeroize). Quand la variable sort du scope, la mémoire est écrasée par des zéros avant d'être libérée. Les clés dérivées suivent le même traitement via Zeroizing<[u8; 32]>. Cette protection s'applique sur tous les chemins de code, y compris les chemins d'erreur.
Centre d'administration
Le dashboard est une fenêtre Win32 native avec trois onglets : Fichiers protégés (liste, actions, statistiques), Paramètres (rappel de sécurité, thème, langue), et À propos (version, licence, liens).
Données locales
Tous les fichiers de données sont stockés dans %LOCALAPPDATA%\SecureVault\ :
| Fichier | Contenu | Sensible ? |
|---|---|---|
vault_registry.json | Liste des fichiers protégés, statuts, chemins, recovery keys chiffrées | Recovery keys chiffrées par Master Password |
config.json | Préférences (langue, thème, rappel) | Non |
master.key | Hash Argon2id du Master Password | Hash uniquement (pas le mot de passe) |
license.json | Clé de licence, instance_id et statut d'activation | Vérifié via empreinte machine |
usage.json | Compteurs d'utilisation (version gratuite) | Non |
Master Password et déverrouillage forcé
Le Master Password est un mot de passe administrateur global, créé au premier lancement (onboarding). Il permet le déverrouillage forcé des fichiers en mode Rapide (ACL) — en cas d'oubli du mot de passe individuel ou de verrouillage par un tiers.
Le déverrouillage forcé est impossible pour les fichiers en mode Fort (chiffrement). Seul le mot de passe de chiffrement ou la recovery key peuvent déchiffrer les données. C'est précisément la différence entre les deux modes.
Multi-fichiers
Quand l'utilisateur sélectionne plusieurs fichiers dans l'Explorateur et fait clic droit → SecureVault, Windows lance une instance de l'exécutable par fichier. SecureVault coordonne ces instances via un mutex nommé et un fichier de file d'attente.
La première instance devient le "leader" : elle collecte tous les chemins des instances suivantes, affiche une seule popup de mot de passe, et traite tous les fichiers avec le même mot de passe. Les instances suivantes enregistrent leur chemin et se terminent silencieusement. Le résultat est un résumé unique indiquant le nombre de succès et d'échecs.
Système de licence
SecureVault utilise un système de licence géré par LemonSqueezy. Après l'achat, une clé de licence est automatiquement générée et envoyée par email. L'activation nécessite une connexion internet unique — après activation, la licence est vérifiée localement.
| Aspect | Détail |
|---|---|
| Plateforme | LemonSqueezy (génération et gestion des clés) |
| Activation | API REST (POST /v1/licenses/activate), une seule fois |
| Liaison machine | Empreinte matérielle (volume serial + nom PC + SID utilisateur, hashé) |
| Vérification post-activation | Locale, basée sur license.json (clé + instance_id) |
| Format de clé | UUID généré par LemonSqueezy |
| Données transmises | Clé de licence + empreinte machine uniquement — aucune donnée personnelle |
Achat et activation automatiques. L'achat se fait via la page LemonSqueezy. La clé de licence est envoyée par email immédiatement après le paiement. Dans SecureVault, l'utilisateur colle sa clé dans la popup d'activation — le logiciel contacte l'API LemonSqueezy une seule fois pour activer et lier la licence à la machine. Après cela, plus aucune connexion internet n'est requise.
Une licence = un poste. Chaque licence est liée à l'empreinte matérielle d'un seul ordinateur. Pour changer de machine, désactivez la licence sur l'ancien poste (via le Centre d'administration) puis réactivez-la sur le nouveau.
Version gratuite — Limites
| Fonctionnalité | Gratuit | Pro |
|---|---|---|
| Verrouillages (mode Rapide) | 20 | Illimité |
| Chiffrements (mode Fort) | 3 | Illimité |
| Déverrouillage et déchiffrement | Illimité | Illimité |
| Centre d'administration | Oui | Oui |
| Notifications de sécurité | Non | Oui |
| Déverrouillage forcé | Non | Oui |
Installation
Installation standard
Lancez SecureVault_Setup.exe. L'installeur copie le binaire dans C:\Program Files\SecureVault\, crée les entrées du menu contextuel (registre HKCU), associe le type de fichier .securevault, et crée le raccourci dans le menu Démarrer. Aucun droit administrateur n'est requis pour l'installation.
Désinstallation
Via "Programmes et fonctionnalités" dans Windows, ou en relançant l'installeur. La désinstallation supprime le binaire, les entrées du registre, le raccourci, et le type de fichier associé. Les données locales (%LOCALAPPDATA%\SecureVault\) ne sont pas supprimées automatiquement, pour éviter toute perte de recovery keys.
FAQ technique
Pourquoi AES-256-GCM et pas ChaCha20-Poly1305 ?
AES-256-GCM est accéléré matériellement sur tous les processeurs x86 modernes via les instructions AES-NI (présentes depuis Intel Westmere en 2010 et AMD Bulldozer en 2011). Sur ces processeurs, AES-GCM est plus rapide que ChaCha20. ChaCha20 serait pertinent sur des appareils ARM sans accélération AES, ce qui n'est pas le cas d'usage de SecureVault (Windows x86_64).
Pourquoi Rust et pas C# ou Python ?
Rust produit un binaire natif compact (< 10 Mo), sans runtime ni garbage collector. La sécurité mémoire de Rust (ownership, borrowing) élimine les classes de vulnérabilités les plus courantes : buffer overflow, use-after-free, double-free. Pour un outil de sécurité manipulant des secrets en mémoire, c'est un avantage structurel.
Le fichier .vault est-il compatible entre versions ?
Oui. Le champ "version" dans l'en-tête garantit la compatibilité ascendante. Un fichier créé en v1.0 restera lisible par toutes les versions futures. Le format ne sera jamais modifié de façon incompatible sans un nouveau numéro de version.
Que se passe-t-il en cas de coupure de courant pendant le chiffrement ?
Le fichier .vault est entièrement écrit avant que l'original ne soit supprimé. En cas d'interruption, les deux fichiers coexistent : l'original intact et un .vault potentiellement incomplet (qui sera détecté comme corrompu au déchiffrement). Aucune perte de données.
SecureVault envoie-t-il des données quelque part ?
La seule communication réseau est l'activation de la licence Pro : un appel unique à l'API LemonSqueezy contenant la clé de licence et l'empreinte machine (hash). Aucun fichier, aucune donnée personnelle, aucune télémétrie n'est transmise. Tout le traitement des fichiers (verrouillage, chiffrement, déchiffrement) est strictement local. Vous pouvez le vérifier dans le code source sur GitHub, ou en surveillant le trafic réseau de l'application.
Changelog
v1.0.3 Actuelle
Migration du système de licence vers LemonSqueezy. Les clés de licence sont désormais générées automatiquement après achat et activées en ligne via l'API LemonSqueezy. Liaison machine par empreinte matérielle (hash volume serial + nom PC + SID). Remplacement de ed25519-dalek par ureq pour les appels HTTP. Suppression du keygen local.
v1.0.2
Préparation de la distribution commerciale. Page d'achat LemonSqueezy. Brochure PDF commerciale. Documentation technique complète. Pages CGU et politique de remboursement.
v1.0.1
Refonte du format .vault en v2 (double enveloppe). La FEK (File Encryption Key) est désormais chiffrée indépendamment par le mot de passe et par la recovery key, permettant un déchiffrement par l'un ou l'autre sans dépendance circulaire.
v1.0.0
Système de licence freemium. Popup d'activation intégrée. Barre de statut dans le dashboard. Limites : 20 verrouillages, 3 chiffrements en version gratuite. Déverrouillage et déchiffrement toujours gratuits.
v0.8.0
Modernisation visuelle complète : fade-in des fenêtres, compteurs animés, boutons avec hover smooth, icônes GDI vectorielles anti-aliasées, header custom du dashboard, transitions de slides dans l'onboarding, indicateurs de progression.
v0.7.0
Audit de sécurité complet. Recovery keys chiffrées avec le Master Password. Élimination de la DACL NULL. Zéroïsation de tous les secrets en mémoire. Déduplication du registre. Corrections batch (orphelins, no-op silencieux). i18n complète FR/EN.
v0.6.0
Onboarding 3 slides. Page À propos. Documentation utilisateur intégrée (guide.html). Bouton rafraîchir. Thèmes fonctionnels (rouge/bleu/vert). Internationalisation FR/EN.
v0.5.0
Paramètres persistants. Notifications de sécurité. Multi-fichiers depuis l'Explorateur. Export des recovery keys.
v0.4.0
Raccourci menu Démarrer. Fix "Tout déverrouiller". Sélection multiple dans le dashboard. Activation dynamique des boutons.
v0.3.0
Centre d'administration (dashboard). Master Password. Déverrouillage forcé admin. Registre des opérations (vault_registry.json).
v0.2.0
Chiffrement de dossiers entiers (tar + AES-256-GCM). Suppression sécurisée de dossiers. Verrouillage sans UAC.
v0.1.0
Version initiale. Mode Rapide (ACL). Mode Fort (AES-256-GCM fichiers). Popup mot de passe. Menu contextuel. Installeur Inno Setup.