4NK Dev b46a1a7bad docs: ajout des spécifications API complètes
- Spécification technique détaillée (api-specification.md)
- Spécification OpenAPI 3.0.3 (api-specification-openapi.yaml)
- Mise à jour de l index de documentation

Nouvelles fonctionnalités documentées:
- Authentification par clés utilisateur (X-User-ID)
- Chiffrement ChaCha20-Poly1305 quantique résistant
- Variables d environnement avec résolution automatique
- Rotation automatique des clés
- Protection contre les attaques de traversée
- Endpoints /health, /info, /routes, /{env}/{file_path}
- Codes d erreur détaillés (400, 401, 403, 404, 500)
- Exemples d utilisation complets
- Structure du payload chiffré
- Gestion des headers X-Next-Key

Spécification OpenAPI inclut:
- Tous les endpoints avec paramètres
- Schémas de réponse complets
- Codes d erreur avec exemples
- Sécurité UserKeyAuth
- Tags et descriptions détaillées
- Exemples de requêtes/réponses
2025-09-30 14:19:13 +00:00
2025-09-30 13:42:40 +00:00
2025-09-30 13:42:40 +00:00

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: demo_user_001" https://vault.4nkweb.com:6666/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

🌐 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.

Description
No description provided
Readme 792 KiB
Languages
TypeScript 32.8%
JavaScript 30.1%
Python 19.3%
Shell 17.8%