VECTOR-Score reads any CycloneDX 1.6 CBOM JSON file, classifies each cryptographic algorithm component by its quantum risk posture, annotates the CBOM with pqcmat:-namespaced properties, and produces a Markdown risk report.
- Python 3.11
- PyYAML (included in the Poetry dependencies at the project root)
VECTOR-Score does not require Docker, CodeQL, testssl.sh, or ZGrab2. It can be run stand-alone against any valid CycloneDX CBOM.
# Minimal invocation — output files written next to the input file
vector score /path/to/cbom.json
# Specify output paths explicitly
vector score cbom.json --output cbom_scored.json --report risk_report.md
# Score only (suppress report generation)
vector score cbom.json --no-report| Argument | Required | Default | Description |
|---|---|---|---|
cbom |
yes | — | Path to a CycloneDX 1.6 CBOM JSON file |
--output |
no | <stem>_scored.json |
Path for the annotated output CBOM |
--report |
no | <stem>_risk_report.md |
Path for the Markdown risk report |
--no-report |
no | — | Skip report generation; write annotated CBOM only |
A deep copy of the input CBOM with pqcmat:-namespaced properties appended to every algorithm component (cryptoProperties.assetType == "algorithm"). The input file is never modified.
Added properties on each algorithm component:
| Property name | Example value |
|---|---|
pqcmat:risk-classification |
quantum-vulnerable |
pqcmat:risk-score |
high |
pqcmat:rationale |
RSA relies on the hardness of integer factorisation… |
pqcmat:recommended-migration |
ML-KEM-768 (NIST FIPS 203) for key encapsulation |
pqcmat:reference |
NIST FIPS 203 (repeated entry per reference) |
Two properties are also added to metadata.properties:
| Property name | Description |
|---|---|
pqcmat:scored-at |
ISO 8601 UTC timestamp of the scoring run |
pqcmat:scorer-version |
VECTOR-Score release version (e.g. 0.1) |
A Markdown file containing:
- Header — target application name, timestamp, scorer version, total algorithm count.
- Summary table — counts grouped by risk classification with the associated risk score level.
- Per-classification finding tables — algorithm name, primitive type, key size (if present), rationale, recommended migration target, and source code locations (for VECTOR-Code findings).
- Normative references — links to NIST FIPS 203/204/205, BSI TR-02102-1, ANSSI, SP 800-131A Rev.2.
VECTOR-Score assigns one of six classifications to each algorithm component.
| Classification | Risk score | Description |
|---|---|---|
quantum-vulnerable |
High | Relies on integer factorization or discrete logarithm problems that are broken by Shor's algorithm on a cryptographically relevant quantum computer (CRQC). Includes RSA, ECDH/ECDHE, DHE, ECDSA, DSA, EdDSA, X25519/X448. Immediate migration planning required. |
classically-deprecated |
High | Already broken or deprecated by classical cryptanalysis, independent of quantum threats. Includes RC4, DES, MD5, IDEA, SEED, NULL ciphers, and EXPORT suites. Remove immediately. |
non-hybrid |
Medium | NIST-standardized or NIST-candidate post-quantum algorithms that are not used in hybrid combinations. Includes ML-KEM (FIPS 203), ML-DSA (FIPS 204), SLH-DSA (FIPS 205), FN-DSA, and candidates such as CRYSTALS-Kyber, sntrup761, NTRU. Recommended for constrained environments (embedded devices, IoT), being aware that PQC algorithm are still young and vulnerabilities might be discovered. |
hybrid |
Low | Combinations of a classical with a post-quantum cryptographic algorithms (e.g. X25519MLKEM768, SecP256r1MLKEM768). Recommended for a smooth transition, maintaining interoperability and providing security relying on both, battle-tested classical algorithms and PQC algorithms. |
quantum-safe |
None | Symmetric and hash algorithms with sufficient key/output sizes to provide at least 128-bit post-quantum security under Grover's algorithm. Includes AES-256, ChaCha20-Poly1305, SHA-256/384/512, HMAC-SHA-256+. No migration required. |
unknown |
High | Algorithm name did not match any catalog entry. Manual review required. |
The classification rules are stored in tor/vector_score/data/algorithm-risk-catalog.yaml. Each entry maps algorithm name patterns (exact strings or Python regular expressions) and optional key-size ranges to a classification, risk score, rationale, migration recommendation, and normative references. Extending coverage requires only editing the YAML file — no code changes are needed.
- NIST FIPS 203 — ML-KEM (Module-Lattice-Based Key-Encapsulation Mechanism Standard)
- NIST FIPS 204 — ML-DSA (Module-Lattice-Based Digital Signature Standard)
- NIST FIPS 205 — SLH-DSA (Stateless Hash-Based Digital Signature Standard)
- NIST SP 800-131A Rev.2 — Transitioning the Use of Cryptographic Algorithms and Key Lengths
- BSI TR-02102-1 — Cryptographic Mechanisms: Recommendations and Key Lengths (2024)
- ANSSI — Recommandations de sécurité relatives aux mécanismes cryptographiques (2021)
VECTOR-Score is compatible with CBOM output from both VECTOR-Code (component type crypto-asset) and VECTOR-Network (component type cryptographic-asset). The scorer handles both type variants transparently.
Typical pipeline:
VECTOR-Code / VECTOR-Network
│
▼ <target>_cbom.json
VECTOR-Score
│
├── <target>_cbom_scored.json (annotated CBOM)
└── <target>_cbom_risk_report.md