[ ] Threat Model documentato (Asset, capacità attaccante, confini fiducia, modalità fallimento)
[ ] Selezione algoritmo esplicita e giustificata (niente „crypto fatto in casa“; evitare primitive obsolete)
[ ] Gestione materiale chiavi: Chiavi/materiale seed mai registrati, mai persistiti involontariamente, conservati in container sicuri
[ ] Casualità: Casualità crittografica da CSPRNG approvato; niente RNG ad-hoc; niente seed basati sul tempo
[ ] Regole Nonce/IV applicate by design (unici dove richiesto; mai riutilizzati; preferibilmente generati internamente)
[ ] Confronti Constant-time per MAC, hash e controlli uguaglianza dipendenti da segreti
[ ] Postura Side-channel specificata (aspettative Timing/Cache/Power) e operazioni rilevanti hanno mitigazioni
[ ] Validazione Input rigorosa e rifiuta codifiche malformate; controlli lunghezza prima dell'allocazione
[ ] Zeroization / Lifecycle: Buffer segreti azzerati dove possibile; oggetti chiave hanno pattern di disposal deterministici
[ ] Comportamento Errori: Fallimenti crypto restituiscono errori non rivelatori (nessun leak oracolo); chiamanti non possono distinguere branch di fallimento dipendenti da segreti
[ ] Versioning & Agilità: Formati Protocol/Blob sono versionati; parametri codificati con ciphertext/firma dove richiesto
[ ] Test Interoperabilita esistono (Golden Vectors o test cross-implementazione)
[ ] Test Negativi esistono (Tamper, Replay, Truncation, Wrong Key, Wrong Nonce/IV, Wrong Context)