Audit Checklist
Checkpoints for auditors and IT security officers to validate post-quantum cryptography implementations.
Usage
This checklist serves as documentation for:
Note: Copy this checklist and fill in the status column (check/cross) during the audit.
1. Cryptographic Fundamentals
1.1 Algorithm Compliance
| # | Checkpoint | Requirement | Evidence | Status |
| — | ———– | ————- | ———- | — |
| 1.1.1 | Signature algorithm | NIST FIPS 204 (ML-DSA) | FIPS 204 | [ ] |
| 1.1.2 | Key encapsulation | NIST FIPS 203 (ML-KEM) | FIPS 203 | [ ] |
| 1.1.3 | Classical signatures | RSA-2048+ or ECDSA P-256+ | OpenSSL 3.6 | [ ] |
| 1.1.4 | Hash algorithms | SHA-256/384/512 | OpenSSL 3.6 | [ ] |
| 1.1.5 | No deprecated algorithms | No MD5, SHA-1, 3DES | Code review | [ ] |
1.2 Key Lengths
| # | Checkpoint | Minimum Length | Recommended | Status |
| — | ———– | ————– | ———– | — |
| 1.2.1 | ML-DSA signature key | ML-DSA-44 | ML-DSA-65 | [ ] |
| 1.2.2 | ML-KEM key encapsulation | ML-KEM-512 | ML-KEM-768 | [ ] |
| 1.2.3 | RSA key length | 2048 bit | 3072 bit | [ ] |
| 1.2.4 | ECDSA curve | P-256 | P-384 | [ ] |
| 1.2.5 | AES key length | 128 bit | 256 bit | [ ] |
2. Key Management
2.1 Key Generation
| # | Checkpoint | Requirement | Evidence | Status |
| — | ———– | ————- | ———- | — |
| 2.1.1 | Random number generator | CSPRNG (cryptographically secure) | OpenSSL RAND | [ ] |
| 2.1.2 | Entropy source | Hardware RNG or /dev/urandom | OS configuration | [ ] |
| 2.1.3 | No predictable seeds | No static seeds | Code review | [ ] |
2.2 Key Storage
| # | Checkpoint | Requirement | Evidence | Status |
| — | ———– | ————- | ———- | — |
| 2.2.1 | Private keys encrypted | AES-256-GCM or equivalent | PEM export test | [ ] |
| 2.2.2 | Password protection | Min. 20 characters, high entropy | Policy | [ ] |
| 2.2.3 | No plaintext keys | No plaintext in filesystem | grep search | [ ] |
| 2.2.4 | Access protection | File permissions (600) | ls -la | [ ] |
2.3 Key Derivation
| # | Checkpoint | Requirement | Evidence | Status |
| — | ———– | ————- | ———- | — |
| 2.3.1 | KDF algorithm | HKDF (RFC 5869) or Argon2id | API usage | [ ] |
| 2.3.2 | Salt used | Min. 16 bytes, random | Code review | [ ] |
| 2.3.3 | Iterations | PBKDF2 >=100,000, Argon2id >=3 | Configuration | [ ] |
| 2.3.4 | Memory-hard KDF for passwords | Argon2id preferred | API usage | [ ] |
2.4 Key Destruction
| # | Checkpoint | Requirement | Evidence | Status |
| — | ———– | ————- | ———- | — |
| 2.4.1 | Secure deletion | SecureZeroMemory or equivalent | Code review | [ ] |
| 2.4.2 | IDisposable implemented | Automatic resource release | API analysis | [ ] |
| 2.4.3 | No key material in logs | No keys logged | Log analysis | [ ] |
3. Certificate Management
3.1 PKI Structure
| # | Checkpoint | Requirement | Evidence | Status |
| — | ———– | ————- | ———- | — |
| 3.1.1 | Root CA offline | Air-gapped or HSM | Operations documentation | [ ] |
| 3.1.2 | Intermediate CA present | Separation of Root/Issuing | Certificate chain | [ ] |
| 3.1.3 | pathLenConstraint set | CA hierarchy limited | Certificate analysis | [ ] |
3.2 Certificate Extensions
| # | Checkpoint | Requirement | Evidence | Status |
| — | ———– | ————- | ———- | — |
| 3.2.1 | Basic Constraints | CA=true/false correct | openssl x509 -text | [ ] |
| 3.2.2 | Key Usage | keyCertSign only for CAs | openssl x509 -text | [ ] |
| 3.2.3 | Extended Key Usage | serverAuth/clientAuth | openssl x509 -text | [ ] |
| 3.2.4 | Subject Key Identifier | Present | openssl x509 -text | [ ] |
| 3.2.5 | Authority Key Identifier | For non-root CAs | openssl x509 -text | [ ] |
3.3 Hybrid Certificates
| # | Checkpoint | Requirement | Evidence | Status |
| — | ———– | ————- | ———- | — |
| 3.3.1 | PQ extension present | OID for ML-DSA signature | Certificate dump | [ ] |
| 3.3.2 | Classical signature present | RSA or ECDSA | Certificate dump | [ ] |
| 3.3.3 | Both signatures validatable | Dual validation | Test script | [ ] |
4. Configuration
4.1 CryptoConfig
| # | Checkpoint | Requirement | Evidence | Status |
| — | ———– | ————- | ———- | — |
| 4.1.1 | DefaultMode set | Hybrid or PostQuantum | Code review | [ ] |
| 4.1.2 | OpenSSL path configured | Path to libcrypto.so/dll | Environment variable | [ ] |
| 4.1.3 | FIPS mode enabled (optional) | For regulated environments | OpenSSL config | [ ] |
4.2 OpenSSL
| # | Checkpoint | Requirement | Evidence | Status |
| — | ———– | ————- | ———- | — |
| 4.2.1 | Version >=3.6.0 | PQ algorithms available | openssl version | [ ] |
| 4.2.2 | No outdated version | Security updates | Changelog | [ ] |
| 4.2.3 | OQS provider not needed | Native in OpenSSL 3.6 | openssl list -providers | [ ] |
5. Operations
5.1 Revocation
| # | Checkpoint | Requirement | Evidence | Status |
| — | ———– | ————- | ———- | — |
| 5.1.1 | CRL configured | Distribution point in certs | Certificate analysis | [ ] |
| 5.1.2 | CRL regularly updated | Max. 24h/7d per policy | Scheduler/Cron | [ ] |
| 5.1.3 | OCSP available (optional) | AIA extension in certs | Certificate analysis | [ ] |
5.2 Monitoring
| # | Checkpoint | Requirement | Evidence | Status |
| — | ———– | ————- | ———- | — |
| 5.2.1 | Certificate expiry monitored | Alerting before expiry | Monitoring config | [ ] |
| 5.2.2 | Crypto operations logged | Audit trail | Log analysis | [ ] |
| 5.2.3 | Errors alerted | Exceptions logged | Alerting config | [ ] |
6. Documentation
| # | Checkpoint | Requirement | Evidence | Status |
| — | ———– | ————- | ———- | — |
| 6.1 | Crypto concept present | BSI CON.1 | Concepts | [ ] |
| 6.2 | Algorithms documented | Selection justified | Algorithms | [ ] |
| 6.3 | API documented | Complete reference | API | [ ] |
| 6.4 | Scenarios described | Implementation examples | Scenarios | [ ] |
| 6.5 | Migration path documented | Classic→Hybrid→PQ | Migration | [ ] |
Summary
| Category | Checkpoints | Passed | Not Passed |
| ———– | ———— | ———– | —————– |
| 1. Cryptographic Fundamentals | 10 | | | |
| 2. Key Management | 14 | | | |
| 3. Certificate Management | 11 | | | |
| 4. Configuration | 6 | | | |
| 5. Operations | 6 | | | |
| 6. Documentation | 5 | | | |
| Total | 52 | | | |
Audit Result
| Field | Value |
| —— | —— |
| Auditor | |
| Organization | |
| Date | |
| Audited System | |
| WvdS Version | |
| OpenSSL Version | |
| Result | [ ] Passed [ ] Not Passed [ ] Conditional |
| Next Audit | __ |
Further Reading
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional