Skip to main content

Find quantum-vulnerable cryptography in your codebase

Project description

qproof

Find quantum-vulnerable cryptography in your codebase.

qproof scans source code and dependencies for cryptographic algorithms, classifies their quantum risk, and recommends post-quantum replacements — with references to NIST, CNSA 2.0, ENISA, and EU standards.

CI PyPI Python License: MIT

Why qproof?

Quantum computers will break RSA, ECDSA, and Diffie-Hellman. The EU requires full PQC migration by 2035 (high-risk systems by 2030). NSA's CNSA 2.0 mandates transition starting now.

qproof tells you exactly where you're exposed and what to do about it.

  • Scans Python, JavaScript/TypeScript, Go, Java, Rust source code
  • Detects crypto dependencies in package.json, requirements.txt, go.mod, and more
  • Classifies each finding: VULNERABLE, PARTIAL, or SAFE
  • Recommends post-quantum replacements (ML-KEM, ML-DSA per FIPS 203/204)
  • References NIST, CNSA 2.0, ENISA, EU 2024/1101, CCN-STIC 221/807
  • Scans server configs (nginx, Apache, SSH, OpenSSL) and JWT/TLS settings
  • Outputs Rich terminal, JSON, SARIF (GitHub Security), or CBOM (CycloneDX v1.6)

Quick start

pip install qproof
qproof scan .

Installation

# From PyPI
pip install qproof

# From source
git clone https://github.com/qproof/qproof.git
cd qproof
pip install -e ".[dev]"

Requires Python 3.10+.

Usage

# Scan current directory — Rich terminal output
qproof scan .

# Scan a specific path
qproof scan /path/to/project

# JSON output (for CI/CD)
qproof scan . --format json

# Save JSON report to file
qproof scan . --format json --output report.json

# SARIF output (for GitHub Security tab)
qproof scan . --format sarif --output qproof.sarif

# CBOM output (CycloneDX v1.6 — cryptographic asset inventory)
qproof scan . --format cbom --output cbom.json

GitHub Actions integration

Add this to .github/workflows/qproof.yml:

name: Quantum Crypto Scan
on: [push, pull_request]

jobs:
  qproof:
    runs-on: ubuntu-latest
    permissions:
      security-events: write
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.12"
      - run: pip install qproof
      - run: qproof scan . --format sarif --output qproof.sarif
      - uses: github/codeql-action/upload-sarif@v3
        with:
          sarif_file: qproof.sarif
          category: qproof

Findings appear in your repository's Security → Code scanning alerts tab.

What it detects

Category Examples Risk
Asymmetric crypto RSA, ECDSA, ECDH, Ed25519, DH VULNERABLE
Broken hashes MD5, SHA-1 VULNERABLE
Deprecated ciphers DES, 3DES, RC4 VULNERABLE
Partial-risk symmetric AES-128, Blowfish PARTIAL
Quantum-safe AES-256, SHA-256, SHA-3, ChaCha20 SAFE

| Config settings | TLS 1.0/1.1, SSH RSA keys, JWT RS256/ES256 | VULNERABLE |

43 algorithms classified. 13 libraries mapped. Config scanner covers nginx, SSH, OpenSSL, JWT, PEM.

Output example

+------------+------------------+----------+------------------+
| Risk       | Algorithm        | File     | Replacement      |
+------------+------------------+----------+------------------+
| VULNERABLE | RSA              | app.py:5 | ML-KEM (FIPS 203)|
| VULNERABLE | SHA-1            | app.py:9 | SHA-256          |
| SAFE       | AES-256          | app.py:12| No change needed |
+------------+------------------+----------+------------------+

Quantum Ready Score: 33.3% — 1 SAFE / 3 total

Standards referenced

qproof maps every algorithm to formal standards for compliance reporting:

  • NIST: SP 800-131A Rev.2, FIPS 203 (ML-KEM), FIPS 204 (ML-DSA), FIPS 180-4, FIPS 197
  • NSA CNSA 2.0: Transition timeline 2025-2035
  • ENISA: PQC Integration Study, ECCG Agreed Cryptographic Mechanisms v2
  • EU: Recommendation 2024/1101, Coordinated PQC Roadmap (2030/2035)
  • CCN (Spain): CCN-STIC 221, CCN-STIC 807 (ENS compliance)

Supported dependency files

File Ecosystem
requirements.txt Python
Pipfile Python
pyproject.toml Python
package.json npm
go.mod Go
Cargo.toml Rust
pom.xml Java/Maven
build.gradle Java/Gradle

Roadmap

  • v0.1 — Regex source scanner, dependency scanner, Rich/JSON output
  • v0.2 — SARIF output, CBOM CycloneDX v1.6, config scanner (TLS/SSH/JWT)
  • v0.3 — AST scanner (tree-sitter), GitHub Action marketplace, Go/Java source support
  • v1.0 — SaaS dashboard, compliance PDF reports

Contributing

Contributions welcome. Please open an issue first to discuss changes.

git clone https://github.com/qproof/qproof.git
cd qproof
pip install -e ".[dev]"
pytest -v
ruff check qproof/ tests/

License

MIT — see LICENSE.


Built by the EYES team. Scanning the quantum horizon.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qproof-0.4.0.tar.gz (83.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

qproof-0.4.0-py3-none-any.whl (50.0 kB view details)

Uploaded Python 3

File details

Details for the file qproof-0.4.0.tar.gz.

File metadata

  • Download URL: qproof-0.4.0.tar.gz
  • Upload date:
  • Size: 83.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for qproof-0.4.0.tar.gz
Algorithm Hash digest
SHA256 18b4318e7e4c122172ebdaf349029dfdf024a3a43f52204d90538aa82f58a39c
MD5 d2fe09f8bbc49a3785f4dcfa9fa274fb
BLAKE2b-256 bdcca70a2e6ba76d84b6a64566a6eaa6c484ef6ef3283de2bd76c2925d09d8f1

See more details on using hashes here.

File details

Details for the file qproof-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: qproof-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 50.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for qproof-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 db1666865699d949d8bbc5ea1b6ca86b56a2e862eb81c9ed2f0e2e8bfda98c98
MD5 fb247bff3ab42b0f4fccc0304891bb63
BLAKE2b-256 8b21295aa99fcce48b4cd55422c3c8399cf2c65170a279e302cf2d334c9098fa

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page