# PLAN D'ASSURANCE SÉCURITÉ (PAS) — ENVOISMS.MA
## Plateforme CPaaS Entreprise & Passerelle Télécom Maroc (SMS · OTP · WhatsApp Business)

---

**Référence Documentaire :** `PAS-ENVOISMS-2026-V1`  
**Classification :** `Confidentiel — Réservé aux Directions Générales, RSSI, DPO & Auditeurs Réglementaires`  
**Date d'effet :** 2026-11-01  
**Révision :** 2.4 (Annuelle)  
**Entité Émettrice :** EnvoiSMS Maroc (Opérateur & Plateforme CPaaS)  
**Domaine de Validité :** `www.envoisms.ma`, `api.envoisms.ma`, Cloudflare Workers Edge, Base D1 Casablanca/Global, Queues Asynchrones, Binds Directs IAM, Orange, inwi.

---

### TABLE DES MATIÈRES

1. **Objet & Périmètre du Système de Management de la Sécurité**
2. **Architecture Technique Zero-Trust & Modèle Éphémère (Zero-Payload Persistence)**
3. **Alignement Loi n° 05-20 (Cybersécurité) & Directive Nationale DNSSI (DGSSI)**
4. **Conformité Loi n° 09-08 (CNDP) & Protection des Données Personnelles**
5. **Gouvernance ANRT & Dispositif Anti-Smishing / Sender ID KYB**
6. **Contrôles d'Accès, Clés API Scopées & Filtrage IP CIDR (ISO 27001 A.8.2 / A.8.5)**
7. **Intégrité Financière & Moteur Transactionnel CAS (Compare-And-Swap)**
8. **Sécurité des Échanges & Webhooks DLR Anti-SSRF (OWASP API Security)**
9. **Plan de Continuité d'Activité (PCA) & Plan de Reprise d'Activité (PRA)**
10. **Gestion des Incidents, Veille & Notifications Réglementaires**

---

### 1. OBJET & PÉRIMÈTRE DU SYSTÈME DE MANAGEMENT DE LA SÉCURITÉ

Le présent Plan d'Assurance Sécurité (PAS) formalise l'ensemble des mesures organisationnelles, techniques, physiques et logiques appliquées par **EnvoiSMS** pour garantir la confidentialité, l'intégrité, la disponibilité et la traçabilité de ses services de télécommunications programmables :
- **SMS Transactionnel & OTP à Haute Criticité** (Banques, Assurances, Fintechs, E-commerce).
- **Vérification d'Identité Gérée Zero-Knowledge** (`/v1/verify`).
- **Messagerie Officielle WhatsApp Business API** (Meta Cloud API Tech Provider).
- **Accusés de Réception en Temps Réel (DLR Webhooks)**.

Ce PAS est opposable et contractuellement annexé à chaque Convention Cadre de Service pour les entreprises assujetties au contrôle de **Bank Al-Maghrib**, de l'**ACAPS**, de la **CNDP** et de la **DGSSI**.

---

### 2. ARCHITECTURE TECHNIQUE ZERO-TRUST & MODÈLE ÉPHÉMÈRE (ZERO-PAYLOAD PERSISTENCE)

Pour concilier la vitesse ultracourte de l'Edge Computing mondial (Cloudflare Workers, latence < 15ms) et les exigences strictes de souveraineté des données bancaires et gouvernementales, EnvoiSMS a conçu l'architecture **"Zero-Payload Persistence"** :

1. **Traitement Volatil en Mémoire Vive Isolée (V8 Isolate) :**
   - Le message SMS ou le code OTP reçu par l'API REST `api.envoisms.ma` est validé et mis en file d'attente chiffrée uniquement pour la durée strictement nécessaire à son injection dans le SMSC de l'opérateur (IAM, Orange ou inwi).
2. **Masquage Automatique des Secrets dès Enfilement :**
   - Dès la prise en charge par le moteur de file d'attente, les chiffres bruts de l'OTP (`\b\d{4,8}\b`) sont immédiatement substitués par des astérisques (`******`) dans la table persistante `messages.body`.
   - Aucun mot de passe à usage unique (OTP), code de réinitialisation ou code d'authentification 2FA ne réside en clair sur disque ou stockage persistant.
3. **Mémoire Éphémère KV Sécurisée pour les Sessions de Vérification :**
   - Dans le service `/v1/verify`, le code OTP n'est stocké que sous sa forme hachée `SHA-256(code)` avec une durée de vie (TTL) maximale de 300 secondes. À l'issue de cette fenêtre ou dès validation réussie, la clé est purgée immédiatement.
4. **Purge Déterministe CNDP à 90 Jours :**
   - Les métadonnées d'acheminement conservées pour la réconciliation comptable et les litiges opérateurs font l'objet d'un nettoyage nocturne automatisé purgeant ou anonymisant tout identifiant après l'expiration de la fenêtre de conservation (30 à 90 jours glissants).

---

### 3. ALIGNEMENT LOI N° 05-20 (CYBERSÉCURITÉ) & DIRECTIVE NATIONALE DNSSI (DGSSI)

En application de la **Loi marocaine n° 05-20** relative à la cybersécurité des systèmes d'information des administrations de l'État, des établissements publics et des infrastructures d'importance vitale (OIV) :

- **Classification des Données :**
  - EnvoiSMS traite les flux SMS bancaires et OTP comme des données de criticité **Niveau 3 & 4 (Confidentiel / Secret d'Affaires)**. Aucune donnée nominative n'est externalisée vers des tiers publicitaires ou des serveurs d'agrégateurs non auditables.
- **Journalisation Immuable des Événements de Sécurité (Article 7) :**
  - Toutes les actions d'administration, créations de clés API, modifications de listes blanches IP et requêtes API font l'objet d'une écriture immédiate dans la table `audit_log` et dans le moteur analytique `ANALYTICS`.
  - La base de données D1 intègre des déclencheurs SQL (triggers) stricts interdisant formellement l'altération (`UPDATE`) ou la suppression (`DELETE`) des journaux d'audit de facturation et d'accès.
- **Notification d'Incident de Sécurité Majeur :**
  - EnvoiSMS maintient un engagement contractuel d'alerte et de notification sous **2 heures ouvrées** vers le Responsable de la Sécurité des Systèmes d'Information (RSSI) du client et prépare les éléments techniques de liaison avec le **ma-CERT (DGSSI)**.

---

### 4. CONFORMITÉ LOI N° 09-08 (CNDP) & PROTECTION DES DONNÉES PERSONNELLES

EnvoiSMS opère en conformité intégrale avec la **Loi marocaine n° 09-08** relative à la protection des personnes physiques à l'égard du traitement des données à caractère personnel :

- **Numéro d'Agrément CNDP :** Déclaration de traitement enregistrée sous le récépissé officiel **N° D-W-872/2024**.
- **Minimisation des Données Collectées :** Seuls le numéro MSISDN du destinataire et le statut technique de distribution (DLR) sont traités. Les attributs superflus (carnets d'adresses, géolocalisation) ne sont jamais requis.
- **Chiffrement au Repos et en Transit :**
  - En transit : TLS 1.3 obligatoire, suites cryptographiques modernes avec Perfect Forward Secrecy (ECDHE-ECDSA-AES128-GCM-SHA256).
  - Au repos : Chiffrement matériel transparent AES-256 sur l'ensemble des volumes D1 et buckets R2.
- **Droits des Personnes (Droit d'Accès, Rectification, Suppression) :**
  - Module en libre-service disponible via l'API `/v1/account/data-erasure` et tableau de bord permettant la suppression ou l'exportation intégrale des données dans un format standardisé (JSON).

---

### 5. GOUVERNANCE ANRT & DISPOSITIF ANTI-SMISHING / SENDER ID KYB

En concertation avec l'**ANRT** (Agence Nationale de Réglementation des Télécommunications) et les trois opérateurs télécoms marocains (Maroc Telecom, Orange Maroc, inwi) :

1. **Validation KYB Obligatoire du Sender ID Alphanumérique :**
   - Tout nom d'expéditeur personnalisé (3 à 11 caractères alphanumériques) doit être adossé à un dossier d'entreprise formel : Registre du Commerce (RC), Identifiant Commun de l'Entreprise (ICE), et Lettre d'Autorisation (LOA) signée par un représentant légal.
2. **Moteur Déterministe de Protection des Marques Bancaires :**
   - La plateforme intègre un dictionnaire exhaustif de protection des marques (`brand-protection.ts`) bloquant systématiquement toute tentative d'usurpation de banque marocaine (CIH, Attijariwafa, Banque Populaire, BOA, Société Générale, BMCI, CAM, Al Barid Bank, CFG, etc.), d'opérateur ou d'institution publique.
   - Les variations homoglyphes (ex. substitution du 'I' majuscule par un 'l' minuscule) et les prétextes d'urgence financière sont neutralisés dès la validation de la requête.
3. **Routage Local & Connexions Directes :**
   - Refus absolu des routes grises SIM-box ou des passerelles P2P illicites. Le trafic local marocain est injecté exclusivement via des liens d'interconnexion directs (SMPP / Routage local HTTP) garantissant la remise authentique du Sender ID.

---

### 6. CONTRÔLES D'ACCÈS, CLÉS API SCOPÉES & FILTRAGE IP CIDR (ISO 27001 A.8.2 / A.8.5)

- **Stockage Irréversible des Clés d'API :**
  - Les clés API générées (`esms_live_...` ou `smr_...`) ne sont affichées qu'une seule fois. La plateforme ne conserve en base de données que l'empreinte non réversible `SHA-256(clé)`.
- **Permissions Granulaires (Key Scoping) :**
  - Chaque clé se voit assigner des privilèges stricts : `sms:send`, `otp:verify`, `dlr:read`, `balance:read`. Une clé compromise dédiée à la lecture des statuts ne peut en aucun cas initier des envois de SMS.
- **Filtrage par Liste Blanche IP & Sous-Réseaux CIDR :**
  - Les clients bancaires et institutionnels peuvent restreindre l'utilisation de leur clé API à une liste d'adresses IP fixes ou à un bloc CIDR d'entreprise (ex. `196.200.12.0/24`). Toute requête émanant d'une adresse hors périmètre est immédiatement rejetée avec une réponse HTTP 403 Forbidden.
- **Double Authentification (MFA/TOTP) & Passkeys :**
  - Accès au tableau de bord protégé par 2FA obligatoire (TOTP RFC 6238 ou clés FIDO2/WebAuthn). Toute modification de mot de passe invalide instantanément l'intégralité des sessions ouvertes sur tous les PoPs Edge.

---

### 7. INTÉGRITÉ FINANCIÈRE & MOTEUR TRANSACTIONNEL CAS (COMPARE-AND-SWAP)

- **Prévention des Doubles Débits & Race Conditions :**
  - L'imputation du solde en Dirhams (MAD) s'effectue via une opération atomique de type **Compare-And-Swap (CAS)** exécutée directement dans le moteur SQL :
    `UPDATE accounts SET balance_mad = balance_mad - ? WHERE id = ? AND balance_mad >= ?`
  - Deux requêtes strictement simultanées ne peuvent jamais provoquer un solde négatif ou un double envoi non financé.
- **En-Tête d'Idempotence `Idempotency-Key` :**
  - L'API accepte l'en-tête `Idempotency-Key` (norme Stripe/Twilio). En cas de rupture réseau côté client, une requête rejouée avec la même clé renvoie immédiatement la réponse d'origine mise en cache pendant 24 heures, sans re-débiter le compte ni ré-émettre le SMS.

---

### 8. SÉCURITÉ DES ÉCHANGES & WEBHOOKS DLR ANTI-SSRF (OWASP API SECURITY)

- **Défense Anti-SSRF (Server-Side Request Forgery) sur les Webhooks :**
  - Le module `safe-fetch.ts` analyse rigoureusement chaque URL de webhook renseignée par le client.
  - Sont strictement bannies : les adresses de bouclage local (`127.0.0.0/8`, `::1`), les réseaux privés RFC 1918 (`10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`), les liaisons locales (`169.254.0.0/16`), les endpoints de métadonnées Cloud (`169.254.169.254`), ainsi que les ports non standards.
  - Chaque saut de redirection HTTP (301, 302, 307) fait l'objet d'un ré-examen complet de sécurité.
- **Authentification Cryptographique des Webhooks Sortants :**
  - Chaque webhook est signé cryptographiquement via les en-têtes :
    `X-EnvoiSMS-Timestamp: <epoch_seconds>`  
    `X-EnvoiSMS-Signature-256: t=<timestamp>,v1=HMAC-SHA256(timestamp + "." + payload, secret)`
  - Ce mécanisme protège les systèmes récepteurs de nos clients contre toute injection forgée ou rejeu de livraison DLR.

---

### 9. PLAN DE CONTINUITÉ D'ACTIVITÉ (PCA) & PLAN DE REPRISE D'ACTIVITÉ (PRA)

- **Réseau Décentralisé Sans Point Unique de Défaillance (SPOF) :**
  - L'API tourne sur un réseau distribué Anycast de plus de 300 centres de données. La panne d'un datacenter ou d'un nœud Edge reroute automatiquement le trafic en moins de 50 millisecondes.
- **Objectifs de Continuité Garantis :**
  - **RTO (Recovery Time Objective) :** Inférieur à **15 minutes**.
  - **RPO (Recovery Point Objective) :** Inférieur à **5 minutes**.
- **Stratégie de Sauvegardes :**
  - Base de données distribuée D1 avec fonction **Time Travel** (restauration à la seconde près sur 30 jours glissants).
  - Sauvegardes logiques chiffrées quotidiennes exportées vers un bucket de stockage immuable R2 isolé, avec une politique de rétention minimale de **35 jours**.

---

### 10. GESTION DES INCIDENTS, VEILLE & NOTIFICATIONS RÉGLEMENTAIRES

- **Politique de Divulgation Responsable (VDP) :**
  - Publication permanente du fichier conforme RFC 9116 à l'adresse `https://envoisms.ma/.well-known/security.txt`.
  - Adresse dédiée : `security@envoisms.ma`, délai d'accusé de réception contractuel de 24h ouvrées.
- **Surveillance Continue & Canaris Automatisés :**
  - Vérification continue (cron toutes les 5 minutes) de la cohérence des soldes, de la disponibilité des passerelles de paiement, et de la délivrabilité des webhooks DLR.
  - Journalisation temps réel sur canal d'astreinte dédié (ntfy / Ops Alerting) avec astreinte technique H24 pour les comptes Entreprise & Banque.

---

**Approbation & Engagement :**  
Direction Technique & Sécurité des Systèmes d'Information — EnvoiSMS Maroc  
*Document certifié conforme à l'état réel de production du codebase et des infrastructures d'EnvoiSMS.*
