story-research-zapwall/features/key-management-configuration.md
Nicolas Cantu 7791370b37 Add key management configuration page
**Motivations:**
- Provide a dedicated interface for managing Nostr keys
- Allow users to view public keys (npub and hex)
- Enable importing private keys via URL or text format
- Respect the existing two-level encryption system

**Root causes:**
- No dedicated interface for key management
- Users need to view their public keys easily
- Users need to import keys in various formats (nsec URL, nsec text, hex)

**Correctifs:**
- None (new feature)

**Evolutions:**
- Created KeyManagementManager component for key management
- Added public key display (npub and hex formats)
- Implemented private key import with support for:
  - nostr:// URLs with nsec
  - nsec text format (nsec1...)
  - hex format (64 characters)
- Automatic key extraction from URLs
- Account replacement warning and confirmation
- Recovery phrase display after import
- Individual copy buttons for each key format
- Integration in settings page

**Pages affectées:**
- components/KeyManagementManager.tsx (new)
- pages/settings.tsx (modified)
- features/key-management-configuration.md (new)
2026-01-05 22:13:40 +01:00

125 lines
4.3 KiB
Markdown

# 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 :
```bash
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é