?
Guideavancé

Privacy by design pour applications IA

Architectures et techniques pour protéger les données personnelles dans les apps IA.

Privacy by Design pour l'IA

Les applications IA manipulent des données souvent sensibles (conversations, documents, données personnelles). La privacy doit être intégrée dès la conception, pas ajoutée après coup.

Les 7 principes du Privacy by Design

1. Proactif : Prévenir, pas réagir 2. Par défaut : Protection maximale sans action de l'utilisateur 3. Intégré : Dans l'architecture, pas en surcouche 4. Somme positive : Privacy ET fonctionnalité 5. Bout en bout : Cycle de vie complet des données 6. Transparent : Visible et vérifiable 7. Centré utilisateur : L'utilisateur garde le contrôle

Architectures privacy-first

Option 1 : Pas de données sensibles dans le prompt

def anonymize_before_llm(text: str) -> tuple[str, dict]:
    """Remplace les données sensibles par des placeholders."""
    entities = detect_pii(text)  # NER pour PII
    mapping = {}
    anonymized = text

    for entity in entities:
        placeholder = f"[{entity.type}_{entity.id}]"
        mapping[placeholder] = entity.value
        anonymized = anonymized.replace(entity.value, placeholder)

    return anonymized, mapping

def deanonymize_response(response: str, mapping: dict) -> str:
    """Restaure les données dans la réponse."""
    for placeholder, value in mapping.items():
        response = response.replace(placeholder, value)
    return response

Option 2 : LLM self-hosted

Aucune donnée ne quitte votre infrastructure :

Client → Votre API → vLLM (on-premise) → Réponse
                         ↓
              GPU dédiés dans votre datacenter

Option 3 : Architecture hybride

  • Données sensibles : Modèle local (Llama, Mistral)
  • Données non-sensibles : API cloud (meilleures performances)
  • Classification automatique de la sensibilité

Techniques de protection des données

PII Detection et masquage

import presidio_analyzer
import presidio_anonymizer

analyzer = presidio_analyzer.AnalyzerEngine()
anonymizer = presidio_anonymizer.AnonymizerEngine()

# Détecter les PII
results = analyzer.analyze(
    text="Jean Dupont, né le 15/03/1985, email: jean@example.com",
    language="fr",
    entities=["PERSON", "DATE_TIME", "EMAIL_ADDRESS", "PHONE_NUMBER"]
)

# Anonymiser
anonymized = anonymizer.anonymize(text=text, analyzer_results=results)

Data minimization

  • Ne collecter que les données strictement nécessaires
  • Purger les conversations après la session (ou durée définie)
  • Pas de stockage des prompts si non nécessaire au produit
  • Chunking : Ne pas envoyer un document entier si 2 paragraphes suffisent

Chiffrement

  • En transit : TLS 1.3 obligatoire
  • Au repos : Chiffrement AES-256 des vector stores
  • Clés gérées par le client (BYOK) pour l'enterprise

Consentement et transparence

  • Informer que les données passent par un LLM
  • Préciser si le provider peut accéder aux données
  • Opt-out pour l'utilisation en entraînement (Data Processing Agreement)
  • Droit à l'effacement : Pouvoir supprimer les données du vector store

Checklist Privacy pour un projet IA

  • Cartographie des flux de données (DFD)
  • Classification de la sensibilité par champ
  • PII masqué avant tout appel LLM externe
  • Logs sans données personnelles (ou pseudonymisés)
  • Durée de rétention définie et appliquée
  • DPA signé avec chaque provider IA
  • Documentation RGPD à jour (registre des traitements)

Sources

privacyarchitecturedonnées