
Analysez les bases de code pour détecter les cryptographies vulnérables à l'informatique quantique. Détectez RSA, ECDSA, Ed25519, ECDH avant le Jour Q. Sortie au format CycloneDX CBOM et SARIF.
Analysez les bases de code à la recherche de cryptographie vulnérable au quantique. Obtenez une image claire de ce qui doit migrer avant le Q-Day.

pqaudit détecte l'utilisation de RSA, ECDSA, Ed25519, ECDH, DH et d'autres algorithmes cassés par l'algorithme de Shor. Il identifie également l'utilisation déjà migrée de la PQC (ML-KEM, ML-DSA, SLH-DSA) afin que vous puissiez suivre la progression de la migration. Sortie en texte lisible, JSON, CycloneDX CBOM, SARIF pour GitHub Code Scanning, ou un rapport HTML autonome.
Le 31 mars 2026, Google a publié des recherches montrant que casser ECDSA-256 nécessite 20 fois moins de qubits que précédemment estimé — environ 1 200 qubits logiques et moins de 500 000 qubits physiques. La CNSA 2.0 de la NSA impose la PQC pour les nouveaux systèmes de sécurité nationale d'ici 2027. La fenêtre de migration est ouverte mais se referme.
npx pqaudit ./mon-projet
Ou installez globalement :
npm install -g pqaudit
pqaudit ./mon-projet
# Analyser le répertoire actuel, sortie lisible
pqaudit .
# Afficher uniquement les résultats critiques et élevés
pqaudit ./src --severity high
# Générer un CycloneDX CBOM
pqaudit . --format cbom --output cbom.json
# Générer un SARIF pour GitHub Code Scanning
pqaudit . --format sarif --output results.sarif
# Mode CI — code de sortie 1 si des résultats critiques/élevés existent
pqaudit . --ci
# Afficher tous les résultats, y compris les correspondances de commentaires de faible confiance
pqaudit . --min-confidence 0
# Afficher chaque occurrence au lieu de regrouper par fichier
pqaudit . --no-dedupe
# Ignorer l'analyse des dépendances
pqaudit . --no-deps
# Utiliser des règles personnalisées
pqaudit . --rules ./mes-regles.yaml
# Analyser les points de terminaison TLS/SSH pour la crypto vulnérable au quantique
pqaudit . --scan-endpoint api.example.com:443 --scan-endpoint git.example.com:22
# Analyser uniquement les points de terminaison (pas d'analyse de code)
pqaudit --scan-endpoint example.com:443 --scan-endpoint example.com:22
pqaudit — Scanner de préparation à la cryptographie post-quantique
Scanné : ./mon-projet
PAS PRÊT POUR LA PQC — Cryptographie vulnérable au quantique détectée
Fichiers scannés : 65 | Résultats : 12
Critique : 7 Élevé : 2 Moyen : 1 Faible : 0 Sûr : 2
--- CRITIQUE (7) ---
[!!] Ed25519 — Signatures Ed25519 — vulnérable à l'algorithme de Shor (14 occurrences)
src/crypto/signing.ts:14
> import { sign, verify } from "@noble/ed25519";
Correctif : ML-DSA-65 (FIPS 204) ou hybride Ed25519+ML-DSA-65
Confiance : 98% | Effort : modéré | Via : ast
[!!] RSA — Signature RSA — vulnérable au factorisation quantique (3 occurrences)
src/auth/jwt.ts:42
> jwt.sign(payload, key, { algorithm: "RS256" });
Correctif : ML-DSA-65 (FIPS 204)
Confiance : 96% | Effort : complexe | Via : ast
[!!] ECDSA — Le certificat utilise une clé ECDSA 256 bits — vulnérable à l'algorithme de Shor
tls://api.example.com:443
> Clé ECDSA 256 bits, TLSv1.3
Correctif : Algorithmes de certificat post-quantique lorsqu'ils seront disponibles
Confiance : 100% | Effort : complexe | Via : réseau
...
| Algorithme | Menace | Remplacement |
|---|---|---|
| AES-128 | Grover réduit à 64 bits | AES-256 |
| TLS 1.0/1.1, SSLv3 | Protocoles obsolètes | TLS 1.3 |
| SSH (détecté via réseau) | Échange de clés DH/ECDH | Échange de clés hybride PQ |
ML-KEM (Kyber), ML-DSA (Dilithium), SLH-DSA (SPHINCS+), AES-256, ChaCha20-Poly1305, SHA-256, SHA-3
Génère un Cryptographic Bill of Materials conforme à CycloneDX 1.6. Chaque résultat cryptographique devient un composant crypto-asset avec cryptoProperties, niveaux de sécurité quantique NIST et emplacements de preuves.
pqaudit . --format cbom --output cbom.json
Génère une sortie SARIF 2.1.0 compatible avec l'analyse de code GitHub. Téléchargez via github/codeql-action/upload-sarif.
pqaudit . --format sarif --output results.sarif
Fichier HTML autonome avec un tableau de bord visuel — répartition des sévérités, score de préparation PQC et tableau des résultats. Aucune dépendance externe, fonctionne hors ligne.
pqaudit . --format html --output report.html
name: PQC Audit
on: [push, pull_request]
jobs:
pqaudit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "20"
- run: npx pqaudit . --format sarif --output pqaudit.sarif --ci
- uses: github/codeql-action/upload-sarif@v3
if: always()
with:
sarif_file: pqaudit.sarif
category: pqaudit
pqaudit vérifie les fichiers de manifeste pour les bibliothèques cryptographiques connues dans cinq écosystèmes :
Les bibliothèques sûres pour la PQC (@noble/post-quantum, pqcrypto, cloudflare/circl) sont signalées comme sûres pour le suivi de l'inventaire.
Les règles sont définies en YAML :
- id: MA_REGLE_PERSONNALISEE
description: "Motif personnalisé vulnérable au quantique"
severity: critical
category: signature
algorithm: MonAlgo
replacement: ML-DSA-65
effort: complex
languages: ["javascript", "typescript"]
patterns:
- "maFonctionVulnerable\\("
- "import.*maBibliothequeVulnerable"
Voir CONTRIBUTING.md pour le schéma complet des règles et comment soumettre de nouvelles règles.
pqaudit analyse les fichiers de configuration à la recherche de paramètres cryptographiques vulnérables au quantique :
sshd_config/ssh_configLes fichiers de configuration sans extension (Dockerfile, sshd_config, ssh_config) sont automatiquement détectés et analysés.
Sondez les points de terminaison TLS et SSH en direct pour les configurations cryptographiques vulnérables au quantique :
pqaudit --scan-endpoint api.example.com:443 --scan-endpoint git.example.com:22
Points de terminaison TLS (n'importe quel port, ou spécifiez tls://hôte:port) :
Points de terminaison SSH (port 22 auto-détecté, ou spécifiez ssh://hôte:port) :
Les résultats réseau ont une confiance de 100 % (faits observés, pas de correspondances de motifs) et apparaissent avec les résultats de code dans tous les formats de sortie.
pqaudit utilise quatre méthodes de détection :
Prévu :
Voir CONTRIBUTING.md pour les directives sur la soumission de règles, de correctifs et de nouvelles fonctionnalités.
MIT
| Option | Description | Défaut |
|---|
-f, --format <format> | Format de sortie : text, json, cbom, sarif, html | text |
-o, --output <fichier> | Écrire la sortie dans un fichier | stdout |
-s, --severity <niveau> | Niveau de sévérité minimum : critical, high, medium, low, safe | safe |
--min-confidence <0-100> | Filtrer les résultats en dessous de ce seuil de confiance | 50 |
--no-dedupe | Afficher toutes les occurrences au lieu de regrouper par fichier | dédoublonnage activé |
--no-deps | Ignorer l'analyse des dépendances | analyser les dépendances |
--include <modèles...> | Modèles glob à inclure | tous les fichiers sources |
--exclude <modèles...> | Modèles glob supplémentaires à exclure | node_modules, dist, etc. |
--rules <chemin> | Chemin vers un fichier YAML de règles personnalisées | règles intégrées |
--scan-endpoint <points...> | Points de terminaison TLS/SSH à sonder (hôte:port) | aucun |
--network-timeout <ms> | Délai d'expiration de la connexion réseau | 5000 |
--ci | Code de sortie 1 si des résultats critiques ou élevés existent | désactivé |
| Algorithme | Menace | Remplacement |
|---|
| RSA (toute taille de clé) | Algorithme de Shor | ML-KEM-768 / ML-DSA-65 |
| ECDSA / Ed25519 | Shor sur courbes elliptiques | ML-DSA-65 (FIPS 204) |
| ECDH / X25519 / DH | Shor sur l'échange de clés | ML-KEM-768 (FIPS 203) |
| DSA | Algorithme de Shor | ML-DSA-65 (FIPS 204) |
| Écosystème | Fichiers manifestes | Exemples de paquets |
|---|
| npm | package.json | @noble/ed25519, node-rsa, jsonwebtoken, ethers |
| Rust | Cargo.toml | ed25519-dalek, rsa, ring, p256, pqcrypto |
| Go | go.mod | golang.org/x/crypto, cloudflare/circl |
| Python | requirements.txt, pyproject.toml | cryptography, pycryptodome, paramiko |
| Java | build.gradle, pom.xml | BouncyCastle, Google Tink |