
Strumento CLI per analizzare codebase alla ricerca di crittografia vulnerabile al quantum.
Scansiona il tuo codebase per crittografia vulnerabile al quantum prima che sia troppo tardi.
Avvio rapido • Perché prepararsi al quantum? • Utilizzo • Livelli di rischio • CI/CD • Informazioni
Crypto Scanner è uno strumento CLI che scansiona il tuo codebase alla ricerca di algoritmi crittografici e genera valutazioni del rischio di vulnerabilità quantistica. Analizza codice sorgente, file di configurazione e certificati X.509 per identificare la crittografia che verrà compromessa dai computer quantistici.
Sviluppato da Quantum Shield Labs — aiuta le organizzazioni a prepararsi per l'era post-quantum.
Si prevede che entro il 2033 emergano Computer Quantistici Crittograficamente Rilevanti (CRQC) in grado di rompere RSA e ECC. Non è fantascienza: è una tempistica a cui governi e grandi imprese si stanno attivamente preparando.
Gli avversari stanno già raccogliendo dati crittografati oggi con l'intenzione di decifrarli quando i computer quantistici saranno disponibili. Se i tuoi dati hanno un valore a lungo termine (cartelle cliniche, dati finanziari, segreti commerciali, comunicazioni governative), sono già a rischio.
| Sfida | Realtà |
|---|
L'algoritmo di Shor, eseguito su un computer quantistico sufficientemente potente, può fattorizzare efficientemente grandi interi e calcolare logaritmi discreti. Questo rompe:
Non puoi migrare ciò che non sai di avere. Crypto Scanner fornisce l'inventario crittografico che è il primo passo essenziale in qualsiasi programma di preparazione al quantum.
📘 Scopri di più: Leggi il Quantum Shield Labs Playbook per una guida completa alla migrazione.
Ottieni la tua prima scansione di vulnerabilità quantistica in meno di 60 secondi:
# 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
Ecco fatto. Ora hai un inventario crittografico completo del tuo 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
# Scansione con output verboso
crypto-scanner scan ./src --verbose
# Salva report JSON su file
crypto-scanner scan . --output crypto-audit.json
# Genera report HTML con branding per gli stakeholder
crypto-scanner scan . --html --output quantum-assessment.html
# Escludi directory specifiche
crypto-scanner scan . --exclude vendor --exclude legacy
# Escludi pattern di file
crypto-scanner scan . --exclude "*.test.js" --exclude "*.spec.ts"
# Combina opzioni
crypto-scanner scan ./backend -v --exclude node_modules -o report.json
I seguenti sono automaticamente esclusi per evitare di scansionare le dipendenze:
.git, .svn, .hg # Controllo versione
node_modules, vendor # Dipendenze dei pacchetti
__pycache__, .pytest_cache, .mypy_cache
.venv, venv, env # Ambienti virtuali
dist, build, out # Output di build
.idea, .vscode # Directory IDE
site-packages, third_party
Algoritmi che verranno completamente rotti dall'algoritmo di Shor:
Algoritmi con vulnerabilità classiche note:
Algoritmi attualmente sicuri ma da monitorare:
Algoritmi che forniscono protezione adeguata:
| Estensione | Formato |
|---|---|
.pem | Codifica PEM |
.crt, .cer, .cert | Certificato |
.der | Codifica DER |
Formato di output predefinito, ideale per automazione e pipeline 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)"
}
]
}
Report professionale e autonomo con branding di Quantum Shield Labs:
Genera con:
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
Aggiungi a .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 # Typer CLI interface
│ ├── scanner.py # Core orchestration logic
│ ├── models.py # Pydantic data models
│ ├── patterns.py # 50+ regex detection patterns
│ ├── analyzers/ # File type analyzers
│ │ ├── base.py # Abstract base class
│ │ ├── source.py # Source code analyzer (14 languages)
│ │ ├── config.py # Configuration file analyzer
│ │ └── certificate.py # X.509 certificate analyzer
│ └── reporters/ # Output generators
│ ├── json_reporter.py
│ └── html_reporter.py
└── tests/ # Comprehensive test suite
SourceCodeAnalyzer — Riconoscimento di pattern in 14 linguaggi di programmazioneConfigAnalyzer — Parsing YAML/JSON + riconoscimento pattern per file di configurazioneCertificateAnalyzer — Parsing X.509 per estrarre algoritmi e dimensioni delle chiaviI contributi sono benvenuti! Ecco come iniziare:
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
I pattern crittografici sono definiti in src/crypto_scanner/patterns.py. Ogni pattern include:
git checkout -b feature/new-pattern)pytest tests/ -v)Licenza MIT — vedi LICENSE per i dettagli.
Quantum Shield Labs aiuta le organizzazioni a prepararsi per l'era post-quantum con:
Realizzato con cura da Quantum Shield Labs
| Complessità della migrazione | I codebase di grandi dimensioni richiedono 3-5+ anni per la transizione |
| Profondità della supply chain | Le tue dipendenze contengono crittografia vulnerabile che non vedi |
| Mandati di conformità | Gli standard NIST PQC (ML-KEM, ML-DSA) sono ora finalizzati |
| Scadenza CNSA 2.0 | La NSA richiede algoritmi resistenti ai quantistici entro il 2033 |
| Opzione | Breve | Descrizione |
|---|
--html | Genera report HTML invece di JSON | |
--output | -o | Salva report su file (invece che su stdout) |
--verbose | -v | Mostra il progresso dettagliato della scansione |
--exclude | -e | Pattern di esclusione aggiuntivi (ripetibile) |
--version | -V | Mostra versione ed esci |
| Algoritmo | Dimensioni chiave | Impatto quantistico | Azione consigliata |
|---|
| RSA | Tutte (1024-4096+) | Completamente rotto | Migrare a ML-KEM + ML-DSA |
| ECDSA/ECC | Tutte le curve | Completamente rotto | Migrare a ML-DSA |
| DH/ECDH | Tutte | Scambio chiavi rotto | Migrare a ML-KEM |
| DSA | Tutte | Completamente rotto | Migrare a ML-DSA |
| Algoritmo | Problema | Azione consigliata |
|---|
| MD5 | Attacchi di collisione, completamente rotto | Sostituire con SHA-3 o SHA-256 |
| SHA-1 | Attacchi di collisione dimostrati | Sostituire con SHA-256+ |
| DES | Chiave a 56 bit, banalmente rotto | Sostituire con AES-256 |
| 3DES | Attacchi meet-in-the-middle | Sostituire con AES-256 |
| AES-128 | L'algoritmo di Grover riduce la sicurezza | Aggiornare a AES-256 |
| Algoritmo | Stato | Azione consigliata |
|---|
| SHA-256 | Sicuro, Grover riduce a 128 bit | Pianificare migrazione a SHA-3 |
| SHA-384 | Sicuro | Monitorare sviluppi |
| SHA-512 | Buona resistenza quantistica | Monitorare sviluppi |
| TLS 1.2 | Sicuro ma invecchiato | Preferire TLS 1.3 |
| Algoritmo | Stato | Note |
|---|
| AES-256 | Resistente al quantum | Sicurezza post-quantum a 128 bit |
| ChaCha20 | Moderno, sicuro | Buona alternativa ad AES |
| SHA-3 | Ultimo standard NIST | Consigliato per nuovi progetti |
| ML-KEM | Post-quantum (Kyber) | Standardizzato NIST 2024 |
| ML-DSA | Post-quantum (Dilithium) | Standardizzato NIST 2024 |
| Estensione | Linguaggio |
|---|
.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 |
| Estensione | Formato |
|---|
.yaml, .yml | YAML |
.json | JSON |
.toml | TOML |
.ini, .cfg, .conf, .config | INI/Config |
.env | Variabili d'ambiente |