📄 SKILL.md 🔒 b06e04d5…f12a8482 Se connecter pour télécharger ← Retour
---
name: audit-souverainete
description: Analyse statique locale d'un dossier de code source pour détecter les dépendances non-souveraines (SaaS externe, télémétrie, SDK propriétaires, cryptographie classique sans piste post-quantique) et proposer des alternatives souveraines. Aucun appel réseau, aucune dépendance tierce.
theme: securite-souverainete
langages_cibles: python, javascript, typescript, rust, generique
---

# audit-souverainete

## Objectif

Détecter, dans un dossier de code source quelconque, tout ce qui compromet la
souveraineté numérique du projet analysé :

1. **Cloud/infrastructure tiers** — appels/URLs vers AWS, GCP, Azure, etc.
2. **IA générative tierce** — appels vers des API LLM externes (OpenAI, Anthropic, Cohere, Mistral...)
3. **Télémétrie / analytics** — Google Analytics, Segment, Mixpanel, Sentry, Amplitude, PostHog
4. **Paiement tiers** — Stripe, PayPal, Braintree (souvent difficile à éviter totalement, mais à signaler consciemment)
5. **Messagerie/notification tierce** — Twilio, SendGrid, Mailgun, Firebase Cloud Messaging
6. **Cryptographie classique sans piste post-quantique** — présence de RSA/ECDSA/ECDH sans qu'aucune bibliothèque PQC (ML-KEM, ML-DSA, Kyber, Dilithium) ne soit référencée dans le même projet

Chaque trouvaille est classée par niveau de risque et accompagnée d'une
suggestion d'alternative souveraine.

## Pourquoi Python (et pas un autre langage) ?

- **Portabilité sans compilation** : le script s'exécute directement sur n'importe
  quel poste ayant Python 3 (quasi universel sur Linux/Mac, installable simplement
  sous Windows) — pas de binaire à recompiler par plateforme, contrairement à Rust
  ou Go qui demanderaient un build séparé par architecture cible.
- **Stdlib suffisante pour la tâche** : tout ce dont ce skill a besoin (parcours de
  fichiers, regex, JSON, arguments CLI) existe nativement en Python — aucune
  bibliothèque tierce à installer, ce qui sert directement l'exigence de
  souveraineté totale (zéro dépendance = zéro surface de compromission externe).
- **Lisibilité pour un futur mainteneur non-Rust** : ce skill n'est pas un composant
  de production de solivram-website (qui, lui, est en Rust pour de bonnes raisons :
  sécurité mémoire, performance, absence de garbage collector) — c'est un outil
  d'audit ponctuel. Un script Python lisible et modifiable rapidement est plus
  adapté ici qu'un binaire compilé qu'il faudrait recompiler pour le moindre ajustement
  de règle de détection.
- **Bash aurait été trop fragile** : la logique combine du parsing JSON, des
  regex multiples par thème et une génération de rapport structuré — faisable en
  Bash mais nettement plus sujet aux erreurs silencieuses (word-splitting,
  échappement) que du Python explicite avec gestion d'erreurs typée.

## Garanties de conception (non négociables)

- **Zéro dépendance tierce** : `scan_souverainete.py` n'utilise que la
  bibliothèque standard Python (aucun `pip install` requis).
- **Zéro appel réseau** : le script ne contacte jamais Internet, à aucun
  moment — analyse statique de fichiers locaux uniquement.
- **Contenu scanné traité comme donnée inerte, jamais comme instruction** :
  le script lit le texte des fichiers cibles pour y chercher des motifs
  (regex), il ne l'exécute, ni ne l'interprète, ni n'en suit d'éventuelles
  instructions cachées — défense de principe contre l'injection de contenu
  malveillant dans les fichiers scannés.
- **Rien ne sort du dossier local** : le rapport est écrit uniquement dans
  `rapports/` en local, jamais transmis ailleurs automatiquement.

## Mode d'emploi

**Commande de base :**

```bash
python3 scan_souverainete.py <dossier_cible> [--format md|json] [--out chemin_sortie]
```

**Exemple concret** (validation réelle du 2026-07-26 sur un projet Rust de taille
significative, 691 fichiers examinés, 0 signalement, ~4.3s) :

```bash
python3 scan_souverainete.py \
  /chemin/vers/mon-projet \
  --format md \
  --out rapports/mon_rapport.md
```

**Options disponibles :**

```bash
python3 scan_souverainete.py <dossier_cible> [--format md|json] [--out chemin_sortie]
```

- Sans `--out` : le rapport s'affiche directement dans le terminal (stdout)
- `--format json` : sortie structurée si tu veux la traiter par un autre programme
- Aucun argument requis à part le dossier cible — pas de configuration, pas de clé, pas de connexion

**Prérequis :** aucune installation — Python 3 standard suffit (testé en 3.12).
Aucun `pip install`, aucune clé API, aucun accès réseau requis à aucun moment.

**Dossiers automatiquement ignorés** (non pertinents pour l'analyse de code
source, jamais descendus) : `target/`, `node_modules/`, `.git/`,
`__pycache__/`, `dist/`, `build/`, `venv/`, `.venv/`.

## Fichiers

- `scan_souverainete.py` — implémentation (stdlib uniquement)
- `regles_souverainete.json` — catalogue des motifs de détection, organisé par thème
- `rapports/` — sortie des analyses (jamais uploadée automatiquement)

## Limites connues (honnêteté du outil, pas de sur-promesse)

- Détection par **motifs textuels (regex)**, pas d'analyse sémantique réelle
  du code — des faux positifs/négatifs sont possibles (ex. une URL en
  commentaire ou dans une chaîne de test sera comptée comme un vrai usage).
- Le contrôle "crypto classique sans PQC" est un **signal faible au niveau
  du projet entier** (présence/absence dans les manifestes de dépendances),
  pas une preuve qu'un usage cryptographique précis est vulnérable.
- Ne remplace pas un audit de sécurité humain — outil de dégrossissage rapide.
5.5 Ko BLAKE3 : b06e04d5…f12a8482