Docs / FUNDAMENTALS
FUNDAMENTALS
Baseline Registry
Written and maintained by Hendrik Schneider · Last reviewed · How we check this
The Baseline Registry is the central crypto-classification truth source. It holds the canonical rule for every algorithm Korthex knows about - currently roughly 11 500 rules across 14 categories - and tells every other engine: "is this algorithm safe to use, and if not, what should it be replaced with?" When a finding shows up flagged "high severity, replace with X by 2030", that verdict is consistent across the report, the dashboard, the SBOM, the migration plan, and the policy gate - because every engine reads the same table .
The Classification Ladder
| Status | What it means |
|---|---|
| Recommended | Safe to use today and through the PQC transition. Default choice for new code. |
| Acceptable | Allowed but not preferred. Often acceptable above a key-size threshold and deprecated below it. |
| Deprecated | Still functional but on the way out. Plan a migration before the published deadline. |
| Disallowed | Broken or so weak that any use is a finding. Migration is urgent. |
| Not-crypto | Classified explicitly so it never raises a finding (e.g. Base64, hex, PEM encoding). |
| Unknown | Algorithm isn't in the registry. Treated as fail-safe: never marked approved, raises a low-severity "unknown algorithm" finding so it can be reviewed. |
Where the Common Algorithms Sit
Hashes Symmetric Ciphers Asymmetric / Signatures Password Hashing Transport / Protocols The full registry is browsable in the Dashboard under Catalog → Algorithms , which shows status, min-key-bits, recommended replacement, PQC note, and the upstream standard reference. There is no CLI equivalent.
| Algorithm | Status | Notes |
|---|---|---|
| SHA-256 / SHA-384 / SHA-512 | Recommended | Workhorses. Use any. |
| SHA3-256 / SHA3-512 | Recommended | Equivalent to SHA-2 in strength; structurally different (sponge construction). |
| BLAKE2 / BLAKE3 | Recommended | Faster than SHA-2 in software; widely adopted. |
| SHA-224 | Acceptable | Truncated SHA-256. Generally avoid for new designs. |
| SHA-1 | Deprecated | Broken for collision resistance. OK only inside HMAC. Deadline 2025-12-31. |
| MD5 / MD4 / MD2 / MD6 | Disallowed | Cryptographically broken. Any use is a finding. |
| Algorithm | Status | Notes |
|---|---|---|
| AES-256-GCM / AES-256-GCM-SIV | Recommended | Default modern AEAD. |
| ChaCha20-Poly1305 / XChaCha20-Poly1305 | Recommended | Fast in software; equivalent strength to AES-256-GCM. |
| AES-128-GCM | Acceptable | Fine. 128-bit security is still well above brute-force. |
| AES-CBC + HMAC | Acceptable | Encrypt-then-MAC pattern; requires careful implementation. |
| AES-CBC without MAC | Deprecated | Vulnerable to padding-oracle attacks. |
| AES-ECB | Disallowed | Reveals plaintext patterns. |
| 3DES / DES / RC2 / RC4 / Blowfish | Disallowed | Broken or fatally weak. |
| Algorithm | Status | Notes |
|---|---|---|
| Ed25519 / X25519 | Recommended | Modern elliptic-curve choices. Recommended until quantum threat materializes. |
| ML-KEM (Kyber) / ML-DSA (Dilithium) / SLH-DSA (SPHINCS+) | Recommended | NIST PQC standards. Use for new designs. |
| RSA-OAEP encryption (>= 2048) | Acceptable | OK for now; quantum-vulnerable; deadline 2030. |
| ECDSA P-256 / P-384 | Acceptable | OK for now; quantum-vulnerable; deadline 2030. |
| RSA-PSS signatures (>= 2048) | Acceptable | OK for now; deadline 2030. |
| DH (classical, >= 2048) | Acceptable | SP 800-56A Rev.3 approves finite-field DH with approved groups of 2048 bits and up. Quantum-vulnerable, so plan the PQC migration; below 2048 bits it is Disallowed. |
| RSA-PKCS#1 v1.5 encryption | Deprecated | Vulnerable to Bleichenbacher; migrate to OAEP. |
| RSA < 2048 | Deprecated | Insufficient key size. Deadline 2025-12-31. |
| DSA (any key size) | Disallowed | FIPS 186-5 withdrew DSA for signature generation. A larger key does not help; any use is a finding. |
| RSA-1024 / DSA-1024 | Disallowed | Brute-force feasible. |
| Algorithm | Status | Notes |
|---|---|---|
| Argon2id | Recommended | Modern memory-hard PHF. First choice for new designs. |
| bcrypt (cost >= 12) | Recommended | Mature, widely supported. Increase cost over time. |
| scrypt (N >= 32768) | Recommended | Memory-hard. Watch parameter selection. |
| PBKDF2-HMAC-SHA-256 (>= 600 000 iterations) | Acceptable | OK with high iteration count; not memory-hard. |
| bcrypt (cost 10-11) | Deprecated | Too cheap for modern hardware. Bump to >= 12. |
| PBKDF2 with low iterations | Deprecated | Brute-forceable on modern GPUs. |
| Single MD5 / SHA-* of a password | Disallowed | Not a password hash. Migrate immediately. |
| Protocol | Status | Notes |
|---|---|---|
| TLS 1.3 | Recommended | Modern handshake; forward-secrecy by default. |
| TLS 1.2 (modern cipher suites) | Acceptable | Avoid CBC suites; prefer GCM / ChaCha20-Poly1305. |
| TLS 1.1 | Deprecated | Removed by IETF; deadline 2025-12-31. |
| TLS 1.0 | Disallowed | Removed by IETF; treat any usage as a finding. |
| SSL 3.0 / SSL 2.0 | Disallowed | Broken (POODLE, ...). |
Minimum Key Sizes
The same algorithm name can be Acceptable above a threshold and Deprecated below it. The registry encodes minKeyBits (for asymmetric and symmetric) and minOutputBits (for hashes) so the verdict adapts to actual key sizes in the code. The Policy Engine lets you tighten these via minimums in your .korthex_policy.json - e.g. require RSA ≥ 3072 or AES ≥ 256.
| Algorithm | minKeyBits | Below = |
|---|---|---|
| RSA | 2048 | Deprecated; RSA-1024 and below: Disallowed. |
| ECC / ECDSA | 256 | Below: Deprecated. |
| AES (symmetric) | 128 | Below: Disallowed (no such standard variant in practice). |
| DH (classical Diffie-Hellman) | 2048 | Below: Deprecated. |
| SHA family (output bits) | 224 | Below: Deprecated. SHA-1 (160 bits): Deprecated; MD5 (128 bits): Disallowed. |
Algorithm Name Normalization
The registry is case-insensitive and separator-insensitive. All of the following names resolve to the same rule: AES-256-GCM aes 256 gcm AES_256_GCM aes256gcm AES/256/GCM For in-house wrappers, register them in the policy file via algorithm-aliases so the registry maps your wrapper name to the underlying algorithm. See the Policy File Syntax section.
Deadlines & Standards Tracking
Every Deprecated entry carries an upstream deadline from the standards bodies. Findings show this deadline so engineers know how much runway they have. The registry is updated as standards evolve. Refresh bundles are delivered monthly (or pulled automatically on online installations). In air-gapped mode, refresh bundles are applied through the Dashboard. The CLI has no import subcommand and no path that reads a .cjsn bundle.
| Authority | What it dictates |
|---|---|
| NIST SP 800-131A | Per-algorithm deprecation timeline. The registry tracks each transition date. |
| NIST FIPS 203 / 204 / 205 | PQC standards (ML-KEM / ML-DSA / SLH-DSA). Marked Recommended in the registry. |
| BSI TR-02102-1 | Federal Office for Information Security (Germany) crypto recommendations. Tracked alongside NIST. |
| NSA CNSA 2.0 | National Security Algorithms 2.0. PQC transition timeline for national-security systems. |
| IETF RFC deprecations | TLS 1.0 / 1.1 EOL, SHA-1 in certificates, etc. |
Inspecting the Registry
Registry inspection is Dashboard-only today. There is no CLI command that lists, searches, or exports the algorithm registry - korthex baseline is a different thing entirely (see below). Browse the registry under Catalog → Algorithms , or read the status of a specific algorithm off a scan: every finding carries algorithm , status , baseline_id and replace_with .
The finding baseline (korthex baseline)
korthex baseline does not manage the algorithm registry. It manages the crypto-finding baseline - the record of which findings are already known, so CI can fail on new ones only. It writes .korthex_baseline.krx into the project root. # Create the baseline from the latest scan korthex baseline init # Rebuild it after intentional fixes korthex baseline refresh # Show NEW and RESOLVED findings against the current baseline korthex baseline diff # Exit 0 when the scan matches the baseline, exit 2 on drift korthex baseline verify korthex check --baseline <file> consumes the same file for the NEW-finding gate (exit 20).