Skip to main content
Back to docs
PQC-GO-AST-001PQC-GO-AST-005PQC-KEY-001PQC-ENTROPY-001PQC-FIPS-001PQC-IAC-001PQC-STATE-002Rule-dependent (HIGH–CRITICAL)CNSA 2.0 · NIST SP 800-131A

Deprecated & Broken Cryptographic Primitives

Severity: Rule-dependent (HIGH–CRITICAL)

This family covers cryptography that is already broken classically, before any quantum computer enters the picture. The Go AST scanner flags imports and call sites of MD5, SHA-1, RC4, and DES (PQC-GO-AST-001/005); per-language rules flag the same primitives plus legacy modes and short-key AES (for example PQC-JAVA-001, PQC-PYTHON-009, PQC-JAVASCRIPT-009, PQC-CPP-008). PQC-KEY-001 reports PEM private-key material committed to the repository — header plus key body, so a lone header constant in library code is not flagged. PQC-ENTROPY-001 flags weak PRNG use (math/rand, Math.random) where cryptographically secure entropy is required, PQC-IAC-001 flags legacy TLS protocol and cipher configuration, PQC-STATE-002 flags LMS/XMSS stateful signatures without visible state tracking, and PQC-FIPS-001 flags references to FIPS 140-2 certificates approaching Historical status.

Remediation checklist

  • Replace MD5 and SHA-1 with SHA-384 or SHA-512; replace DES, 3DES, RC4, and Blowfish with AES-256-GCM.
  • Draw key material from a cryptographically secure source (crypto/rand, secrets), never math/rand or Math.random.
  • Rotate any private key the scan finds committed to source control and remove it from history — .gitignore is not sufficient.

Code examples

Vulnerable — AES-128 keyed through PBKDF2-SHA1

// SHA-1 import is flagged (PQC-GO-AST-001); 128-bit key falls short of CNSA 2.0
key := pbkdf2.Key(pw, salt, 10000, 16, sha1.New)
block, _ := aes.NewCipher(key) // AES-128

Remediated — AES-256-GCM keyed through PBKDF2-SHA256

// 256-bit key, SHA-256 KDF, authenticated encryption
key := pbkdf2.Key(pw, salt, 600_000, 32, sha256.New)
block, _ := aes.NewCipher(key) // AES-256
aead, _ := cipher.NewGCM(block)

Preview remediation proposals

Preview proposed changes free with ciphermap fix --dry-run. Narrow MD5/SHA-1-to-SHA-256 proposals cover supported Go, Python, and Node ESM call shapes. RSA, protocol, persisted-digest, and unsupported migrations are declined with a reason. Proposal preview is Free. Production source publication remains disabled until the isolated Gate 2 transaction and recovery evidence are promoted; a Tier B licence does not enable apply actions in this release.

View DevSecOps pricing

Other rule families