Checklist di audit
Punti di verifica per auditor e responsabili della sicurezza IT per la validazione dell'implementazione della crittografia post-quantum.
Utilizzo
Questa checklist serve come documentazione per:
Nota: Copiare questa checklist e compilare la colonna stato (✓/✗) durante l'audit.
1. Fondamenti crittografici
| # | Punto di verifica | Requisito | Documentazione | ✓ |
| — | ———– | ————- | ———- | — |
| 1.1.1 | Algoritmo di firma | NIST FIPS 204 (ML-DSA) | FIPS 204 | ☐ |
| 1.1.2 | Incapsulamento chiavi | NIST FIPS 203 (ML-KEM) | FIPS 203 | ☐ |
| 1.1.3 | Firme classiche | RSA-2048+ o ECDSA P-256+ | OpenSSL 3.6 | ☐ |
| 1.1.4 | Algoritmi hash | SHA-256/384/512 | OpenSSL 3.6 | ☐ |
| 1.1.5 | Nessun algoritmo obsoleto | No MD5, SHA-1, 3DES | Code-Review | ☐ |
1.2 Lunghezze chiavi
| # | Punto di verifica | Minimo | Raccomandato | ✓ |
| — | ———– | ————– | ———– | — |
| 1.2.1 | Chiave firma ML-DSA | ML-DSA-44 | ML-DSA-65 | ☐ |
| 1.2.2 | Incapsulamento ML-KEM | ML-KEM-512 | ML-KEM-768 | ☐ |
| 1.2.3 | Lunghezza chiave RSA | 2048 Bit | 3072 Bit | ☐ |
| 1.2.4 | Curva ECDSA | P-256 | P-384 | ☐ |
| 1.2.5 | Lunghezza chiave AES | 128 Bit | 256 Bit | ☐ |
2. Gestione chiavi
2.1 Generazione chiavi
| # | Punto di verifica | Requisito | Documentazione | ✓ |
| — | ———– | ————- | ———- | — |
| 2.1.1 | Generatore numeri casuali | CSPRNG (crittograficamente sicuro) | OpenSSL RAND | ☐ |
| 2.1.2 | Fonte di entropia | Hardware-RNG o /dev/urandom | Configurazione OS | ☐ |
| 2.1.3 | Nessun seed prevedibile | Nessun seed statico | Code-Review | ☐ |
2.2 Archiviazione chiavi
| # | Punto di verifica | Requisito | Documentazione | ✓ |
| — | ———– | ————- | ———- | — |
| 2.2.1 | Chiavi private cifrate | AES-256-GCM o equivalente | Test export PEM | ☐ |
| 2.2.2 | Protezione password | Min. 20 caratteri, alta entropia | Policy | ☐ |
| 2.2.3 | Nessuna chiave in chiaro | Nessun plaintext nel filesystem | Ricerca grep | ☐ |
| 2.2.4 | Protezione accesso | Permessi file (600) | ls -la | ☐ |
2.3 Derivazione chiavi
| # | Punto di verifica | Requisito | Documentazione | ✓ |
| — | ———– | ————- | ———- | — |
| 2.3.1 | Algoritmo KDF | HKDF (RFC 5869) o Argon2id | Uso API | ☐ |
| 2.3.2 | Salt utilizzato | Min. 16 Bytes, casuale | Code-Review | ☐ |
| 2.3.3 | Iterazioni | PBKDF2 ≥100.000, Argon2id ≥3 | Configurazione | ☐ |
| 2.3.4 | KDF Memory-Hard per password | Argon2id preferito | Uso API | ☐ |
2.4 Distruzione chiavi
| # | Punto di verifica | Requisito | Documentazione | ✓ |
| — | ———– | ————- | ———- | — |
| 2.4.1 | Cancellazione sicura | SecureZeroMemory o equivalente | Code-Review | ☐ |
| 2.4.2 | IDisposable implementato | Rilascio automatico risorse | Analisi API | ☐ |
| 2.4.3 | Nessun materiale chiave nei log | Nessuna chiave registrata | Analisi log | ☐ |
3. Gestione certificati
3.1 Struttura PKI
| # | Punto di verifica | Requisito | Documentazione | ✓ |
| — | ———– | ————- | ———- | — |
| 3.1.1 | Root-CA offline | Air-Gapped o HSM | Doc. operativa | ☐ |
| 3.1.2 | Intermediate-CA presente | Separazione Root/Issuing | Catena certificati | ☐ |
| 3.1.3 | pathLenConstraint impostato | Gerarchia CA limitata | Analisi certificato | ☐ |
3.2 Estensioni certificato
| # | Punto di verifica | Requisito | Documentazione | ✓ |
| — | ———– | ————- | ———- | — |
| 3.2.1 | Basic Constraints | CA=true/false corretto | openssl x509 -text | ☐ |
| 3.2.2 | Key Usage | keyCertSign solo per CA | openssl x509 -text | ☐ |
| 3.2.3 | Extended Key Usage | serverAuth/clientAuth | openssl x509 -text | ☐ |
| 3.2.4 | Subject Key Identifier | Presente | openssl x509 -text | ☐ |
| 3.2.5 | Authority Key Identifier | Per CA non-Root | openssl x509 -text | ☐ |
3.3 Certificati ibridi
| # | Punto di verifica | Requisito | Documentazione | ✓ |
| — | ———– | ————- | ———- | — |
| 3.3.1 | Estensione PQ presente | OID per firma ML-DSA | Dump certificato | ☐ |
| 3.3.2 | Firma classica presente | RSA o ECDSA | Dump certificato | ☐ |
| 3.3.3 | Entrambe le firme validabili | Validazione duale | Script test | ☐ |
4. Configurazione
4.1 CryptoConfig
| # | Punto di verifica | Requisito | Documentazione | ✓ |
| — | ———– | ————- | ———- | — |
| 4.1.1 | DefaultMode impostato | Hybrid o PostQuantum | Code-Review | ☐ |
| 4.1.2 | Percorso OpenSSL configurato | Percorso a libcrypto.so/dll | Variabile ambiente | ☐ |
| 4.1.3 | Modalita FIPS attivata (opzionale) | Per ambienti regolamentati | Config OpenSSL | ☐ |
4.2 OpenSSL
| # | Punto di verifica | Requisito | Documentazione | ✓ |
| — | ———– | ————- | ———- | — |
| 4.2.1 | Versione ≥3.6.0 | Algoritmi PQ disponibili | openssl version | ☐ |
| 4.2.2 | Nessuna versione obsoleta | Aggiornamenti sicurezza | Changelog | ☐ |
| 4.2.3 | OQS-Provider non necessario | Nativo in OpenSSL 3.6 | openssl list -providers | ☐ |
5. Operazioni
5.1 Revoca
| # | Punto di verifica | Requisito | Documentazione | ✓ |
| — | ———– | ————- | ———- | — |
| 5.1.1 | CRL configurata | Distribution Point nei cert | Analisi certificato | ☐ |
| 5.1.2 | CRL aggiornata regolarmente | Max. 24h/7d secondo policy | Scheduler/Cron | ☐ |
| 5.1.3 | OCSP disponibile (opzionale) | Estensione AIA nei cert | Analisi certificato | ☐ |
5.2 Monitoring
| # | Punto di verifica | Requisito | Documentazione | ✓ |
| — | ———– | ————- | ———- | — |
| 5.2.1 | Scadenza certificati monitorata | Alerting prima della scadenza | Config monitoring | ☐ |
| 5.2.2 | Operazioni crypto registrate | Audit-Trail | Analisi log | ☐ |
| 5.2.3 | Errori segnalati | Eccezioni registrate | Config alerting | ☐ |
6. Documentazione
| # | Punto di verifica | Requisito | Documentazione | ✓ |
| — | ———– | ————- | ———- | — |
| 6.1 | Concetto crypto presente | BSI CON.1 | Concetti | ☐ |
| 6.2 | Algoritmi documentati | Scelta motivata | Algoritmi | ☐ |
| 6.3 | API documentata | Riferimento completo | API | ☐ |
| 6.4 | Scenari descritti | Esempi implementazione | Scenari | ☐ |
| 6.5 | Percorso migrazione documentato | Classic→Hybrid→PQ | Migrazione | ☐ |
Riepilogo
| Categoria | Punti verifica | Superati | Non superati |
| ———– | ———— | ———– | —————– |
| 1. Fondamenti crittografici | 10 | | | |
| 2. Gestione chiavi | 14 | | | |
| 3. Gestione certificati | 11 | | | |
| 4. Configurazione | 6 | | | |
| 5. Operazioni | 6 | | | |
| 6. Documentazione | 5 | | | |
| Totale | 52 | | | |
Risultato audit
| Campo | Valore |
| —— | —— |
| Auditor | |
| Organizzazione | |
| Data | |
| Sistema verificato | |
| Versione WvdS | |
| Versione OpenSSL | |
| Risultato | ☐ Superato ☐ Non superato ☐ Con riserve |
| Prossimo audit | __ |
Approfondimenti
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional