{
  "version": "2026-08-16",
  "count": 67,
  "doctrine": "Décomposition opérationnelle de la catégorie 09 ; ne modifie pas le dénominateur des 155 mesures principales.",
  "measures": [
    {
      "title": "MESURE 01 — Déclencher la cellule d’audit cyber de crise",
      "decision": "Créer sous 24 h une cellule interministérielle temporaire de commandement, mandatée pour prioriser les systèmes, lever les blocages administratifs et exiger des preuves de correction.",
      "why": "Sans commandement unique, chaque ministère avance à son rythme et les dépendances transverses restent invisibles.",
      "pilot": "Premier ministre / SGDSN",
      "vehicle": "Décret et instruction interministérielle",
      "deadline": "H+24",
      "kpi": "Cellule active, périmètre Tier 0/1 publié en interne et responsable nommé pour chaque ministère.",
      "refs": "[O03][O06]",
      "costing": {
        "cost_family": "governance",
        "cost_family_label": "Gouvernance / doctrine / droit",
        "cost_status": "cout_incremental_non_consolidable_sans_ETP_ou_prestation_additionnelle",
        "quantity_to_measure": "périmètre réel issu de l’inventaire 100 jours",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-GOVERNANCE",
        "formula": "C = E × C_E + P",
        "symbols": "E=ETP supplémentaires réellement nécessaires; C_E=coût employeur annuel d’un ETP; P=prestations externes documentées",
        "missing_inputs": "périmètre réel issu de l’inventaire 100 jours ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 02 — Geler tout nouvel accès permanent de prestataire",
      "decision": "Interdire la création de nouveaux comptes externes permanents sur les SI sensibles ; n’autoriser que des accès temporaires, nominatifs et journalisés.",
      "why": "La DGFiP et la CNIL montrent que les identités de tiers et sous-traitants sont une surface d’attaque récurrente.",
      "pilot": "DINUM / DNUM / RSSI",
      "vehicle": "Instruction + clauses contractuelles",
      "deadline": "H+24",
      "kpi": "100 % des nouveaux accès tiers sensibles avec date d’expiration automatique.",
      "refs": "[O01][O02][O07]",
      "costing": {
        "cost_family": "governance",
        "cost_family_label": "Gouvernance / doctrine / droit",
        "cost_status": "cout_incremental_non_consolidable_sans_ETP_ou_prestation_additionnelle",
        "quantity_to_measure": "périmètre réel issu de l’inventaire 100 jours",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-GOVERNANCE",
        "formula": "C = E × C_E + P",
        "symbols": "E=ETP supplémentaires réellement nécessaires; C_E=coût employeur annuel d’un ETP; P=prestations externes documentées",
        "missing_inputs": "périmètre réel issu de l’inventaire 100 jours ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 03 — Inventorier les comptes privilégiés",
      "decision": "Construire sous 72 h la liste des administrateurs, comptes de service, comptes d’urgence et comptes fournisseurs des périmètres Tier 0/1.",
      "why": "On ne peut défendre un droit que l’on ne sait pas attribuer.",
      "pilot": "ANSSI / DNUM",
      "vehicle": "Instruction technique",
      "deadline": "H+72",
      "kpi": "≥ 99 % des comptes privilégiés associés à un propriétaire et une justification.",
      "refs": "[O02][O13]",
      "costing": {
        "cost_family": "identity",
        "cost_family_label": "Identités / PAM / MFA",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "nombre de comptes privilégiés Tier 0/1",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-IDENTITY",
        "formula": "C = N_u × L_u + N_h × P_h + J_i × TJM",
        "symbols": "N_u=utilisateurs/comptes; L_u=coût annuel par utilisateur; N_h=clefs ou matériels; P_h=prix unitaire; J_i=jours d’intégration; TJM=tarif journalier moyen",
        "missing_inputs": "nombre de comptes privilégiés Tier 0/1 ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 04 — MFA résistante au phishing pour les privilèges",
      "decision": "Imposer clefs matérielles, certificats ou mécanismes équivalents résistants au phishing pour les accès administratifs et distants critiques.",
      "why": "Les attaques récentes reposent sur l’usurpation d’identifiants ; la MFA traditionnelle réduit le risque mais doit être conçue contre l’interception et la fatigue MFA.",
      "pilot": "ANSSI / DINUM",
      "vehicle": "Référentiel obligatoire",
      "deadline": "J+14",
      "kpi": "100 % des comptes Tier 0/1 protégés par authentification résistante au phishing.",
      "refs": "[O02][O13]",
      "costing": {
        "cost_family": "identity",
        "cost_family_label": "Identités / PAM / MFA",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "nombre de comptes privilégiés et nombre de facteurs matériels",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-IDENTITY",
        "formula": "C = N_u × L_u + N_h × P_h + J_i × TJM",
        "symbols": "N_u=utilisateurs/comptes; L_u=coût annuel par utilisateur; N_h=clefs ou matériels; P_h=prix unitaire; J_i=jours d’intégration; TJM=tarif journalier moyen",
        "missing_inputs": "nombre de comptes privilégiés et nombre de facteurs matériels ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 05 — Supprimer comptes génériques et partagés",
      "decision": "Remplacer les comptes partagés par des identités nominatives ; les exceptions doivent être temporaires, documentées et surveillées.",
      "why": "La CNIL identifie les comptes génériques/partagés parmi les causes courantes de compromission.",
      "pilot": "DNUM / RH / RSSI",
      "vehicle": "Instruction",
      "deadline": "J+30",
      "kpi": "0 compte partagé non justifié sur Tier 0/1.",
      "refs": "[O02]",
      "costing": {
        "cost_family": "governance",
        "cost_family_label": "Gouvernance / doctrine / droit",
        "cost_status": "cout_incremental_non_consolidable_sans_ETP_ou_prestation_additionnelle",
        "quantity_to_measure": "périmètre réel issu de l’inventaire 100 jours",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-GOVERNANCE",
        "formula": "C = E × C_E + P",
        "symbols": "E=ETP supplémentaires réellement nécessaires; C_E=coût employeur annuel d’un ETP; P=prestations externes documentées",
        "missing_inputs": "périmètre réel issu de l’inventaire 100 jours ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 06 — Accès administrateur « juste à temps »",
      "decision": "Déployer une gestion des accès privilégiés où le droit n’existe que pendant la fenêtre d’intervention, avec approbation et expiration automatique.",
      "why": "Un compte privilégié permanent est une porte permanente.",
      "pilot": "DINUM / DNUM",
      "vehicle": "Marché-cadre + référentiel",
      "deadline": "J+100",
      "kpi": "≥ 90 % des opérations privilégiées Tier 0/1 exécutées via élévation temporaire.",
      "refs": "[O02]",
      "costing": {
        "cost_family": "identity",
        "cost_family_label": "Identités / PAM / MFA",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "nombre de comptes privilégiés et opérations JIT",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-IDENTITY",
        "formula": "C = N_u × L_u + N_h × P_h + J_i × TJM",
        "symbols": "N_u=utilisateurs/comptes; L_u=coût annuel par utilisateur; N_h=clefs ou matériels; P_h=prix unitaire; J_i=jours d’intégration; TJM=tarif journalier moyen",
        "missing_inputs": "nombre de comptes privilégiés et opérations JIT ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 07 — Postes d’administration dédiés",
      "decision": "Interdire l’administration des SI critiques depuis un poste bureautique ordinaire ; utiliser des postes et réseaux d’administration séparés.",
      "why": "Réduit le risque qu’un malware bureautique devienne une compromission d’administration.",
      "pilot": "ANSSI / DNUM",
      "vehicle": "Référentiel",
      "deadline": "J+100",
      "kpi": "100 % des administrateurs Tier 0 utilisent un poste dédié.",
      "refs": "[O15]",
      "costing": {
        "cost_family": "identity",
        "cost_family_label": "Identités / PAM / MFA",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "nombre de postes d’administration dédiés",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-IDENTITY",
        "formula": "C = N_u × L_u + N_h × P_h + J_i × TJM",
        "symbols": "N_u=utilisateurs/comptes; L_u=coût annuel par utilisateur; N_h=clefs ou matériels; P_h=prix unitaire; J_i=jours d’intégration; TJM=tarif journalier moyen",
        "missing_inputs": "nombre de postes d’administration dédiés ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 08 — Cartographie du graphe d’identités",
      "decision": "Reconstituer qui peut accéder à quoi, directement ou par groupes, rôles, délégations et rebonds.",
      "why": "Les droits hérités et les chaînes d’autorisation sont souvent plus dangereuses que le compte initial.",
      "pilot": "DINUM / DNUM",
      "vehicle": "Programme technique",
      "deadline": "J+45",
      "kpi": "Graphe complet Tier 0/1 et 100 % des chemins à privilège excessif traités.",
      "refs": "[O02][O13]",
      "costing": {
        "cost_family": "identity",
        "cost_family_label": "Identités / PAM / MFA",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "périmètre réel issu de l’inventaire 100 jours",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-IDENTITY",
        "formula": "C = N_u × L_u + N_h × P_h + J_i × TJM",
        "symbols": "N_u=utilisateurs/comptes; L_u=coût annuel par utilisateur; N_h=clefs ou matériels; P_h=prix unitaire; J_i=jours d’intégration; TJM=tarif journalier moyen",
        "missing_inputs": "périmètre réel issu de l’inventaire 100 jours ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 09 — Réauthentification contextuelle",
      "decision": "Exiger une nouvelle preuve forte pour une action très sensible : gros export, modification de droits, création de compte, accès à une base nationale.",
      "why": "Une session volée ne doit pas suffire à exécuter une action de masse.",
      "pilot": "ANSSI / métiers",
      "vehicle": "Référentiel",
      "deadline": "J+100",
      "kpi": "100 % des actions critiques couvertes par step-up authentication.",
      "refs": "[O02]",
      "costing": {
        "cost_family": "identity",
        "cost_family_label": "Identités / PAM / MFA",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "périmètre réel issu de l’inventaire 100 jours",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-IDENTITY",
        "formula": "C = N_u × L_u + N_h × P_h + J_i × TJM",
        "symbols": "N_u=utilisateurs/comptes; L_u=coût annuel par utilisateur; N_h=clefs ou matériels; P_h=prix unitaire; J_i=jours d’intégration; TJM=tarif journalier moyen",
        "missing_inputs": "périmètre réel issu de l’inventaire 100 jours ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 10 — Double validation pour les exports les plus sensibles",
      "decision": "Imposer une validation à deux personnes pour les exports massifs de données classées au plus haut niveau métier.",
      "why": "Le contrôle de volume et la séparation des responsabilités limitent l’impact d’un compte compromis.",
      "pilot": "Métiers / DPO / RSSI",
      "vehicle": "Décret ou instruction selon périmètre",
      "deadline": "J+100",
      "kpi": "100 % des exports dépassant le seuil journalisés et, si requis, doublement validés.",
      "refs": "[O02]",
      "costing": {
        "cost_family": "logging",
        "cost_family_label": "Journaux / SOC / détection / DLP",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "périmètre réel issu de l’inventaire 100 jours",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-LOGGING",
        "formula": "C = V_j × 365 × P_i + S_r × P_s + E × C_E + J_i × TJM",
        "symbols": "V_j=volume quotidien de journaux; P_i=coût d’ingestion; S_r=volume conservé; P_s=coût de stockage; E=ETP; C_E=coût employeur; J_i=jours d’intégration; TJM=tarif journalier",
        "missing_inputs": "périmètre réel issu de l’inventaire 100 jours ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 11 — Quotas et limiteurs d’extraction",
      "decision": "Appliquer par utilisateur, service et API des limites de requêtes, pagination, volumes et fréquence ; blocage ou challenge en cas d’anomalie.",
      "why": "La CNIL identifie explicitement l’absence de limitation comme facteur d’extraction massive.",
      "pilot": "DNUM / éditeurs",
      "vehicle": "Référentiel applicatif",
      "deadline": "J+45",
      "kpi": "100 % des API Tier 0/1 avec limites de volume définies et testées.",
      "refs": "[O02]",
      "costing": {
        "cost_family": "logging",
        "cost_family_label": "Journaux / SOC / détection / DLP",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "périmètre réel issu de l’inventaire 100 jours",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-LOGGING",
        "formula": "C = V_j × 365 × P_i + S_r × P_s + E × C_E + J_i × TJM",
        "symbols": "V_j=volume quotidien de journaux; P_i=coût d’ingestion; S_r=volume conservé; P_s=coût de stockage; E=ETP; C_E=coût employeur; J_i=jours d’intégration; TJM=tarif journalier",
        "missing_inputs": "périmètre réel issu de l’inventaire 100 jours ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 12 — Autorisation objet par objet dans les API",
      "decision": "Vérifier côté serveur le droit d’un appelant pour chaque ressource demandée, sans dépendre d’un identifiant fourni par le client.",
      "why": "Une API doit empêcher l’énumération ou l’accès horizontal à des données non nécessaires.",
      "pilot": "DNUM / développeurs",
      "vehicle": "Standard de développement",
      "deadline": "J+100",
      "kpi": "0 API critique mise en production sans tests d’autorisation métier.",
      "refs": "[O02]",
      "costing": {
        "cost_family": "data",
        "cost_family_label": "Données / API / segmentation",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "périmètre réel issu de l’inventaire 100 jours",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-DATA",
        "formula": "C = N_s × J_s × TJM + L + T",
        "symbols": "N_s=systèmes concernés; J_s=jours par système; TJM=tarif journalier; L=licences/outils; T=transition/migration",
        "missing_inputs": "périmètre réel issu de l’inventaire 100 jours ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 13 — Journalisation de bout en bout",
      "decision": "Journaliser accès applicatifs, API, systèmes, réseau et opérations privilégiées avec identité, terminal, heure et volumétrie.",
      "why": "La CNIL demande une journalisation permettant de générer des alertes et une levée de doute humaine.",
      "pilot": "ANSSI / DNUM",
      "vehicle": "Référentiel",
      "deadline": "J+45",
      "kpi": "≥ 95 % des événements critiques remontent au système central avec horodatage fiable.",
      "refs": "[O02][O13]",
      "costing": {
        "cost_family": "logging",
        "cost_family_label": "Journaux / SOC / détection / DLP",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "volume journalier de logs",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-LOGGING",
        "formula": "C = V_j × 365 × P_i + S_r × P_s + E × C_E + J_i × TJM",
        "symbols": "V_j=volume quotidien de journaux; P_i=coût d’ingestion; S_r=volume conservé; P_s=coût de stockage; E=ETP; C_E=coût employeur; J_i=jours d’intégration; TJM=tarif journalier",
        "missing_inputs": "volume journalier de logs ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 14 — Logs immuables et hors portée des administrateurs locaux",
      "decision": "Envoyer les journaux critiques vers un stockage séparé et protégé contre l’altération.",
      "why": "Un attaquant ayant pris des privilèges ne doit pas pouvoir effacer facilement ses traces.",
      "pilot": "DINUM / ANSSI",
      "vehicle": "Architecture",
      "deadline": "J+100",
      "kpi": "100 % des Tier 0 avec copie immuable de logs.",
      "refs": "[O02]",
      "costing": {
        "cost_family": "logging",
        "cost_family_label": "Journaux / SOC / détection / DLP",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "volume de logs à conservation immuable",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-LOGGING",
        "formula": "C = V_j × 365 × P_i + S_r × P_s + E × C_E + J_i × TJM",
        "symbols": "V_j=volume quotidien de journaux; P_i=coût d’ingestion; S_r=volume conservé; P_s=coût de stockage; E=ETP; C_E=coût employeur; J_i=jours d’intégration; TJM=tarif journalier",
        "missing_inputs": "volume de logs à conservation immuable ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 15 — Détection comportementale des comptes légitimes",
      "decision": "Établir une ligne de base par profil : volumes, horaires, ressources, géographie, terminal ; alerter sur les écarts significatifs.",
      "why": "L’identité peut être valide alors que le comportement est malveillant.",
      "pilot": "SOC / PDIS",
      "vehicle": "Marché + règles de détection",
      "deadline": "J+45",
      "kpi": "Délai médian de détection d’un scénario d’exfiltration simulé < 10 min sur Tier 0.",
      "refs": "[O02][O13]",
      "costing": {
        "cost_family": "logging",
        "cost_family_label": "Journaux / SOC / détection / DLP",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "nombre de comptes et volume d’événements",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-LOGGING",
        "formula": "C = V_j × 365 × P_i + S_r × P_s + E × C_E + J_i × TJM",
        "symbols": "V_j=volume quotidien de journaux; P_i=coût d’ingestion; S_r=volume conservé; P_s=coût de stockage; E=ETP; C_E=coût employeur; J_i=jours d’intégration; TJM=tarif journalier",
        "missing_inputs": "nombre de comptes et volume d’événements ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 16 — Blocage automatique des exfiltrations à haute confiance",
      "decision": "Autoriser, sur scénarios précisément définis, la suspension automatique d’une session ou d’un jeton et l’isolement du terminal.",
      "why": "À vitesse machine, une validation humaine systématique peut arriver après l’exfiltration.",
      "pilot": "ANSSI / SOC",
      "vehicle": "Doctrine de réponse",
      "deadline": "J+100",
      "kpi": "Scénarios automatiques testés en exercice, taux de faux positifs maîtrisé.",
      "refs": "[I02][O02]",
      "costing": {
        "cost_family": "logging",
        "cost_family_label": "Journaux / SOC / détection / DLP",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "flux d’exfiltration à surveiller et volume de données",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-LOGGING",
        "formula": "C = V_j × 365 × P_i + S_r × P_s + E × C_E + J_i × TJM",
        "symbols": "V_j=volume quotidien de journaux; P_i=coût d’ingestion; S_r=volume conservé; P_s=coût de stockage; E=ETP; C_E=coût employeur; J_i=jours d’intégration; TJM=tarif journalier",
        "missing_inputs": "flux d’exfiltration à surveiller et volume de données ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 17 — Cartographier toutes les données sensibles",
      "decision": "Imposer à chaque administration un registre technique indiquant type de donnée, propriétaire, localisation, durée, accès et sous-traitants.",
      "why": "La Cour des comptes a relevé l’absence de cartographie des données sensibles par administration.",
      "pilot": "SGDSN / DINUM / DPO",
      "vehicle": "Décret / référentiel",
      "deadline": "J+100",
      "kpi": "100 % des jeux Tier 0/1 cartographiés et classés.",
      "refs": "[O04]",
      "costing": {
        "cost_family": "data",
        "cost_family_label": "Données / API / segmentation",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "périmètre réel issu de l’inventaire 100 jours",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-DATA",
        "formula": "C = N_s × J_s × TJM + L + T",
        "symbols": "N_s=systèmes concernés; J_s=jours par système; TJM=tarif journalier; L=licences/outils; T=transition/migration",
        "missing_inputs": "périmètre réel issu de l’inventaire 100 jours ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 18 — Créer quatre niveaux fonctionnels de sensibilité",
      "decision": "Établir un classement public/interne/sensible/souverain-vital, sans remplacer les classifications défense existantes.",
      "why": "Les exigences de cloud, chiffrement, audit et accès doivent découler de la criticité des données.",
      "pilot": "SGDSN / ANSSI",
      "vehicle": "Décret",
      "deadline": "J+100",
      "kpi": "Chaque nouveau SI dispose d’une classification avant choix technologique.",
      "refs": "[O04][O06]",
      "costing": {
        "cost_family": "governance",
        "cost_family_label": "Gouvernance / doctrine / droit",
        "cost_status": "cout_incremental_non_consolidable_sans_ETP_ou_prestation_additionnelle",
        "quantity_to_measure": "périmètre réel issu de l’inventaire 100 jours",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-GOVERNANCE",
        "formula": "C = E × C_E + P",
        "symbols": "E=ETP supplémentaires réellement nécessaires; C_E=coût employeur annuel d’un ETP; P=prestations externes documentées",
        "missing_inputs": "périmètre réel issu de l’inventaire 100 jours ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 19 — Minimisation et purge automatiques",
      "decision": "Supprimer les données qui n’ont plus de finalité active ; déplacer l’historique nécessaire dans des environnements à accès plus restreint.",
      "why": "La CNIL identifie la conservation excessive comme facteur d’ampleur des fuites.",
      "pilot": "Métiers / DPO",
      "vehicle": "Instruction + automatisation",
      "deadline": "12 mois",
      "kpi": "Taux de jeux avec politique de purge testée > 95 %.",
      "refs": "[O02]",
      "costing": {
        "cost_family": "data",
        "cost_family_label": "Données / API / segmentation",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "périmètre réel issu de l’inventaire 100 jours",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-DATA",
        "formula": "C = N_s × J_s × TJM + L + T",
        "symbols": "N_s=systèmes concernés; J_s=jours par système; TJM=tarif journalier; L=licences/outils; T=transition/migration",
        "missing_inputs": "périmètre réel issu de l’inventaire 100 jours ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 20 — Découpler les grandes bases nationales",
      "decision": "Segmenter les données pour éviter qu’une seule identité ou une seule API expose un jeu national complet.",
      "why": "Réduit le « blast radius », c’est-à-dire le périmètre affecté par une compromission.",
      "pilot": "DNUM / architectes",
      "vehicle": "Programme d’architecture",
      "deadline": "24 mois",
      "kpi": "Aucun compte standard ne peut extraire seul un jeu national complet sans contrôles additionnels.",
      "refs": "[O02]",
      "costing": {
        "cost_family": "data",
        "cost_family_label": "Données / API / segmentation",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "périmètre réel issu de l’inventaire 100 jours",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-DATA",
        "formula": "C = N_s × J_s × TJM + L + T",
        "symbols": "N_s=systèmes concernés; J_s=jours par système; TJM=tarif journalier; L=licences/outils; T=transition/migration",
        "missing_inputs": "périmètre réel issu de l’inventaire 100 jours ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 21 — Inventaire national de la surface Internet",
      "decision": "Découvrir en continu domaines, sous-domaines, services, certificats, API et actifs exposés de l’État.",
      "why": "Les actifs inconnus ne sont ni patchés ni surveillés.",
      "pilot": "ANSSI / DINUM",
      "vehicle": "Service mutualisé",
      "deadline": "J+14 puis continu",
      "kpi": "Écart entre inventaire déclaré et surface observée < 1 %.",
      "refs": "[O03]",
      "costing": {
        "cost_family": "devsecops",
        "cost_family_label": "DevSecOps / vulnérabilités / chaîne logicielle",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "nombre d’actifs exposés Internet",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-DEVSECOPS",
        "formula": "C = N_r × L_r + N_p × J_p × TJM + I",
        "symbols": "N_r=dépôts/projets; L_r=coût outil par dépôt/projet; N_p=projets à intégrer; J_p=jours d’intégration; TJM=tarif journalier; I=infrastructure",
        "missing_inputs": "nombre d’actifs exposés Internet ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 22 — Scanner quotidiennement les vulnérabilités exposées",
      "decision": "Utiliser outils classiques et IA défensive pour prioriser les vulnérabilités réellement atteignables depuis Internet.",
      "why": "La vitesse d’exploitation exige une cadence plus rapide que l’audit annuel.",
      "pilot": "ANSSI / DNUM",
      "vehicle": "Service continu",
      "deadline": "J+14",
      "kpi": "100 % des actifs Internet critiques analysés quotidiennement.",
      "refs": "[M01][I02]",
      "costing": {
        "cost_family": "devsecops",
        "cost_family_label": "DevSecOps / vulnérabilités / chaîne logicielle",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "nombre d’actifs scannés quotidiennement",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-DEVSECOPS",
        "formula": "C = N_r × L_r + N_p × J_p × TJM + I",
        "symbols": "N_r=dépôts/projets; L_r=coût outil par dépôt/projet; N_p=projets à intégrer; J_p=jours d’intégration; TJM=tarif journalier; I=infrastructure",
        "missing_inputs": "nombre d’actifs scannés quotidiennement ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 23 — Patching piloté par le risque",
      "decision": "Fixer des délais : vulnérabilité activement exploitée immédiatement ; critique exposée 24–72 h ou mesure compensatoire ; élevée 7 jours ; significative 30 jours.",
      "why": "Le modèle mensuel uniforme est trop lent face à l’automatisation.",
      "pilot": "ANSSI / DNUM",
      "vehicle": "Référentiel",
      "deadline": "J+30",
      "kpi": "≥ 95 % des vulnérabilités critiques dans le SLA ou couvertes par mesure compensatoire.",
      "refs": "[I02][M04]",
      "costing": {
        "cost_family": "devsecops",
        "cost_family_label": "DevSecOps / vulnérabilités / chaîne logicielle",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "périmètre réel issu de l’inventaire 100 jours",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-DEVSECOPS",
        "formula": "C = N_r × L_r + N_p × J_p × TJM + I",
        "symbols": "N_r=dépôts/projets; L_r=coût outil par dépôt/projet; N_p=projets à intégrer; J_p=jours d’intégration; TJM=tarif journalier; I=infrastructure",
        "missing_inputs": "périmètre réel issu de l’inventaire 100 jours ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 24 — Chaîne de patch industrialisée",
      "decision": "Automatiser construction, tests, déploiement progressif et retour arrière pour raccourcir le temps entre découverte et correction.",
      "why": "Mythos déplace le goulot d’étranglement vers vérification et patching.",
      "pilot": "DINUM / DNUM",
      "vehicle": "Programme DevSecOps",
      "deadline": "18 mois",
      "kpi": "Temps médian découverte→production divisé par 3.",
      "refs": "[M03][M04]",
      "costing": {
        "cost_family": "devsecops",
        "cost_family_label": "DevSecOps / vulnérabilités / chaîne logicielle",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "périmètre réel issu de l’inventaire 100 jours",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-DEVSECOPS",
        "formula": "C = N_r × L_r + N_p × J_p × TJM + I",
        "symbols": "N_r=dépôts/projets; L_r=coût outil par dépôt/projet; N_p=projets à intégrer; J_p=jours d’intégration; TJM=tarif journalier; I=infrastructure",
        "missing_inputs": "périmètre réel issu de l’inventaire 100 jours ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 25 — Revue IA du code source critique",
      "decision": "Analyser en continu les dépôts autorisés avec IA dans un environnement sécurisé ; résultats confirmés par experts.",
      "why": "L’IA peut trouver des défauts subtils, mais les faux positifs et impacts de patch exigent validation humaine.",
      "pilot": "ANSSI / INESIA / DNUM",
      "vehicle": "Programme sécurisé",
      "deadline": "J+100 pilote",
      "kpi": "100 % des applications Tier 0 avec pipeline d’analyse ; taux de validation mesuré.",
      "refs": "[M01][M03][O17]",
      "costing": {
        "cost_family": "devsecops",
        "cost_family_label": "DevSecOps / vulnérabilités / chaîne logicielle",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "nombre de dépôts de code critique",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-DEVSECOPS",
        "formula": "C = N_r × L_r + N_p × J_p × TJM + I",
        "symbols": "N_r=dépôts/projets; L_r=coût outil par dépôt/projet; N_p=projets à intégrer; J_p=jours d’intégration; TJM=tarif journalier; I=infrastructure",
        "missing_inputs": "nombre de dépôts de code critique ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 26 — SBOM obligatoire",
      "decision": "Exiger une nomenclature logicielle — SBOM, Software Bill of Materials — pour savoir quelles bibliothèques composent chaque application.",
      "why": "Une vulnérabilité dans une dépendance doit permettre d’identifier immédiatement tous les systèmes exposés.",
      "pilot": "DINUM / acheteurs",
      "vehicle": "Clauses marché",
      "deadline": "12 mois",
      "kpi": "≥ 95 % des logiciels critiques avec SBOM à jour.",
      "refs": "[O06]",
      "costing": {
        "cost_family": "devsecops",
        "cost_family_label": "DevSecOps / vulnérabilités / chaîne logicielle",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "nombre de projets nécessitant un SBOM",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-DEVSECOPS",
        "formula": "C = N_r × L_r + N_p × J_p × TJM + I",
        "symbols": "N_r=dépôts/projets; L_r=coût outil par dépôt/projet; N_p=projets à intégrer; J_p=jours d’intégration; TJM=tarif journalier; I=infrastructure",
        "missing_inputs": "nombre de projets nécessitant un SBOM ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 27 — Signature des artefacts et builds reproductibles",
      "decision": "Signer versions, paquets et déploiements ; sécuriser les chaînes CI/CD et secrets de compilation.",
      "why": "Protège contre la compromission de la chaîne de fourniture logicielle.",
      "pilot": "DINUM / DNUM",
      "vehicle": "Standard",
      "deadline": "18 mois",
      "kpi": "100 % des artefacts Tier 0 signés et vérifiés avant déploiement.",
      "refs": "[O06]",
      "costing": {
        "cost_family": "devsecops",
        "cost_family_label": "DevSecOps / vulnérabilités / chaîne logicielle",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "périmètre réel issu de l’inventaire 100 jours",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-DEVSECOPS",
        "formula": "C = N_r × L_r + N_p × J_p × TJM + I",
        "symbols": "N_r=dépôts/projets; L_r=coût outil par dépôt/projet; N_p=projets à intégrer; J_p=jours d’intégration; TJM=tarif journalier; I=infrastructure",
        "missing_inputs": "périmètre réel issu de l’inventaire 100 jours ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 28 — Coffre-fort national des secrets",
      "decision": "Centraliser rotation et délivrance temporaire des secrets techniques ; interdire les mots de passe et clefs en dur dans les dépôts.",
      "why": "Un secret dormant dans du code ou une configuration peut ouvrir plusieurs environnements.",
      "pilot": "DINUM / ANSSI",
      "vehicle": "Service mutualisé",
      "deadline": "12 mois",
      "kpi": "0 secret détecté en clair dans les dépôts Tier 0 après remédiation.",
      "refs": "[O15]",
      "costing": {
        "cost_family": "devsecops",
        "cost_family_label": "DevSecOps / vulnérabilités / chaîne logicielle",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "périmètre réel issu de l’inventaire 100 jours",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-DEVSECOPS",
        "formula": "C = N_r × L_r + N_p × J_p × TJM + I",
        "symbols": "N_r=dépôts/projets; L_r=coût outil par dépôt/projet; N_p=projets à intégrer; J_p=jours d’intégration; TJM=tarif journalier; I=infrastructure",
        "missing_inputs": "périmètre réel issu de l’inventaire 100 jours ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 29 — Réduire drastiquement les interconnexions implicites",
      "decision": "Documenter et filtrer chaque flux entre zones ; principe « deny by default » pour les nouveaux chemins sensibles.",
      "why": "Une compromission locale ne doit pas devenir une compromission interministérielle.",
      "pilot": "ANSSI / DNUM",
      "vehicle": "Architecture",
      "deadline": "24 mois",
      "kpi": "100 % des flux Tier 0 justifiés et filtrés.",
      "refs": "[O06]",
      "costing": {
        "cost_family": "data",
        "cost_family_label": "Données / API / segmentation",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "périmètre réel issu de l’inventaire 100 jours",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-DATA",
        "formula": "C = N_s × J_s × TJM + L + T",
        "symbols": "N_s=systèmes concernés; J_s=jours par système; TJM=tarif journalier; L=licences/outils; T=transition/migration",
        "missing_inputs": "périmètre réel issu de l’inventaire 100 jours ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 30 — Microsegmentation des environnements critiques",
      "decision": "Isoler applications, bases, administration et sauvegardes selon l’identité et la finalité.",
      "why": "Réduit les déplacements latéraux et l’impact d’une identité compromise.",
      "pilot": "DNUM",
      "vehicle": "Programme technique",
      "deadline": "24 mois",
      "kpi": "Scénarios de rebond red-team bloqués selon objectifs.",
      "refs": "[O06]",
      "costing": {
        "cost_family": "data",
        "cost_family_label": "Données / API / segmentation",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "périmètre réel issu de l’inventaire 100 jours",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-DATA",
        "formula": "C = N_s × J_s × TJM + L + T",
        "symbols": "N_s=systèmes concernés; J_s=jours par système; TJM=tarif journalier; L=licences/outils; T=transition/migration",
        "missing_inputs": "périmètre réel issu de l’inventaire 100 jours ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 31 — Sauvegardes immuables et hors ligne",
      "decision": "Maintenir plusieurs copies dont au moins une non modifiable et une hors ligne ou fortement isolée.",
      "why": "La disponibilité et la reconstruction font partie de la sécurité nationale.",
      "pilot": "DNUM / métiers",
      "vehicle": "Référentiel",
      "deadline": "J+100 pour Tier 0",
      "kpi": "100 % des systèmes critiques avec copie immuable et politique de restauration.",
      "refs": "[O06]",
      "costing": {
        "cost_family": "resilience",
        "cost_family_label": "Sauvegarde / continuité / exercices",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "volume de sauvegardes critiques",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-RESILIENCE",
        "formula": "C = S × P_s + N_s × J_t × TJM + I",
        "symbols": "S=volume de sauvegarde; P_s=coût de stockage sécurisé; N_s=systèmes; J_t=jours de test/restauration; TJM=tarif journalier; I=infrastructure dédiée",
        "missing_inputs": "volume de sauvegardes critiques ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 32 — Restaurations chronométrées trimestrielles",
      "decision": "Ne pas valider une sauvegarde sur la seule existence des fichiers ; restaurer réellement un environnement représentatif et mesurer le temps.",
      "why": "Une sauvegarde jamais restaurée est une hypothèse, pas une capacité.",
      "pilot": "DNUM / métiers",
      "vehicle": "Instruction",
      "deadline": "Trimestriel",
      "kpi": "100 % des Tier 0 testés chaque trimestre ; RTO documenté.",
      "refs": "[O06]",
      "costing": {
        "cost_family": "resilience",
        "cost_family_label": "Sauvegarde / continuité / exercices",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "nombre de systèmes critiques à restaurer",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-RESILIENCE",
        "formula": "C = S × P_s + N_s × J_t × TJM + I",
        "symbols": "S=volume de sauvegarde; P_s=coût de stockage sécurisé; N_s=systèmes; J_t=jours de test/restauration; TJM=tarif journalier; I=infrastructure dédiée",
        "missing_inputs": "nombre de systèmes critiques à restaurer ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 33 — Mode dégradé pour chaque service vital",
      "decision": "Définir comment continuer sans cloud principal, sans fournisseur majeur ou sans réseau interministériel.",
      "why": "La souveraineté signifie pouvoir continuer lorsque le fournisseur devient indisponible.",
      "pilot": "SGDSN / ministères",
      "vehicle": "Plan de continuité",
      "deadline": "12 mois",
      "kpi": "100 % des fonctions vitales avec scénario de rupture testé.",
      "refs": "[O05][O06]",
      "costing": {
        "cost_family": "resilience",
        "cost_family_label": "Sauvegarde / continuité / exercices",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "périmètre réel issu de l’inventaire 100 jours",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-RESILIENCE",
        "formula": "C = S × P_s + N_s × J_t × TJM + I",
        "symbols": "S=volume de sauvegarde; P_s=coût de stockage sécurisé; N_s=systèmes; J_t=jours de test/restauration; TJM=tarif journalier; I=infrastructure dédiée",
        "missing_inputs": "périmètre réel issu de l’inventaire 100 jours ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 34 — Exercice annuel « France hors ligne »",
      "decision": "Simuler attaque massive + indisponibilité cloud + perte d’un fournisseur + crise informationnelle.",
      "why": "Les plans non testés échouent souvent dans la première heure réelle.",
      "pilot": "SGDSN",
      "vehicle": "Exercice national",
      "deadline": "Annuel",
      "kpi": "Écart entre objectifs RTO et résultats réels publié de manière agrégée.",
      "refs": "[O06]",
      "costing": {
        "cost_family": "resilience",
        "cost_family_label": "Sauvegarde / continuité / exercices",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "périmètre réel issu de l’inventaire 100 jours",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-RESILIENCE",
        "formula": "C = S × P_s + N_s × J_t × TJM + I",
        "symbols": "S=volume de sauvegarde; P_s=coût de stockage sécurisé; N_s=systèmes; J_t=jours de test/restauration; TJM=tarif journalier; I=infrastructure dédiée",
        "missing_inputs": "périmètre réel issu de l’inventaire 100 jours ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 35 — Marchés publics : sécurité en critère éliminatoire",
      "decision": "Pour les SI sensibles, imposer un seuil minimal de sécurité et de souveraineté avant toute comparaison de prix.",
      "why": "Une offre moins chère mais non maîtrisable crée une dette de risque payée plus tard.",
      "pilot": "DAE / DINUM / ANSSI",
      "vehicle": "Réforme réglementaire + cahiers types",
      "deadline": "6 mois",
      "kpi": "100 % des marchés Tier 0/1 passent la porte de conformité cyber avant notation financière.",
      "refs": "[O04][O06]",
      "costing": {
        "cost_family": "governance",
        "cost_family_label": "Gouvernance / doctrine / droit",
        "cost_status": "cout_incremental_non_consolidable_sans_ETP_ou_prestation_additionnelle",
        "quantity_to_measure": "périmètre réel issu de l’inventaire 100 jours",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-GOVERNANCE",
        "formula": "C = E × C_E + P",
        "symbols": "E=ETP supplémentaires réellement nécessaires; C_E=coût employeur annuel d’un ETP; P=prestations externes documentées",
        "missing_inputs": "périmètre réel issu de l’inventaire 100 jours ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 36 — Clause cyber souveraine obligatoire",
      "decision": "Imposer sous-traitants déclarés, droit d’audit, notification rapide, logs, réversibilité, effacement certifié, gestion des privilèges, coopération ANSSI.",
      "why": "Le risque fournisseur doit devenir contractuellement contrôlable.",
      "pilot": "DAE / juristes",
      "vehicle": "Clauses types",
      "deadline": "6 mois",
      "kpi": "≥ 95 % des nouveaux contrats sensibles incluent le socle.",
      "refs": "[O01][O02]",
      "costing": {
        "cost_family": "governance",
        "cost_family_label": "Gouvernance / doctrine / droit",
        "cost_status": "cout_incremental_non_consolidable_sans_ETP_ou_prestation_additionnelle",
        "quantity_to_measure": "périmètre réel issu de l’inventaire 100 jours",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-GOVERNANCE",
        "formula": "C = E × C_E + P",
        "symbols": "E=ETP supplémentaires réellement nécessaires; C_E=coût employeur annuel d’un ETP; P=prestations externes documentées",
        "missing_inputs": "périmètre réel issu de l’inventaire 100 jours ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 37 — Interdire l’auto-audit des intégrateurs",
      "decision": "L’entreprise qui construit ou opère un SI critique ne peut être le seul acteur attestant sa sécurité.",
      "why": "Le conflit d’intérêts affaiblit la valeur de l’audit.",
      "pilot": "DAE / ANSSI",
      "vehicle": "Règle de marché",
      "deadline": "Immédiat",
      "kpi": "100 % des audits d’acceptation Tier 0 réalisés par un tiers indépendant.",
      "refs": "[O15][O16]",
      "costing": {
        "cost_family": "procurement",
        "cost_family_label": "Prestataires / audits / réponse à incident",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "périmètre réel issu de l’inventaire 100 jours",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-PROCUREMENT",
        "formula": "C = N_a × J_a × TJM + R",
        "symbols": "N_a=audits/interventions; J_a=jours moyens; TJM=tarif journalier documenté; R=réserve/astreinte contractuelle",
        "missing_inputs": "périmètre réel issu de l’inventaire 100 jours ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 38 — PASSI obligatoire avant mise en production Tier 0",
      "decision": "Rendre un audit qualifié externe obligatoire avant ouverture d’un SI à impact souverain ou après changement majeur.",
      "why": "La France dispose déjà du référentiel et de prestataires qualifiés.",
      "pilot": "ANSSI / DNUM",
      "vehicle": "Décret / référentiel",
      "deadline": "12 mois",
      "kpi": "100 % des mises en production Tier 0 accompagnées d’un rapport PASSI et plan de correction.",
      "refs": "[O15][O16]",
      "costing": {
        "cost_family": "procurement",
        "cost_family_label": "Prestataires / audits / réponse à incident",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "nombre de systèmes Tier 0 à auditer",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-PROCUREMENT",
        "formula": "C = N_a × J_a × TJM + R",
        "symbols": "N_a=audits/interventions; J_a=jours moyens; TJM=tarif journalier documenté; R=réserve/astreinte contractuelle",
        "missing_inputs": "nombre de systèmes Tier 0 à auditer ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 39 — Retest indépendant des corrections critiques",
      "decision": "Aucune faille critique n’est considérée fermée sur déclaration du développeur ; une seconde équipe vérifie.",
      "why": "Évite les correctifs incomplets ou contournables.",
      "pilot": "ANSSI / PASSI",
      "vehicle": "Procédure",
      "deadline": "Immédiat",
      "kpi": "100 % des findings critiques avec preuve de retest.",
      "refs": "[O15]",
      "costing": {
        "cost_family": "procurement",
        "cost_family_label": "Prestataires / audits / réponse à incident",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "nombre de retests critiques",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-PROCUREMENT",
        "formula": "C = N_a × J_a × TJM + R",
        "symbols": "N_a=audits/interventions; J_a=jours moyens; TJM=tarif journalier documenté; R=réserve/astreinte contractuelle",
        "missing_inputs": "nombre de retests critiques ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 40 — Contrats PRIS pré-négociés",
      "decision": "Chaque ministère et opérateur critique dispose d’un contrat de réponse à incident mobilisable sans marché d’urgence improvisé.",
      "why": "Les heures administratives perdues pendant une crise sont irréversibles.",
      "pilot": "SGDSN / DAE",
      "vehicle": "Accords-cadres",
      "deadline": "6 mois",
      "kpi": "Temps de mobilisation d’une équipe PRIS < 2 h pour Tier 0.",
      "refs": "[O15][O16]",
      "costing": {
        "cost_family": "procurement",
        "cost_family_label": "Prestataires / audits / réponse à incident",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "nombre de contrats PRIS et niveau d’astreinte",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-PROCUREMENT",
        "formula": "C = N_a × J_a × TJM + R",
        "symbols": "N_a=audits/interventions; J_a=jours moyens; TJM=tarif journalier documenté; R=réserve/astreinte contractuelle",
        "missing_inputs": "nombre de contrats PRIS et niveau d’astreinte ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 41 — SOC 24/7 mutualisé pour les petites entités publiques",
      "decision": "Mutualiser supervision et réponse pour collectivités, établissements scolaires, hôpitaux ou opérateurs sans taille critique.",
      "why": "Toutes les structures ne peuvent recruter un SOC complet ; l’absence de surveillance reste dangereuse.",
      "pilot": "ANSSI / régions / ministères",
      "vehicle": "Programme national",
      "deadline": "24 mois",
      "kpi": "Part des entités prioritaires couvertes 24/7 > 80 %.",
      "refs": "[I01][O03]",
      "costing": {
        "cost_family": "logging",
        "cost_family_label": "Journaux / SOC / détection / DLP",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "nombre d’entités raccordées au SOC mutualisé + volume de logs",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-LOGGING",
        "formula": "C = V_j × 365 × P_i + S_r × P_s + E × C_E + J_i × TJM",
        "symbols": "V_j=volume quotidien de journaux; P_i=coût d’ingestion; S_r=volume conservé; P_s=coût de stockage; E=ETP; C_E=coût employeur; J_i=jours d’intégration; TJM=tarif journalier",
        "missing_inputs": "nombre d’entités raccordées au SOC mutualisé + volume de logs ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 42 — Centre national de renseignement de fuites",
      "decision": "Surveiller légalement forums, marchés, Telegram/Discord, dépôts et réutilisations de données ; diffuser des alertes aux victimes.",
      "why": "La CNIL recommande la recherche de fuite sur Internet dans le respect du droit.",
      "pilot": "ANSSI / OFAC / services compétents",
      "vehicle": "Organisation interservices",
      "deadline": "J+100",
      "kpi": "Délai revendication crédible→notification victime < 1 h pour périmètre prioritaire.",
      "refs": "[O02][P05][P06]",
      "costing": {
        "cost_family": "logging",
        "cost_family_label": "Journaux / SOC / détection / DLP",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "périmètre réel issu de l’inventaire 100 jours",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-LOGGING",
        "formula": "C = V_j × 365 × P_i + S_r × P_s + E × C_E + J_i × TJM",
        "symbols": "V_j=volume quotidien de journaux; P_i=coût d’ingestion; S_r=volume conservé; P_s=coût de stockage; E=ETP; C_E=coût employeur; J_i=jours d’intégration; TJM=tarif journalier",
        "missing_inputs": "périmètre réel issu de l’inventaire 100 jours ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 43 — Conserver l’historique des pseudonymes et revendications",
      "decision": "Archiver légalement les indicateurs publics afin de relier les alias, récurrences et cibles dans le temps.",
      "why": "Le renseignement de menace gagne en valeur avec la mémoire historique.",
      "pilot": "Services compétents",
      "vehicle": "Doctrine / outils",
      "deadline": "Continu",
      "kpi": "Taux de corrélation et d’attribution analytique mesuré, sans publication de données personnelles.",
      "refs": "[P05]",
      "costing": {
        "cost_family": "logging",
        "cost_family_label": "Journaux / SOC / détection / DLP",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "périmètre réel issu de l’inventaire 100 jours",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-LOGGING",
        "formula": "C = V_j × 365 × P_i + S_r × P_s + E × C_E + J_i × TJM",
        "symbols": "V_j=volume quotidien de journaux; P_i=coût d’ingestion; S_r=volume conservé; P_s=coût de stockage; E=ETP; C_E=coût employeur; J_i=jours d’intégration; TJM=tarif journalier",
        "missing_inputs": "périmètre réel issu de l’inventaire 100 jours ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 44 — Canal national de divulgation responsable",
      "decision": "Créer un portail unique pour chercheurs de bonne foi : périmètre, règles, chiffrement, délai de réponse et protection juridique adaptée.",
      "why": "Réduit le risque que des failles restent sans interlocuteur ou soient publiées faute de réponse.",
      "pilot": "ANSSI / DINUM / Justice",
      "vehicle": "Loi + politique de divulgation",
      "deadline": "12 mois",
      "kpi": "Accusé réception < 24 h ; triage initial < 72 h.",
      "refs": "[M04]",
      "costing": {
        "cost_family": "governance",
        "cost_family_label": "Gouvernance / doctrine / droit",
        "cost_status": "cout_incremental_non_consolidable_sans_ETP_ou_prestation_additionnelle",
        "quantity_to_measure": "périmètre réel issu de l’inventaire 100 jours",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-GOVERNANCE",
        "formula": "C = E × C_E + P",
        "symbols": "E=ETP supplémentaires réellement nécessaires; C_E=coût employeur annuel d’un ETP; P=prestations externes documentées",
        "missing_inputs": "périmètre réel issu de l’inventaire 100 jours ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 45 — Bug bounty ciblé sur services publics exposés",
      "decision": "Après audit initial, ouvrir des programmes de récompense sur périmètres maîtrisés, avec règles strictes.",
      "why": "Complète l’audit par une diversité de regards sans exposer les systèmes non préparés.",
      "pilot": "DINUM / ANSSI",
      "vehicle": "Marchés / plateforme",
      "deadline": "12 mois",
      "kpi": "Nombre de vulnérabilités valides et délai de correction suivis.",
      "refs": "[M04]",
      "costing": {
        "cost_family": "devsecops",
        "cost_family_label": "DevSecOps / vulnérabilités / chaîne logicielle",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "nombre de programmes bug bounty et enveloppe de primes",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-DEVSECOPS",
        "formula": "C = N_r × L_r + N_p × J_p × TJM + I",
        "symbols": "N_r=dépôts/projets; L_r=coût outil par dépôt/projet; N_p=projets à intégrer; J_p=jours d’intégration; TJM=tarif journalier; I=infrastructure",
        "missing_inputs": "nombre de programmes bug bounty et enveloppe de primes ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 46 — INESIA : laboratoire cyber des modèles frontières",
      "decision": "Renforcer l’INESIA avec un cyber-range sécurisé pour évaluer capacités offensives et défensives des modèles avancés.",
      "why": "L’Institut existe déjà ; il faut étendre sa capacité d’évaluation à la réalité de la menace cyber.",
      "pilot": "SGDSN / INESIA / ANSSI",
      "vehicle": "Programmation budgétaire",
      "deadline": "12 mois",
      "kpi": "Benchmark national opérationnel et campagnes trimestrielles.",
      "refs": "[O17][M01]",
      "costing": {
        "cost_family": "ai",
        "cost_family_label": "IA cyber / modèles frontières",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "capacité de calcul + équipe INESIA dédiée",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-AI",
        "formula": "C = G × P_g + E × C_E + D + S",
        "symbols": "G=capacité de calcul consommée; P_g=coût unitaire de calcul; E=ETP; C_E=coût employeur; D=données/évaluation; S=sécurisation de l’environnement",
        "missing_inputs": "capacité de calcul + équipe INESIA dédiée ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 47 — Benchmark classifié français/européen",
      "decision": "Créer un banc d’essai protégé évaluant autonomie, découverte de vulnérabilités, chaîne d’actions et capacité de correction des IA.",
      "why": "Les États-Unis ont explicitement prévu un benchmark classifié ; la France ne doit pas dépendre de leur seule mesure.",
      "pilot": "SGDSN / INESIA / partenaires UE",
      "vehicle": "Accord intergouvernemental",
      "deadline": "18 mois",
      "kpi": "Benchmark versionné, résultats accessibles aux autorités habilitées.",
      "refs": "[O20][O17]",
      "costing": {
        "cost_family": "ai",
        "cost_family_label": "IA cyber / modèles frontières",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "nombre de benchmarks et capacité de calcul sécurisée",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-AI",
        "formula": "C = G × P_g + E × C_E + D + S",
        "symbols": "G=capacité de calcul consommée; P_g=coût unitaire de calcul; E=ETP; C_E=coût employeur; D=données/évaluation; S=sécurisation de l’environnement",
        "missing_inputs": "nombre de benchmarks et capacité de calcul sécurisée ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 48 — Accès anticipé défensif aux modèles frontières",
      "decision": "Négocier avec les fournisseurs un accès précoce ou une évaluation sous contrôle pour savoir ce qu’un adversaire pourra bientôt automatiser.",
      "why": "Réduire le décalage entre capacités du marché et préparation défensive.",
      "pilot": "Gouvernement / UE",
      "vehicle": "Accords / réglementation applicable",
      "deadline": "18 mois",
      "kpi": "Délai de pré-évaluation avant large diffusion pour modèles couverts.",
      "refs": "[O20]",
      "costing": {
        "cost_family": "ai",
        "cost_family_label": "IA cyber / modèles frontières",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "nombre de modèles évalués / conditions d’accès",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-AI",
        "formula": "C = G × P_g + E × C_E + D + S",
        "symbols": "G=capacité de calcul consommée; P_g=coût unitaire de calcul; E=ETP; C_E=coût employeur; D=données/évaluation; S=sécurisation de l’environnement",
        "missing_inputs": "nombre de modèles évalués / conditions d’accès ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 49 — Modèle cyber européen spécialisé",
      "decision": "Financer une capacité européenne focalisée sur analyse de code, détection, correction et sécurité d’infrastructure, sans chercher nécessairement à battre tous les modèles généralistes.",
      "why": "La dépendance à un fournisseur extra-européen unique est un risque stratégique.",
      "pilot": "France + UE + industriels",
      "vehicle": "Programme européen",
      "deadline": "3–5 ans",
      "kpi": "Capacité évaluée annuellement sur benchmark européen ; disponibilité souveraine.",
      "refs": "[I02][O06]",
      "costing": {
        "cost_family": "ai",
        "cost_family_label": "IA cyber / modèles frontières",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "capacité calcul + équipe R&D",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-AI",
        "formula": "C = G × P_g + E × C_E + D + S",
        "symbols": "G=capacité de calcul consommée; P_g=coût unitaire de calcul; E=ETP; C_E=coût employeur; D=données/évaluation; S=sécurisation de l’environnement",
        "missing_inputs": "capacité calcul + équipe R&D ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 50 — Interdire les secrets de l’État dans les IA grand public non autorisées",
      "decision": "Classifier les usages : données publiques, internes, sensibles, souveraines ; les niveaux élevés ne quittent pas des environnements approuvés.",
      "why": "Un prompt peut constituer une sortie de données.",
      "pilot": "SGDSN / DINUM",
      "vehicle": "Instruction",
      "deadline": "Immédiat",
      "kpi": "0 usage non autorisé détecté sur périmètres sensibles ; solutions approuvées disponibles.",
      "refs": "[O06][O17]",
      "costing": {
        "cost_family": "governance",
        "cost_family_label": "Gouvernance / doctrine / droit",
        "cost_status": "cout_incremental_non_consolidable_sans_ETP_ou_prestation_additionnelle",
        "quantity_to_measure": "périmètre réel issu de l’inventaire 100 jours",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-GOVERNANCE",
        "formula": "C = E × C_E + P",
        "symbols": "E=ETP supplémentaires réellement nécessaires; C_E=coût employeur annuel d’un ETP; P=prestations externes documentées",
        "missing_inputs": "périmètre réel issu de l’inventaire 100 jours ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 51 — Identité propre pour chaque agent IA",
      "decision": "Chaque agent logiciel dispose d’un compte distinct, de droits minimaux, de jetons temporaires et de journaux d’action.",
      "why": "Un agent IA ne doit jamais hériter implicitement des droits illimités d’un humain.",
      "pilot": "ANSSI / DINUM",
      "vehicle": "Référentiel IA",
      "deadline": "12 mois",
      "kpi": "100 % des agents IA de production sensibles avec identité et permissions bornées.",
      "refs": "[O17]",
      "costing": {
        "cost_family": "identity",
        "cost_family_label": "Identités / PAM / MFA",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "périmètre réel issu de l’inventaire 100 jours",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-IDENTITY",
        "formula": "C = N_u × L_u + N_h × P_h + J_i × TJM",
        "symbols": "N_u=utilisateurs/comptes; L_u=coût annuel par utilisateur; N_h=clefs ou matériels; P_h=prix unitaire; J_i=jours d’intégration; TJM=tarif journalier moyen",
        "missing_inputs": "périmètre réel issu de l’inventaire 100 jours ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 52 — Validation humaine des actions irréversibles des IA",
      "decision": "Suppression massive, modification de droits, déploiement ou accès à certaines données requièrent un humain ou un contrôle à deux clefs.",
      "why": "L’autonomie défensive doit rester bornée par l’architecture.",
      "pilot": "ANSSI / INESIA",
      "vehicle": "Référentiel",
      "deadline": "12 mois",
      "kpi": "100 % des classes d’actions irréversibles couvertes par politique explicite.",
      "refs": "[O17]",
      "costing": {
        "cost_family": "governance",
        "cost_family_label": "Gouvernance / doctrine / droit",
        "cost_status": "cout_incremental_non_consolidable_sans_ETP_ou_prestation_additionnelle",
        "quantity_to_measure": "périmètre réel issu de l’inventaire 100 jours",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-GOVERNANCE",
        "formula": "C = E × C_E + P",
        "symbols": "E=ETP supplémentaires réellement nécessaires; C_E=coût employeur annuel d’un ETP; P=prestations externes documentées",
        "missing_inputs": "périmètre réel issu de l’inventaire 100 jours ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 53 — Plan de sortie des dépendances critiques américaines",
      "decision": "Identifier les produits sans alternative et construire pour chacun un mode dégradé, une réversibilité ou un remplacement réaliste.",
      "why": "Le Gouvernement reconnaît la nécessité de scénarios de rupture d’accès à des outils sous licence étrangère.",
      "pilot": "DINUM / SGDSN",
      "vehicle": "Plan interministériel",
      "deadline": "24 mois",
      "kpi": "100 % des dépendances Tier 0 avec scénario de rupture documenté et testé.",
      "refs": "[O05][O06]",
      "costing": {
        "cost_family": "sovereignty",
        "cost_family_label": "Souveraineté / cloud / PQC / dépendances",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "nombre de dépendances critiques à migrer",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-SOVEREIGNTY",
        "formula": "C = N_m × C_m + T + D - B_l",
        "symbols": "N_m=migrations; C_m=coût moyen documenté par migration; T=double exploitation/transition; D=développements; B_l=budgets déjà affectés à la même migration",
        "missing_inputs": "nombre de dépendances critiques à migrer ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 54 — SecNumCloud / contrôle juridique selon criticité",
      "decision": "Pour les données sensibles, imposer une qualification et une maîtrise juridique proportionnées au risque, sans dogme uniforme pour toutes les données.",
      "why": "Souveraineté = capacité de contrôle et de continuité, pas autarcie technique.",
      "pilot": "ANSSI / DINUM",
      "vehicle": "Doctrine cloud",
      "deadline": "12 mois",
      "kpi": "100 % des données classées avec hébergement conforme au niveau défini.",
      "refs": "[O04][O06]",
      "costing": {
        "cost_family": "sovereignty",
        "cost_family_label": "Souveraineté / cloud / PQC / dépendances",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "nombre de services/migrations SecNumCloud",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-SOVEREIGNTY",
        "formula": "C = N_m × C_m + T + D - B_l",
        "symbols": "N_m=migrations; C_m=coût moyen documenté par migration; T=double exploitation/transition; D=développements; B_l=budgets déjà affectés à la même migration",
        "missing_inputs": "nombre de services/migrations SecNumCloud ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 55 — Inventaire cryptographique post-quantique",
      "decision": "Recenser algorithmes, certificats, clefs, durées de confidentialité et dépendances avant migration.",
      "why": "Les données capturées aujourd’hui peuvent être conservées pour déchiffrement futur.",
      "pilot": "ANSSI / DNUM",
      "vehicle": "Programme PQC",
      "deadline": "18 mois",
      "kpi": "100 % des systèmes Tier 0 avec inventaire crypto et trajectoire.",
      "refs": "[O05][O06]",
      "costing": {
        "cost_family": "sovereignty",
        "cost_family_label": "Souveraineté / cloud / PQC / dépendances",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "nombre de systèmes et algorithmes cryptographiques",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-SOVEREIGNTY",
        "formula": "C = N_m × C_m + T + D - B_l",
        "symbols": "N_m=migrations; C_m=coût moyen documenté par migration; T=double exploitation/transition; D=développements; B_l=budgets déjà affectés à la même migration",
        "missing_inputs": "nombre de systèmes et algorithmes cryptographiques ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 56 — Réserve cyber renforcée",
      "decision": "Contractualiser à l’avance des experts du privé et de la recherche mobilisables pendant une crise majeure.",
      "why": "Les compétences rares ne peuvent être recrutées le jour de l’incident.",
      "pilot": "Armées / ANSSI / ministères",
      "vehicle": "Loi / conventions",
      "deadline": "24 mois",
      "kpi": "Capacité mobilisable testée annuellement.",
      "refs": "[O06]",
      "costing": {
        "cost_family": "workforce",
        "cost_family_label": "Compétences / réserve / carrière",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "nombre de réservistes contractualisés et jours mobilisables",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-WORKFORCE",
        "formula": "C = E × C_E + N_f × H × C_h + P",
        "symbols": "E=ETP supplémentaires; C_E=coût employeur; N_f=personnes formées; H=heures; C_h=coût complet horaire; P=plateforme/prestations",
        "missing_inputs": "nombre de réservistes contractualisés et jours mobilisables ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 57 — Carrière expert cyber dans l’État",
      "decision": "Créer une filière où un expert peut progresser sans devenir manager ; rémunération ajustée aux compétences rares.",
      "why": "La rétention est aussi importante que le recrutement.",
      "pilot": "DGAFP / ministères",
      "vehicle": "Réforme RH",
      "deadline": "24 mois",
      "kpi": "Taux de vacance et turnover des postes critiques en baisse de moitié.",
      "refs": "[I01]",
      "costing": {
        "cost_family": "workforce",
        "cost_family_label": "Compétences / réserve / carrière",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "nombre de postes experts à revaloriser",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-WORKFORCE",
        "formula": "C = E × C_E + N_f × H × C_h + P",
        "symbols": "E=ETP supplémentaires; C_E=coût employeur; N_f=personnes formées; H=heures; C_h=coût complet horaire; P=plateforme/prestations",
        "missing_inputs": "nombre de postes experts à revaloriser ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 58 — Transposer et appliquer NIS2 sans retard",
      "decision": "Achever le cadre juridique et fournir un calendrier opérationnel aux milliers d’entités concernées.",
      "why": "NIS2 structure gouvernance, gestion du risque et notification ; le retard fragilise l’harmonisation.",
      "pilot": "Gouvernement / Parlement / ANSSI",
      "vehicle": "Loi",
      "deadline": "100 jours",
      "kpi": "Texte adopté, décrets publiés, portail d’accompagnement opérationnel.",
      "refs": "[O19]",
      "costing": {
        "cost_family": "governance",
        "cost_family_label": "Gouvernance / doctrine / droit",
        "cost_status": "cout_incremental_non_consolidable_sans_ETP_ou_prestation_additionnelle",
        "quantity_to_measure": "périmètre réel issu de l’inventaire 100 jours",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-GOVERNANCE",
        "formula": "C = E × C_E + P",
        "symbols": "E=ETP supplémentaires réellement nécessaires; C_E=coût employeur annuel d’un ETP; P=prestations externes documentées",
        "missing_inputs": "périmètre réel issu de l’inventaire 100 jours ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 59 — Responsabilité annuelle des dirigeants publics",
      "decision": "Chaque dirigeant d’entité critique signe ses risques cyber non traités et dispose d’objectifs chiffrés.",
      "why": "France Travail montre qu’identifier une mesure sans l’appliquer ne suffit pas.",
      "pilot": "Premier ministre / ministres",
      "vehicle": "Décret / lettres de mission",
      "deadline": "12 mois",
      "kpi": "100 % des dirigeants Tier 0/1 avec objectifs et risques résiduels formellement acceptés.",
      "refs": "[O13]",
      "costing": {
        "cost_family": "governance",
        "cost_family_label": "Gouvernance / doctrine / droit",
        "cost_status": "cout_incremental_non_consolidable_sans_ETP_ou_prestation_additionnelle",
        "quantity_to_measure": "périmètre réel issu de l’inventaire 100 jours",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-GOVERNANCE",
        "formula": "C = E × C_E + P",
        "symbols": "E=ETP supplémentaires réellement nécessaires; C_E=coût employeur annuel d’un ETP; P=prestations externes documentées",
        "missing_inputs": "périmètre réel issu de l’inventaire 100 jours ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 60 — Tableau de bord public trimestriel agrégé",
      "decision": "Publier patching, MFA, restauration, incidents, systèmes obsolètes et délais de confinement sans exposer de détail exploitable.",
      "why": "La transparence force l’exécution tout en préservant les informations sensibles.",
      "pilot": "SGDSN / ANSSI",
      "vehicle": "Publication gouvernementale",
      "deadline": "Trimestriel",
      "kpi": "Publication à date fixe et séries historiques accessibles.",
      "refs": "[O06]",
      "costing": {
        "cost_family": "oversight",
        "cost_family_label": "Contrôle / transparence / revue",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "périmètre réel issu de l’inventaire 100 jours",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-OVERSIGHT",
        "formula": "C = E × C_E + D + P",
        "symbols": "E=ETP supplémentaires; C_E=coût employeur; D=développement de tableau de bord; P=prestations/audits additionnels",
        "missing_inputs": "périmètre réel issu de l’inventaire 100 jours ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 61 — Programme de destruction de la dette applicative",
      "decision": "Classer chaque application ancienne : conserver, rénover, isoler, remplacer, supprimer ; date et budget obligatoires.",
      "why": "Les systèmes anciens augmentent surface, dépendances et difficulté de patch.",
      "pilot": "DINUM / ministères",
      "vehicle": "Programmation pluriannuelle",
      "deadline": "4 ans",
      "kpi": "Baisse annuelle du nombre d’applications sans support et des exceptions de sécurité.",
      "refs": "[O04][O05]",
      "costing": {
        "cost_family": "sovereignty",
        "cost_family_label": "Souveraineté / cloud / PQC / dépendances",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "nombre d’applications obsolètes et coût de migration par application",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-SOVEREIGNTY",
        "formula": "C = N_m × C_m + T + D - B_l",
        "symbols": "N_m=migrations; C_m=coût moyen documenté par migration; T=double exploitation/transition; D=développements; B_l=budgets déjà affectés à la même migration",
        "missing_inputs": "nombre d’applications obsolètes et coût de migration par application ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 62 — Audit annuel PASSI des fonctions les plus critiques",
      "decision": "Après le choc des 100 jours, maintenir un audit externe annuel et après changement majeur.",
      "why": "La sécurité est un état dynamique ; le contrôle ponctuel se périme.",
      "pilot": "ANSSI / ministères",
      "vehicle": "Référentiel",
      "deadline": "Annuel",
      "kpi": "100 % Tier 0 audités dans les douze derniers mois.",
      "refs": "[O15][O16]",
      "costing": {
        "cost_family": "procurement",
        "cost_family_label": "Prestataires / audits / réponse à incident",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "nombre de fonctions critiques auditées",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-PROCUREMENT",
        "formula": "C = N_a × J_a × TJM + R",
        "symbols": "N_a=audits/interventions; J_a=jours moyens; TJM=tarif journalier documenté; R=réserve/astreinte contractuelle",
        "missing_inputs": "nombre de fonctions critiques auditées ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 63 — Red-team semestrielle Tier 0",
      "decision": "Faire tester les chaînes d’attaque de bout en bout sur environnement maîtrisé, avec équipe de défense évaluée.",
      "why": "Un système peut être conforme et néanmoins contournable.",
      "pilot": "ANSSI / PASSI",
      "vehicle": "Programme",
      "deadline": "Semestriel",
      "kpi": "Temps de détection/confinement et chemins de compromission résiduels suivis.",
      "refs": "[O15]",
      "costing": {
        "cost_family": "procurement",
        "cost_family_label": "Prestataires / audits / réponse à incident",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "nombre de red-teams Tier 0",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-PROCUREMENT",
        "formula": "C = N_a × J_a × TJM + R",
        "symbols": "N_a=audits/interventions; J_a=jours moyens; TJM=tarif journalier documenté; R=réserve/astreinte contractuelle",
        "missing_inputs": "nombre de red-teams Tier 0 ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 64 — Protection du patrimoine informationnel stratégique des entreprises",
      "decision": "Créer un régime volontaire/sectoriel permettant d’identifier données industrielles critiques, bénéficier d’appui et imposer des contrôles aux fournisseurs.",
      "why": "La sécurité économique est une composante de la souveraineté, même hors données personnelles.",
      "pilot": "Économie / SGDSN / ANSSI",
      "vehicle": "Loi / dispositif d’aide",
      "deadline": "24 mois",
      "kpi": "Nombre d’entreprises critiques accompagnées ; incidents chaîne fournisseurs mesurés.",
      "refs": "[O06]",
      "costing": {
        "cost_family": "sovereignty",
        "cost_family_label": "Souveraineté / cloud / PQC / dépendances",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "nombre d’entreprises critiques accompagnées",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-SOVEREIGNTY",
        "formula": "C = N_m × C_m + T + D - B_l",
        "symbols": "N_m=migrations; C_m=coût moyen documenté par migration; T=double exploitation/transition; D=développements; B_l=budgets déjà affectés à la même migration",
        "missing_inputs": "nombre d’entreprises critiques accompagnées ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 65 — Contrôle technique cyber des organismes critiques",
      "decision": "Exiger périodiquement preuves de MFA, segmentation, sauvegarde, restauration, logs, fournisseurs, exercices — pas seulement un questionnaire.",
      "why": "La conformité documentaire ne remplace pas la preuve technique.",
      "pilot": "ANSSI / régulateurs",
      "vehicle": "Réglementation sectorielle",
      "deadline": "24 mois",
      "kpi": "Taux de contrôles avec tests techniques et taux de corrections dans les délais.",
      "refs": "[O19]",
      "costing": {
        "cost_family": "procurement",
        "cost_family_label": "Prestataires / audits / réponse à incident",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "nombre d’organismes critiques contrôlés",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-PROCUREMENT",
        "formula": "C = N_a × J_a × TJM + R",
        "symbols": "N_a=audits/interventions; J_a=jours moyens; TJM=tarif journalier documenté; R=réserve/astreinte contractuelle",
        "missing_inputs": "nombre d’organismes critiques contrôlés ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 66 — Boucle nationale « trouver-corriger-vérifier »",
      "decision": "Centraliser la coordination lorsqu’une vulnérabilité touche de nombreux ministères/organismes : identification des utilisateurs, correctif, diffusion sous embargo, retest.",
      "why": "Évite que chaque organisme redécouvre la même vulnérabilité.",
      "pilot": "ANSSI",
      "vehicle": "Organisation nationale",
      "deadline": "12 mois",
      "kpi": "Délai vulnérabilité critique transversale→liste d’organismes affectés < 4 h.",
      "refs": "[O20][M04]",
      "costing": {
        "cost_family": "devsecops",
        "cost_family_label": "DevSecOps / vulnérabilités / chaîne logicielle",
        "cost_status": "fiche_de_calcul_creee_donnees_a_inventorier",
        "quantity_to_measure": "périmètre réel issu de l’inventaire 100 jours",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-DEVSECOPS",
        "formula": "C = N_r × L_r + N_p × J_p × TJM + I",
        "symbols": "N_r=dépôts/projets; L_r=coût outil par dépôt/projet; N_p=projets à intégrer; J_p=jours d’intégration; TJM=tarif journalier; I=infrastructure",
        "missing_inputs": "périmètre réel issu de l’inventaire 100 jours ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    },
    {
      "title": "MESURE 67 — Revue parlementaire annuelle de souveraineté numérique",
      "decision": "Présenter au Parlement un rapport public et une annexe classifiée sur dépendances, incidents systémiques, dette et capacité de reconstruction.",
      "why": "La politique cyber engage des choix budgétaires, industriels et de libertés publiques qui exigent contrôle démocratique.",
      "pilot": "Gouvernement / Parlement",
      "vehicle": "Loi de programmation",
      "deadline": "Annuel",
      "kpi": "Rapport déposé et auditions tenues chaque année.",
      "refs": "[O06]",
      "costing": {
        "cost_family": "governance",
        "cost_family_label": "Gouvernance / doctrine / droit",
        "cost_status": "cout_incremental_non_consolidable_sans_ETP_ou_prestation_additionnelle",
        "quantity_to_measure": "périmètre réel issu de l’inventaire 100 jours",
        "unit": "à définir selon inventaire/marché",
        "unit_cost_low_eur": "",
        "unit_cost_central_eur": "",
        "unit_cost_high_eur": "",
        "unit_cost_source": "non publié tant qu’aucun prix comparable opposable n’est identifié",
        "years": 4,
        "anti_double_count_group": "BN-GOVERNANCE",
        "formula": "C = E × C_E + P",
        "symbols": "E=ETP supplémentaires réellement nécessaires; C_E=coût employeur annuel d’un ETP; P=prestations externes documentées",
        "missing_inputs": "périmètre réel issu de l’inventaire 100 jours ; prix unitaires documentés ; part des budgets existants réellement recouvrante",
        "confidence": "faible avant inventaire"
      }
    }
  ],
  "costing_version": "V20.97",
  "costing_doctrine": "Aucun montant n’est inventé. Toute donnée manquante reste vide et bloque la consolidation nationale."
}