4NK_vault/README.md

6.3 KiB

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/
  • 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 :

{
  "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 /<env>/<file>

Sert un fichier chiffré avec authentification utilisateur et variables d'environnement résolues.

Headers requis :

X-User-ID: your_user_id

Exemple :

curl -k -H "X-User-ID: <VAULT_USER_ID>" "$VAULT_URL"/dev/bitcoin/bitcoin.conf

🔧 Installation et utilisation

Prérequis

  • Python 3.8+
  • pip

Installation

# 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

# Démarrer l'API sécurisée
./start_api.sh

# Ou manuellement
source venv_api/bin/activate
python3 api_server.py

Test

# 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/<env>/_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

🌐 Intégration dans l'environnement 4NK

Ce module s'intègre au déploiement global 4NK via une URL de base configurable (variable VAULT_URL). Consultez les documents centraux pour le contexte et l'orchestration:

  • docs/DEEP_ARCHITECTURE_ANALYSIS.md
  • docs/TECHNICAL_REFERENCE.md
  • docs/DEPLOYMENT_GUIDE.md

⚠️ Avertissements

Voir SECURITY_NOTICE.md pour les détails sur les limitations de sécurité en mode démonstration.

📋 Fichiers centralisés

Les fichiers suivants sont centralisés dans le dépôt principal 4NK_env :

  • CODE_OF_CONDUCT.md - Code de conduite
  • CODEOWNERS - Propriétaires du code
  • CONTRIBUTING.md - Guide de contribution
  • LICENSE - Licence du projet

Voir : 4NK_env/CODE_OF_CONDUCT.md, 4NK_env/CODEOWNERS, 4NK_env/CONTRIBUTING.md, 4NK_env/LICENSE