# 4NK Vault API - Système Sécurisé API HTTPS sécurisée avec authentification par clés utilisateur et chiffrement quantique résistant. ## 🔐 Sécurité Avancée - **HTTPS obligatoire** sur le port 6666 - **Authentification par ID utilisateur** (header `X-User-ID`) - **Clés individuelles par utilisateur ET par environnement** - **Rotation automatique des clés** (toutes les heures) - **Chiffrement quantique résistant** (ChaCha20-Poly1305) - **Stockage sécurisé** dans `storage//_keys/` - **Traitement des variables d'environnement** en mémoire - **Protection contre les attaques de traversée de chemins** ## 🚀 Fonctionnalités ### Authentification - **ID utilisateur requis** pour tous les accès - **Validation stricte** : 3-128 caractères alphanumériques + `_` et `-` - **Clés uniques** par combinaison utilisateur/environnement - **Support des clés longues** (hash SHA256 des IDs utilisateur) ### Gestion des clés - **Génération automatique** de clés de 32 bytes - **Rotation automatique** toutes les heures - **Sauvegarde de l'ancienne clé** pour compatibilité - **Isolation par environnement** (dev, prod, etc.) ### Variables d'environnement - **Résolution automatique** des variables `$VAR` et `${VAR}` - **Résolution récursive** des dépendances entre variables - **Chargement du fichier `.env` principal** uniquement - **Traitement en mémoire** (fichiers originaux non modifiés) - **Protection contre les dépendances circulaires** ## 📋 Endpoints ### `GET /health` Contrôle de santé avec authentification. **Headers requis :** ``` X-User-ID: your_user_id ``` **Réponse :** ```json { "status": "healthy", "service": "vault-api-secure", "encryption": "quantum-resistant", "algorithm": "X25519-ChaCha20-Poly1305", "authentication": "user-key-based", "key_rotation": "automatic", "user_id": "your_user_id", "timestamp": "2024-01-01T00:00:00" } ``` ### `GET /info` Informations sur l'API avec authentification. ### `GET /routes` Liste toutes les routes disponibles avec exemples de fichiers. ### `GET //` Sert un fichier chiffré avec authentification utilisateur et variables d'environnement résolues. **Headers requis :** ``` X-User-ID: your_user_id ``` **Exemple :** ```bash curl -k -H "X-User-ID: demo_user_001" https://vault.4nkweb.com:6666/dev/bitcoin/bitcoin.conf ``` ## 🔧 Installation et utilisation ### Prérequis - Python 3.8+ - pip ### Installation ```bash # Cloner le repository git clone https://git.4nkweb.com:4nk/4NK_vault.git cd 4NK_vault # Créer l'environnement virtuel python3 -m venv venv_api source venv_api/bin/activate # Installer les dépendances pip install -r requirements.txt ``` ### Démarrage ```bash # Démarrer l'API sécurisée ./start_api.sh # Ou manuellement source venv_api/bin/activate python3 api_server.py ``` ### Test ```bash # Tester l'API sécurisée python3 test_api.py ``` ## 🔐 Sécurité ### Authentification - **ID utilisateur obligatoire** pour tous les accès - **Validation stricte** des caractères autorisés - **Rejet automatique** des requêtes non authentifiées ### Chiffrement - **Clés individuelles** par utilisateur et environnement - **ChaCha20-Poly1305** (quantum-résistant) - **Rotation automatique** des clés - **Métadonnées sécurisées** dans le payload - **Compatibilité API/SDK** avec `@noble/ciphers` ### Variables d'environnement - **Résolution automatique** avant chiffrement - **Support des syntaxes** `$VAR` et `${VAR}` - **Dépendances récursives** résolues automatiquement - **Protection contre les boucles** infinies ### Stockage - **Isolation par environnement** : `storage//_keys/` - **Fichiers protégés** dans `.gitignore` - **Aucune clé côté client** ## 📁 Structure ``` 4NK_vault/ ├── api_server.py # Serveur sécurisé principal avec EnvProcessor ├── start_api.sh # Script de démarrage sécurisé ├── test_api.py # Tests de l'API sécurisée ├── requirements.txt # Dépendances Python ├── SECURITY_NOTICE.md # Avertissements de sécurité ├── storage/ # Fichiers de configuration (lecture seule) │ ├── dev/ │ │ ├── .env # Variables d'environnement principales │ │ ├── _keys/ # Clés utilisateur (auto-créé) │ │ ├── bitcoin/ # Configurations avec variables résolues │ │ ├── tor/ # Configurations avec variables résolues │ │ └── [autres services]/ │ └── prod/ │ ├── _keys/ # Clés utilisateur (auto-créé) │ └── [configurations]/ ├── confs/ # Fichiers déchiffrés synchronisés (auto-créé) │ ├── bitcoin/ # Configurations avec variables résolues │ ├── tor/ # Configurations avec variables résolues │ └── [autres services]/ ├── sdk-client/ # Client TypeScript avec chiffrement │ ├── src/ │ │ └── index.ts # Client sécurisé avec @noble/ciphers │ ├── examples/ │ │ └── usage.ts # Scénario complet 5 étapes │ ├── .env # Configuration SDK (VAULT_USER, VAULT_KEY, VAULT_ENV) │ └── dist/ # Code compilé TypeScript └── docs/ # Documentation complète ``` ## 🌐 Domaine L'API est configurée pour fonctionner sur le domaine `vault.4nkweb.com` avec des certificats SSL auto-signés pour la démonstration. En production, utilisez des certificats SSL valides et implémentez un échange de clés sécurisé. ## ⚠️ Avertissements Voir `SECURITY_NOTICE.md` pour les détails sur les limitations de sécurité en mode démonstration.