
Outil CLI pour analyser les codebases à la recherche de cryptographie vulnérable aux attaques quantiques.
Scannez votre codebase à la recherche de cryptographie vulnérable au quantique avant qu'il ne soit trop tard.
Démarrage rapide • Pourquoi être prêt pour le quantique ? • Utilisation • Niveaux de risque • CI/CD • À propos
Crypto Scanner est un outil CLI qui scanne votre codebase à la recherche d'algorithmes cryptographiques et génère des évaluations de risque de vulnérabilité quantique. Il analyse le code source, les fichiers de configuration et les certificats X.509 pour identifier la cryptographie qui sera brisée par les ordinateurs quantiques.
Développé par Quantum Shield Labs — aidant les organisations à se préparer à l'ère post-quantique.
Les ordinateurs quantiques cryptographiquement pertinents (CRQC) capables de briser RSA et ECC devraient émerger d'ici 2033. Ce n'est pas de la science-fiction — c'est un calendrier auquel les grands gouvernements et entreprises se préparent activement.
Les adversaires collectent déjà des données chiffrées aujourd'hui avec l'intention de les déchiffrer une fois que les ordinateurs quantiques seront disponibles. Si vos données ont une valeur à long terme (dossiers médicaux, données financières, secrets commerciaux, communications gouvernementales), elles sont déjà à risque.
| Défi | Réalité |
|---|---|
| Complexité de la migration |
L'algorithme de Shor, exécuté sur un ordinateur quantique suffisamment puissant, peut factoriser efficacement de grands entiers et calculer des logarithmes discrets. Cela brise :
Vous ne pouvez pas migrer ce que vous ne savez pas avoir. Crypto Scanner fournit l'inventaire cryptographique qui est la première étape essentielle de tout programme de préparation quantique.
📘 En savoir plus : Lisez le Playbook de Quantum Shield Labs pour des conseils complets de migration.
Obtenez votre première analyse de vulnérabilité quantique en moins de 60 secondes :
# Install from PyPI
pip install crypto-scanner
# Scan your project
crypto-scanner scan .
# Generate an executive HTML report
crypto-scanner scan . --html --output quantum-risk-report.html
C'est tout. Vous avez maintenant un inventaire cryptographique complet de votre codebase.
pip install crypto-scanner
git clone https://github.com/mbennett-labs/crypto-scanner.git
cd crypto-scanner
pip install -e .
# Scan a directory (JSON output to stdout)
crypto-scanner scan <directory>
# Show supported file types and risk classifications
crypto-scanner info
# Display version
crypto-scanner --version
# Scan with verbose output
crypto-scanner scan ./src --verbose
# Save JSON report to file
crypto-scanner scan . --output crypto-audit.json
# Generate branded HTML report for stakeholders
crypto-scanner scan . --html --output quantum-assessment.html
# Exclude specific directories
crypto-scanner scan . --exclude vendor --exclude legacy
# Exclude file patterns
crypto-scanner scan . --exclude "*.test.js" --exclude "*.spec.ts"
# Combine options
crypto-scanner scan ./backend -v --exclude node_modules -o report.json
Les éléments suivants sont automatiquement exclus pour éviter d'analyser les dépendances :
.git, .svn, .hg # Contrôle de version
node_modules, vendor # Dépendances de paquets
__pycache__, .pytest_cache, .mypy_cache
.venv, venv, env # Environnements virtuels
dist, build, out # Sorties de construction
.idea, .vscode # Répertoires IDE
site-packages, third_party
Algorithmes qui seront complètement brisés par l'algorithme de Shor :
Algorithmes avec des vulnérabilités classiques connues :
Algorithmes actuellement sécurisés mais à surveiller :
Algorithmes offrant une protection adéquate :
| Extension | Format |
|---|---|
.pem | Encodé PEM |
.crt, .cer, .cert | Certificat |
.der | Encodé DER |
Format de sortie par défaut, idéal pour l'automatisation et les pipelines CI/CD :
{
"scan_directory": "/path/to/project",
"scan_timestamp": "2026-02-06T10:30:00",
"scanner_version": "0.1.0",
"summary": {
"total_files_scanned": 150,
"total_findings": 23,
"critical_count": 5,
"high_count": 8,
"medium_count": 7,
"low_count": 3
},
"excluded_patterns": [".git", "node_modules", "..."],
"findings": [
{
"file_path": "/path/to/auth.py",
"line_number": 42,
"algorithm": "RSA",
"key_size": 2048,
"risk_level": "critical",
"description": "RSA key generation detected",
"recommendation": "Plan migration to post-quantum algorithms (ML-KEM, ML-DSA)",
"context": "key = rsa.generate_private_key(public_exponent=65537, key_size=2048)"
}
]
}
Rapport professionnel autonome avec la marque Quantum Shield Labs :
Générer avec :
crypto-scanner scan . --html --output report.html
name: Crypto Vulnerability Scan
on: [push, pull_request]
jobs:
crypto-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install Crypto Scanner
run: pip install crypto-scanner
- name: Run Crypto Scan
run: crypto-scanner scan ./src --output crypto-report.json
- name: Check for Critical Findings
run: |
CRITICAL=$(jq '.summary.critical_count' crypto-report.json)
if [ "$CRITICAL" -gt 0 ]; then
echo "::error::Found $CRITICAL critical quantum-vulnerable algorithms!"
jq '.findings[] | select(.risk_level == "critical")' crypto-report.json
exit 1
fi
- name: Upload Report
uses: actions/upload-artifact@v4
if: always()
with:
name: crypto-vulnerability-report
path: crypto-report.json
crypto-scan:
stage: security
image: python:3.12
script:
- pip install crypto-scanner
- crypto-scanner scan . --output crypto-report.json
- |
CRITICAL=$(jq '.summary.critical_count' crypto-report.json)
if [ "$CRITICAL" -gt 0 ]; then
echo "Critical quantum-vulnerable cryptography detected!"
exit 1
fi
artifacts:
reports:
dotenv: crypto-report.json
paths:
- crypto-report.json
when: always
Add to .pre-commit-config.yaml:
repos:
- repo: local
hooks:
- id: crypto-scanner
name: Crypto Scanner
entry: bash -c 'crypto-scanner scan . --output /tmp/crypto-scan.json && CRITICAL=$(jq ".summary.critical_count" /tmp/crypto-scan.json) && [ "$CRITICAL" -eq 0 ]'
language: system
pass_filenames: false
always_run: true
#!/bin/bash
# crypto-check.sh - Fail if critical vulnerabilities found
set -e
crypto-scanner scan . --output /tmp/crypto-report.json
CRITICAL=$(jq '.summary.critical_count' /tmp/crypto-report.json)
HIGH=$(jq '.summary.high_count' /tmp/crypto-report.json)
echo "Scan complete: $CRITICAL critical, $HIGH high risk findings"
if [ "$CRITICAL" -gt 0 ]; then
echo "FAILED: Critical quantum-vulnerable cryptography detected!"
exit 1
fi
crypto-scanner/
├── src/crypto_scanner/
│ ├── cli.py # Interface CLI Typer
│ ├── scanner.py # Logique d'orchestration centrale
│ ├── models.py # Modèles de données Pydantic
│ ├── patterns.py # 50+ motifs de détection regex
│ ├── analyzers/ # Analyseurs par type de fichier
│ │ ├── base.py # Classe de base abstraite
│ │ ├── source.py # Analyseur de code source (14 langages)
│ │ ├── config.py # Analyseur de fichiers de configuration
│ │ └── certificate.py # Analyseur de certificats X.509
│ └── reporters/ # Générateurs de sortie
│ ├── json_reporter.py
│ └── html_reporter.py
└── tests/ # Suite de tests complète
SourceCodeAnalyzer — Correspondance de motifs dans 14 langages de programmationConfigAnalyzer — Analyse YAML/JSON + correspondance de motifs pour les fichiers de configCertificateAnalyzer — Analyse X.509 pour extraire les algorithmes et tailles de clésLes contributions sont les bienvenues ! Voici comment commencer :
git clone https://github.com/mbennett-labs/crypto-scanner.git
cd crypto-scanner
pip install -e ".[dev]"
# Run all tests
pytest tests/ -v
# Run with coverage
pytest tests/ -v --cov=crypto_scanner --cov-report=html
Les motifs de cryptographie sont définis dans src/crypto_scanner/patterns.py. Chaque motif comprend :
git checkout -b feature/nouveau-motif)pytest tests/ -v)Licence MIT — voir LICENSE pour les détails.
Quantum Shield Labs aide les organisations à se préparer à l'ère post-quantique avec :
Construit avec soin par Quantum Shield Labs
| Les grandes codebases prennent 3 à 5 ans ou plus à transitionner |
| Profondeur de la chaîne d'approvisionnement | Vos dépendances contiennent de la crypto vulnérable que vous ne voyez pas |
| Obligations de conformité | Les normes NIST PQC (ML-KEM, ML-DSA) sont désormais finalisées |
| Échéance CNSA 2.0 | La NSA exige des algorithmes résistants au quantique d'ici 2033 |
| Option | Court | Description |
|---|
--html | Générer un rapport HTML au lieu de JSON | |
--output | -o | Enregistrer le rapport dans un fichier (au lieu de stdout) |
--verbose | -v | Afficher la progression détaillée de l'analyse |
--exclude | -e | Motifs d'exclusion supplémentaires (répétable) |
--version | -V | Afficher la version et quitter |
| Algorithm | Key Sizes | Quantum Impact | Recommended Action |
|---|
| RSA | Toutes (1024-4096+) | Complètement brisé | Migrer vers ML-KEM + ML-DSA |
| ECDSA/ECC | Toutes les courbes | Complètement brisé | Migrer vers ML-DSA |
| DH/ECDH | Tous | Échange de clés brisé | Migrer vers ML-KEM |
| DSA | Tous | Complètement brisé | Migrer vers ML-DSA |
| Algorithm | Issue | Recommended Action |
|---|
| MD5 | Attaques de collision, complètement brisé | Remplacer par SHA-3 ou SHA-256 |
| SHA-1 | Attaques de collision démontrées | Remplacer par SHA-256+ |
| DES | Clé de 56 bits, trivialement brisé | Remplacer par AES-256 |
| 3DES | Attaques meet-in-the-middle | Remplacer par AES-256 |
| AES-128 | L'algorithme de Grover réduit la sécurité | Mettre à niveau vers AES-256 |
| Algorithm | Status | Recommended Action |
|---|
| SHA-256 | Sécurisé, Grover réduit à 128 bits | Planifier la migration vers SHA-3 |
| SHA-384 | Sécurisé | Surveiller les développements |
| SHA-512 | Bonne résistance quantique | Surveiller les développements |
| TLS 1.2 | Sécurisé mais vieillissant | Préférer TLS 1.3 |
| Algorithm | Status | Notes |
|---|
| AES-256 | Résistant au quantique | Sécurité post-quantique de 128 bits |
| ChaCha20 | Moderne, sécurisé | Bonne alternative à AES |
| SHA-3 | Dernière norme NIST | Recommandé pour les nouveaux projets |
| ML-KEM | Post-quantique (Kyber) | Normalisé par le NIST en 2024 |
| ML-DSA | Post-quantique (Dilithium) | Normalisé par le NIST en 2024 |
| Extension | Langage |
|---|
.py, .pyw | Python |
.js, .mjs, .cjs | JavaScript |
.ts, .tsx | TypeScript |
.java | Java |
.go | Go |
.rs | Rust |
.c, .h, .cpp, .hpp | C/C++ |
.cs | C# |
.rb | Ruby |
.php | PHP |
.swift | Swift |
.kt, .kts | Kotlin |
.scala | Scala |
| Extension | Format |
|---|
.yaml, .yml | YAML |
.json | JSON |
.toml | TOML |
.ini, .cfg, .conf, .config | INI/Config |
.env | Variables d'environnement |