4.3 KiB
4.3 KiB
Key Management Configuration Page
Auteur : Équipe 4NK
Objectif
Créer une page de configuration permettant de :
- Consulter les clés publiques (npub et hex)
- Importer une clé privée sous forme d'URL (nostr://nsec1...) ou de texte (nsec1... ou hex)
- Respecter le système de stockage et de sécurisation à deux niveaux existant
Impacts
Utilisateurs
- Interface dédiée pour gérer les clés Nostr
- Consultation facile des clés publiques
- Import de clés via URL ou texte
- Affichage des mots de récupération après import
Technique
- Nouveau composant
KeyManagementManagerdanscomponents/ - Intégration dans la page
/settings - Utilisation des services existants (
nostrAuthService,keyManagementService) - Respect du système de chiffrement à deux niveaux (KEK + phrase de récupération)
Modifications
Fichiers créés
components/KeyManagementManager.tsx: Composant de gestion des clés- Affichage des clés publiques (npub et hex)
- Formulaire d'import de clé privée
- Support des formats : nsec URL (nostr://nsec1...), nsec texte (nsec1...), hex (64 caractères)
- Extraction automatique de la clé depuis une URL
- Avertissement et confirmation avant remplacement d'un compte existant
- Affichage des mots de récupération après import
Fichiers modifiés
pages/settings.tsx: Ajout du composantKeyManagementManagerdans la page settings
Fonctionnalités
Consultation des clés publiques
- Affichage du npub (format NIP-19)
- Affichage de la clé publique hexadécimale
- Boutons de copie pour chaque format
Import de clé privée
- Support de plusieurs formats :
- URL nostr:// avec nsec :
nostr://nsec1... - Texte nsec :
nsec1... - Clé hexadécimale :
64 caractères hex
- URL nostr:// avec nsec :
- Extraction automatique de la clé depuis une URL
- Validation du format avant import
- Gestion du remplacement d'un compte existant :
- Avertissement si un compte existe déjà
- Confirmation avant remplacement
- Suppression de l'ancien compte avant création du nouveau
Sécurité
- Respect du système de chiffrement à deux niveaux :
- KEK (Key Encryption Key) chiffré avec la phrase de récupération
- Clé privée chiffrée avec le KEK
- KEK stocké dans Credentials API
- Clé privée chiffrée stockée dans IndexedDB
- Affichage unique des mots de récupération après import
- Avertissements clairs sur l'importance de sauvegarder la phrase de récupération
Modalités de déploiement
-
Vérifier que le composant compile sans erreur :
npm run type-check npm run lint -
Tester l'interface :
- Accéder à
/settings - Vérifier l'affichage des clés publiques si un compte existe
- Tester l'import d'une clé privée (nsec ou hex)
- Vérifier l'affichage des mots de récupération
- Tester le remplacement d'un compte existant
- Accéder à
-
Déployer avec le script de déploiement standard
Modalités d'analyse
Logs à surveiller
- Erreurs lors du chargement des clés publiques
- Erreurs lors de l'import de clé privée
- Erreurs lors de la validation du format de clé
- Erreurs lors du remplacement d'un compte
Points de contrôle
- Affichage correct des clés publiques (npub et hex)
- Extraction correcte de la clé depuis une URL
- Validation correcte des formats (nsec, hex)
- Gestion correcte du remplacement de compte
- Affichage correct des mots de récupération
- Copie correcte des clés et mots de récupération
Tests à effectuer
-
Consultation des clés publiques :
- Vérifier l'affichage du npub
- Vérifier l'affichage de la clé hex
- Tester la copie de chaque format
-
Import de clé privée :
- Tester l'import avec une URL nostr://
- Tester l'import avec un nsec texte
- Tester l'import avec une clé hex
- Vérifier la validation des formats invalides
-
Remplacement de compte :
- Créer un compte
- Importer une nouvelle clé
- Vérifier l'avertissement et la confirmation
- Vérifier que l'ancien compte est supprimé
- Vérifier que le nouveau compte est créé
-
Sécurité :
- Vérifier que les mots de récupération sont affichés une seule fois
- Vérifier que la clé privée n'est jamais affichée
- Vérifier que le système de chiffrement à deux niveaux est respecté