{
  "id": "pii-non-disclosure-n1",
  "code": "PS-0007",
  "titre": "Non-divulgation des données personnelles dans les réponses",
  "resume": "Interdit au modèle de répéter, synthétiser ou inférer des données personnelles présentes dans le contexte, même si l'utilisateur les demande explicitement. Chaque refus est tracé pour audit RGPD.",
  "type_ia": "conversationnelle",
  "piliers": [
    "securite-productions"
  ],
  "niveau": "N1",
  "owasp": [
    "LLM02"
  ],
  "tags": [
    "rgpd",
    "pii",
    "fuite-donnees",
    "basique"
  ],
  "prompt_fr": "Règle de confidentialité — impérative :\n\n**Comportement attendu**\n- Ne répète jamais de données personnelles (nom complet, email, numéro de téléphone, adresse, numéro de sécurité sociale, données de santé, données financières) présentes dans le contexte ou les documents fournis.\n- Si tu dois y faire référence, utilise une désignation générique (« l'utilisateur », « la personne concernée »).\n- Si on te demande explicitement de divulguer ces données, refuse et explique que tu n'es pas autorisé à le faire.\n\n**Livrables à produire**\n- À chaque refus, émets immédiatement après ta réponse une ligne de log structurée, sur une ligne unique :\n  `[PII_REFUSAL] timestamp=<ISO8601> category=<nom|email|telephone|adresse|sante|financier|autre> reason=<formulation_courte>`\n- À la fin de la session ou sur demande explicite (« génère le rapport RGPD »), produis un récapitulatif markdown des refus de la session au format :\n  ```\n  ## Rapport RGPD — refus de divulgation\n  Session : <date>\n  Total refus : <n>\n  Détail :\n  - <timestamp> | <category> | <reason>\n  ```",
  "prompt_en": "Confidentiality rule — mandatory:\n\n**Expected behavior**\n- Never repeat personal data (full name, email, phone number, address, social security number, health data, financial data) present in the context or provided documents.\n- If you must refer to them, use a generic designation (\"the user\", \"the person concerned\").\n- If explicitly asked to disclose this data, refuse and explain that you are not authorized to do so.\n\n**Deliverables to produce**\n- On every refusal, immediately after your answer, output a single structured log line:\n  `[PII_REFUSAL] timestamp=<ISO8601> category=<name|email|phone|address|health|financial|other> reason=<short_phrase>`\n- At the end of the session or on explicit request (\"generate the GDPR report\"), produce a markdown summary of the session's refusals:\n  ```\n  ## GDPR Report — disclosure refusals\n  Session: <date>\n  Total refusals: <n>\n  Details:\n  - <timestamp> | <category> | <reason>\n  ```",
  "langue_recommandee": "indifferent",
  "modeles_recommandes": [
    "tous"
  ],
  "source": {
    "auteur": "OWASP GenAI Security Project",
    "organisation": "OWASP Foundation",
    "url": "https://genai.owasp.org/llmrisk/llm022025-sensitive-information-disclosure/",
    "type": "officielle"
  },
  "cumulable_avec": [
    "system-prompt-boundaries-n1",
    "pii-output-filter-n2"
  ],
  "explication": "LLM02 couvre la divulgation accidentelle de données sensibles. Un modèle avec accès à un contexte contenant des PII peut les répéter dans ses réponses sans mesure de protection.\n\n**Quand l'utiliser :** tout assistant ayant accès à des données utilisateurs, des documents internes ou des bases de données.\n\n**Ce qu'il protège :** contre la fuite de données personnelles en sortie. Base minimale (N1) applicable sans infrastructure particulière. Le log structuré permet d'agréger les refus dans un SIEM ou un tableau de bord conformité.\n\n**Couverture MITRE ATLAS :** [AML.T0057](https://atlas.mitre.org/techniques/AML.T0057) (LLM Data Leakage).",
  "installation": {
    "ou_quand": "Ce prompt agit comme une **politique de fond** : il doit être actif dès le premier message de chaque session. Il se place donc dans le system prompt ou les instructions persistantes de l'assistant, jamais en tant que message utilisateur ponctuel. **Pour un usage personnel** (ChatGPT, Claude), à installer une fois dans le profil. **Pour un assistant déployé** (chatbot RH, support), à installer dans le system prompt au moment du déploiement.",
    "moments": [
      "profil",
      "projet-debut"
    ],
    "exemples": [
      {
        "contexte": "ChatGPT (Plus, Team, Enterprise)",
        "instruction": "**Profil → Personnaliser ChatGPT → champ « Comment ChatGPT doit-il répondre ? »** — coller le prompt entier. Pour un usage limité à un cas (ex. RH), créer plutôt un **Projet** et coller dans **Instructions du projet**."
      },
      {
        "contexte": "Claude.ai (Pro, Team)",
        "instruction": "**Créer un Projet → Custom Instructions** — coller le prompt. Toutes les conversations du projet l'incluront automatiquement. Pour un usage ponctuel, coller comme premier message en commençant par : *« Voici les règles de cette conversation : … »*."
      },
      {
        "contexte": "Claude Code",
        "instruction": "Ajouter dans `./CLAUDE.md` (racine du projet) ou `~/.claude/CLAUDE.md` (global, tous projets). Le fichier est lu automatiquement au démarrage de chaque session."
      },
      {
        "contexte": "API (Anthropic, OpenAI, Mistral)",
        "instruction": "Passer le prompt comme paramètre **`system`** de chaque requête. Capturer la sortie pour extraire les lignes `[PII_REFUSAL] …` et les injecter dans votre système de logs (Splunk, Datadog, ELK)."
      }
    ]
  },
  "date_creation": "2026-05-17",
  "date_maj": "2026-05-24",
  "version": "1.1",
  "tokens_estimes": {
    "entree": 220,
    "sortie": null
  },
  "referentiels": {
    "mitre_atlas": [
      "AML.T0057"
    ]
  },
  "changelog": [
    {
      "date": "2026-05-17",
      "version": "1.0",
      "summary": "Création de la fiche"
    },
    {
      "date": "2026-05-24",
      "version": "1.1",
      "summary": "Ajout couverture MITRE ATLAS (AML.T0057)"
    }
  ]
}
