4NK_vault/README.md
4NK Dev 74624711a0 refactor: Nettoyage et simplification du projet
-  Suppression des fichiers redondants (api_server.py, start_api.sh, test_api.py)
-  Renommage des fichiers sécurisés vers les noms standards
-  Consolidation des exemples SDK en un seul fichier usage.ts
-  Suppression du client SDK déprécié
-  Mise à jour de la documentation principale
-  Simplification de la structure du projet
- 🔒 Conservation de la sécurité (authentification par clés utilisateur)
- 📁 Respect du stockage en lecture seule (storage/)
2025-09-29 21:34:29 +00:00

154 lines
4.2 KiB
Markdown

# 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/<env>/_keys/`
## 🚀 Fonctionnalités
### Authentification
- **ID utilisateur requis** pour tous les accès
- **Validation stricte** : 3-50 caractères alphanumériques + `_` et `-`
- **Clés uniques** par combinaison utilisateur/environnement
### 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.)
## 📋 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 /<env>/<file>`
Sert un fichier chiffré avec authentification utilisateur.
**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
### Stockage
- **Isolation par environnement** : `storage/<env>/_keys/`
- **Fichiers protégés** dans `.gitignore`
- **Aucune clé côté client**
## 📁 Structure
```
4NK_vault/
├── api_server.py # Serveur sécurisé principal
├── 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
│ │ ├── _keys/ # Clés utilisateur (auto-créé)
│ │ └── bitcoin/
│ └── prod/
│ ├── _keys/ # Clés utilisateur (auto-créé)
│ └── bitcoin/
├── sdk-client/ # Client TypeScript
│ ├── src/
│ │ ├── index.ts # Client original (déprécié)
│ │ └── secure-client.ts # Client sécurisé
│ └── examples/
└── 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.