# 🔐 Web Sentinel - Architecture Licence Embarquée Cryptée

*Révolution du modèle économique : De SaaS vers licence on-premise sécurisée*

---

## 🎯 **Vue d'ensemble**

Cette nouvelle architecture transforme Web Sentinel d'un modèle SaaS vers un **système de licence embarquée cryptée** permettant un fonctionnement 100% local avec sécurité enterprise-grade.

### **Principe fondamental** :
- 📦 **Application autonome** avec licence .lic chiffrée
- 🗄️ **Base de données locale** chiffrée (SQLCipher AES-256)
- 🔐 **Super admin** défini dans la licence
- 👥 **Gestion multi-utilisateurs** locale dans les limites de l'abonnement
- 🚫 **Zéro dépendance cloud** pour le fonctionnement

---

## 🏗️ **Architecture Technique**

### **Structure de l'application**
```
WebSentinel.exe
├── 📄 license.lic (fichier de licence chiffré RSA-4096)
├── 🗄️ database.db (SQLite chiffré AES-256)
├── 🔑 crypto_engine (système de chiffrement intégré)
└── 🛡️ anti_tampering (protection intégrité)
```

### **Nouveau module licence**
```
web_sentinel/
├── license/
│   ├── __init__.py
│   ├── license_manager.py      # Gestion licences .lic
│   ├── crypto_utils.py         # Chiffrement RSA/AES
│   ├── license_validator.py    # Validation et déchiffrement
│   ├── embedded_keys.py        # Clés publiques embarquées
│   └── generators/
│       ├── license_generator.py    # Générateur côté vendeur
│       └── key_manager.py          # Gestion paires clés
```

---

## 📄 **Structure de la licence .lic**

```json
{
  "licenseId": "WS-ENT-2024-ABC123",
  "version": "2.0",
  "superAdmin": {
    "email": "admin@entreprise.com", 
    "passwordHash": "argon2_hash_here",
    "displayName": "Administrateur Système",
    "createdDate": "2024-10-14T10:00:00Z"
  },
  "subscription": {
    "tier": "ENTERPRISE",
    "maxUsers": 50,
    "maxDomains": -1,
    "validUntil": "2025-12-31T23:59:59Z",
    "features": [
      "invasive_tests", 
      "api_access", 
      "multi_user", 
      "advanced_reports",
      "audit_logs"
    ]
  },
  "encryption": {
    "dbKeySeed": "crypto_random_seed_256_bits",
    "algorithm": "AES-256-GCM",
    "keyDerivation": "PBKDF2-SHA256"
  },
  "antiTampering": {
    "hardwareFingerprint": "optional_hw_binding_sha256",
    "installationId": "unique_installation_uuid",
    "appChecksum": "executable_integrity_hash",
    "maxOfflineDays": 7
  },
  "validation": {
    "serverValidationUrl": "https://license.websentinel.com/validate",
    "lastServerValidation": "2024-10-14T10:00:00Z",
    "gracePeriodHours": 168,
    "validationSecret": "hmac_validation_secret"
  },
  "customer": {
    "organization": "ACME Corporation",
    "contactEmail": "license@acme.com",
    "address": "123 Business St, City, Country"
  },
  "metadata": {
    "issuedDate": "2024-10-14T10:00:00Z",
    "issuer": "Web Sentinel License Authority",
    "salesOrder": "SO-2024-001234",
    "hardwareFingerprint": "optional_hw_binding"
  },
  "signature": "RSA4096_digital_signature_base64"
}
```

**🔐 PROTECTION ANTI-CONTOURNEMENT** → **[PROTECTION_LICENCE_ANTI_CONTOURNEMENT.md](PROTECTION_LICENCE_ANTI_CONTOURNEMENT.md)**

---

## 🔄 **Flux de Fonctionnement**

### **1. Installation et première utilisation**
```mermaid
flowchart TD
    A[Installation WebSentinel.exe] --> B[Fichier license.lic fourni]
    B --> C[Lecture et déchiffrement licence]
    C --> D{Licence valide?}
    D -->|❌| E[Erreur: Licence invalide]
    D -->|✅| F[Validation serveur initiale]
    F --> G{Serveur accessible?}
    G -->|❌| H[Mode grace period 7 jours]
    G -->|✅| I[Enregistrement installation]
    I --> J[Extraction infos super admin]
    J --> K[Génération clé base de données]
    K --> L[Création base SQLite chiffrée]
    L --> M[Écran de connexion super admin]
    H --> M
```

### **2. Gestion quotidienne avec protection**
```mermaid
flowchart TD
    A[Démarrage application] --> B[Vérifications intégrité]
    B --> C[Validation licence locale]
    C --> D{Validation serveur requise?}
    D -->|✅| E[Contact serveur validation]
    D -->|❌| F[Mode local temporaire]
    E --> G{Serveur OK?}
    G -->|❌| H[Mode grace period]
    G -->|✅| I[Mise à jour statut licence]
    I --> J[Déchiffrement base de données]
    F --> J
    H --> K{Grace period expirée?}
    K -->|✅| L[ARRÊT - Reconnexion requise]
    K -->|❌| J
    J --> M[Écran de connexion]
    M --> N{Type utilisateur?}
    N -->|Super Admin| O[Accès gestion utilisateurs]
    N -->|Utilisateur| P[Accès fonctionnalités]
```

---

## 🔐 **Sécurité Multicouche + Anti-Contournement**

### **Niveau 1 : Protection Application**
- 🛡️ **Obfuscation code** : PyArmor Professional
- 🔍 **Anti-debug** : Protection contre reverse engineering + debugger detection
- ✅ **Vérification intégrité** : Hash SHA-256 au démarrage + modules critiques
- 🚫 **Anti-tampering** : Détection modifications + hardware fingerprinting

### **Niveau 2 : Chiffrement Licence + Validation Serveur**
- 🔑 **RSA-4096** : Signature digitale licence + horodatage cryptographique
- 🔑 **Clés asymétriques** : Publique embarquée + privée côté vendeur
- ⏰ **Protection temporelle** : Validation NTP + détection modification date système  
- 🎯 **Hardware binding** : Empreinte matérielle unique (CPU+Motherboard)
- 🌐 **Validation serveur** : API authoritative avec grace period 7 jours offline

### **Niveau 3 : Base de Données + Monitoring**
- 💾 **SQLCipher AES-256** : Chiffrement transparent + clé rotative
- 🔐 **Clé dérivée** : PBKDF2-SHA256 + seed de la licence + hardware salt
- 🚫 **Inaccessible** : Sans l'application + validation continue
- 🔄 **Surveillance usage** : Logs activation + détection anomalies
- 📊 **Analytics côté serveur** : Monitoring installations + alertes admin

### **Niveau 4 : Protection Distributée (NOUVEAU)**
- 🎲 **Vérifications aléatoires** : Checks distribués dans le code (5% feature usage)
- ⏱️ **Validation périodique** : Thread background toutes les 1-2h
- 🚨 **Détection activité suspecte** : Multiple tentatives, patterns anormaux
- 🔄 **Système d'alertes graduelles** : 30/14/7/3/1 jours avant expiration

---

## 💰 **Nouveau Modèle Économique**

### **Tarification On-Premise**
| Tier | Prix/An | Utilisateurs | Domaines | Support | Spécialisation |
|------|---------|-------------|----------|---------|---------------|
| **PRO** | 299€ | 5 | Illimité | Email | PME/StartUp |
| **ENTERPRISE** | 1,499€ | 50 | Illimité | Priority + Phone | Grandes entreprises |
| **CORPORATE** | 4,999€ | Illimité | Illimité | Dedicated + On-site | Multinationales |
| **GOVERNMENT** | 50k€+ | Illimité | Illimité | Security Clearance | Administrations |
| **FINANCE** | 25k€+ | Illimité | Illimité | Trading SLA | Banques/Finance |
| **MEDICAL** | 15k€+ | Illimité | Illimité | 24/7 Medical | Hôpitaux/Santé |

### **Avantages commerciaux**
- ✅ **Marges élevées** : Pas de coûts cloud récurrents
- ✅ **Paiement annuel** : Cash flow prévisible
- ✅ **Segments premium** : Gouvernement, finance, défense
- ✅ **Différenciation** : Seul concurrent on-premise
- ✅ **Conformité** : RGPD, SOC2, ISO27001 natif

---

## 🛠️ **Plan d'Implémentation**

### **Phase 1 : Fondations Crypto (3 semaines)**

#### **Semaine 1 : Système de chiffrement**
```python
# web_sentinel/license/crypto_utils.py
class CryptoEngine:
    def generate_keypair() -> Tuple[PrivateKey, PublicKey]
    def encrypt_license(license_data: dict, private_key: PrivateKey) -> bytes
    def decrypt_license(encrypted_data: bytes, public_key: PublicKey) -> dict
    def derive_db_key(seed: str, salt: str) -> str
```

#### **Semaine 2 : Gestionnaire de licence**
```python
# web_sentinel/license/license_manager.py
class LicenseManager:
    def load_license_file(self, lic_path: str) -> LicenseInfo
    def validate_license(self, license_data: dict) -> bool
    def get_super_admin_creds(self) -> Tuple[str, str]
    def get_subscription_limits(self) -> SubscriptionLimits
    def check_expiry(self) -> bool
```

#### **Semaine 3 : Générateur de licences**
```python
# tools/license_generator.py
class LicenseGenerator:
    def create_license(customer_info: dict, subscription: dict) -> str
    def sign_license(license_data: dict) -> bytes
    def export_license_file(signed_data: bytes, filename: str)
```

### **Phase 2 : Base de Données Chiffrée (2 semaines)**

#### **Migration SQLCipher**
```python
# web_sentinel/database/encrypted_manager.py
class EncryptedDatabaseManager:
    def initialize_encrypted_db(self, db_key: str) -> Connection
    def migrate_existing_data(self, old_db: str, new_db: str)
    def create_tables_with_encryption(self)
```

#### **Nouveaux modèles**
```python
# web_sentinel/license/models.py
@dataclass
class LicenseInfo:
    license_id: str
    super_admin: SuperAdminInfo
    subscription: SubscriptionLimits
    encryption: EncryptionConfig
    expiry_date: datetime
```

### **Phase 3 : Interface Super Admin (2 semaines)**

#### **Mode Super Admin**
```python
# web_sentinel/admin/super_admin_mode.py
class SuperAdminInterface:
    def show_license_status(self) -> LicenseStatus
    def create_user_account(self, user_info: dict) -> User
    def modify_user_permissions(self, user_id: str, permissions: list)
    def view_usage_statistics(self) -> UsageStats
    def export_audit_logs(self, date_range: tuple) -> str
```

#### **Interface GUI Admin**
```python
# web_sentinel/gui/admin_panel.py
class AdminPanel:
    def show_user_management(self)
    def display_license_info(self)
    def show_usage_limits(self)
    def export_reports(self)
```

### **Phase 4 : Protection et Distribution (1 semaine)**

#### **Sécurisation application**
- 🛡️ **PyArmor** : Obfuscation professionnelle
- 🔒 **Anti-debug** : Protection runtime
- 📦 **Packaging** : Bundle sécurisé
- 🧪 **Tests sécurité** : Validation complète

---

## 🎯 **Segments de Marché Cibles**

### **Primaires**
- 🏛️ **Administrations** : Gouvernement, ministères, collectivités
- 🏦 **Secteur financier** : Banques, assurances, fintechs
- ⚕️ **Santé** : Hôpitaux, laboratoires, pharma
- 🏭 **Industrie** : Manufacturing, énergie, transport

### **Secondaires**
- 🔒 **Cybersécurité** : MSSP, consultants, auditeurs
- ⚖️ **Juridique** : Cabinets d'avocats, études notariales
- 🎓 **Éducation** : Universités, écoles d'ingénieurs
- 🌍 **International** : Pays avec restrictions cloud

---

## 📊 **Métriques de Succès**

### **Techniques**
- ✅ **Temps de déchiffrement** < 2 secondes
- ✅ **Sécurité licence** : Résistance 256-bit minimum
- ✅ **Performance base** : Pas d'impact > 5%
- ✅ **Compatibilité** : Windows/Linux/macOS

### **Business**
- 🎯 **Objectif Year 1** : 50 licences vendues
- 💰 **Revenue target** : 150k€ ARR on-premise
- 📈 **Conversion rate** : 25% prospects → clients
- ⭐ **Satisfaction** : NPS > 50

---

## 🚧 **Risques et Mitigation**

### **Techniques**
| Risque | Impact | Probabilité | Mitigation |
|--------|---------|------------|------------|
| Licence crackée | Élevé | Faible | Multi-layer encryption + hardware binding |
| Performance dégradée | Moyen | Moyen | Optimisation crypto + cache intelligent |
| Compatibilité OS | Faible | Moyen | Tests exhaustifs multi-plateforme |

### **Business**
| Risque | Impact | Probabilité | Mitigation |
|--------|---------|------------|------------|
| Résistance marché | Élevé | Faible | Validation clients pilotes |
| Support complexe | Moyen | Moyen | Documentation + formation |
| Concurrence SaaS | Faible | Élevé | Différenciation compliance |

---

## 🏁 **Conclusion**

Cette architecture révolutionnaire positionne Web Sentinel comme **leader unique** sur le marché on-premise de la sécurité web.

### **Bénéfices clés** :
- 🚀 **Différenciation totale** vs concurrents SaaS
- 💰 **Marges supérieures** (pas de coûts cloud)
- 🎯 **Nouveaux segments** (gouvernement, finance, santé)
- 🔐 **Sécurité maximale** (données jamais en cloud)
- 📈 **Scalabilité** (pas de limites infrastructure)

### **Recommandation** : **🟢 GO**
Implémentation prioritaire avant développement de nouvelles fonctionnalités. Cette architecture sera la fondation de la croissance future de Web Sentinel.

---

*🔐 Document confidentiel - Web Sentinel License Architecture v2.0*