story-research-zapwall/features/key-management-configuration.md

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 KeyManagementManager dans components/
  • 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 composant KeyManagementManager dans 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
  • 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

  1. Vérifier que le composant compile sans erreur :

    npm run type-check
    npm run lint
    
  2. 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
  3. 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

  1. 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
  2. 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
  3. 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éé
  4. 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é