Présentation
NeuroKey est un gestionnaire de mots de passe et portefeuille numérique gratuit, pensé « hors ligne d’abord », pour Android et Windows. Pas de compte, pas de cloud, pas de serveur : le coffre reste uniquement sur les appareils de l’utilisateur, et le téléphone et l’ordinateur se synchronisent directement via le réseau Wi-Fi local. J’ai conçu et développé seul tout l’écosystème : l’application mobile, l’application de bureau, le protocole de synchronisation locale et le site du produit.
Le défi
- Offrir le confort attendu d’un gestionnaire de mots de passe — déverrouillage biométrique, accès multi-appareils, alertes de fuite — sans dépendre d’aucun service cloud.
- Protéger le coffre même en cas de perte d’un appareil ou de présence d’un tiers sur le même réseau Wi-Fi.
- Livrer deux applications natives sur des plateformes très différentes, avec un format de données et un protocole de synchronisation parfaitement compatibles.
Ce que j’ai réalisé
Application Android
Développée avec React Native et Expo : coffre de mots de passe, portefeuille pour cartes bancaires et de fidélité, générateur de mots de passe configurable, conseils de sécurité, verrouillage automatique lorsque l’application passe en arrière-plan et déverrouillage biométrique avec le mot de passe maître en secours. Publiée sur Google Play.
Application de bureau Windows
Développée avec Tauri 2 — un cœur en Rust et une interface React, TypeScript et Tailwind — pour un installateur natif léger plutôt qu’un lourd paquet Electron. Elle inclut le coffre, le portefeuille et le générateur, un verrouillage automatique basé sur l’activité et un Breach Radar qui vérifie les mots de passe dans les fuites connues.
Synchronisation sans cloud
L’application de bureau exécute un petit serveur local écrit en Rust (Axum, Tokio) et affiche un QR code. Le téléphone le scanne, puis les deux coffres sont échangés et fusionnés selon une stratégie « la dernière modification l’emporte » basée sur les horodatages ; les éléments supprimés sont conservés sous forme de « tombstones » afin que les suppressions se propagent dans les deux sens.
Site du produit
Un site Next.js présentant le produit, son modèle de sécurité, une FAQ, un journal des versions, une feuille de route et un blog sur la sécurité des mots de passe.
Architecture de sécurité
Après la première bêta, j’ai mené une revue de sécurité de mon propre code et repensé les parties critiques. L’architecture actuelle :
- Chiffrement au repos : l’intégralité du coffre est chiffrée en AES-256 et protégée par une signature HMAC-SHA256 (encrypt-then-MAC) ; toute altération est détectée avant le déchiffrement. La clé n’existe en mémoire que pendant que le coffre est déverrouillé.
- Dérivation de clé : PBKDF2-SHA256 avec un sel aléatoire — 600 000 itérations sur ordinateur via WebCrypto natif, 100 000 sur mobile. Les paramètres sont enregistrés avec chaque coffre pour pouvoir être renforcés, et les coffres existants sont migrés automatiquement à la connexion suivante.
- Déverrouillage biométrique : la clé du coffre — jamais le mot de passe maître — est stockée dans l’Android Keystore matériel et n’est libérée qu’après une vérification biométrique réussie.
- Synchronisation authentifiée : chaque QR code contient un identifiant de session à usage unique et une clé de 256 bits qui ne transite jamais sur le réseau. Les données sont chiffrées et authentifiées avec cette clé, les sessions sont à usage unique et expirent après cinq minutes, et le serveur Rust ne relaie que des données chiffrées.
- Vérification des fuites respectueuse de la vie privée : k-anonymat avec la base Have I Been Pwned — seuls les cinq premiers caractères de l’empreinte SHA-1 d’un mot de passe quittent l’appareil.
- Aléatoire sécurisé : les mots de passe générés proviennent du générateur aléatoire cryptographique du système, avec échantillonnage par rejet pour éviter tout biais.
Les deux applications partagent un format de chiffrement strictement compatible, vérifié par des tests automatisés multiplateformes (interopérabilité, détection d’altération, rejet d’une mauvaise clé et migration des anciens coffres).
Stack technique
- Mobile : React Native, Expo, expo-secure-store, expo-local-authentication, expo-camera.
- Bureau : Tauri 2, Rust (Axum, Tokio), React, TypeScript, Tailwind CSS, Zustand.
- Cryptographie : AES-256, HMAC-SHA256, PBKDF2-SHA256 (WebCrypto et crypto-js), Android Keystore.
- Site web : Next.js, TypeScript, Framer Motion.
Résultats
- Un produit multiplateforme complet — mobile, bureau et site web — conçu, développé et publié par un seul développeur.
- Un système de synchronisation qui fonctionne sans serveur, sans compte et sans connexion internet.
- Un modèle de sécurité que je peux expliquer ligne par ligne, documenté publiquement sur la page sécurité du produit.
