Alterazione di un documento già emesso
Mitigazione: Hash SHA-256 nel manifest firmato; qualunque modifica cambia il digest.
Rischio residuo: Nessuno noto se il verificatore usa la chiave pubblica corretta.
Documento pubblico e stampabile destinato a revisori, clienti tecnici e controparti legali. Descrive lo schema crittografico, il ciclo di vita delle chiavi, la procedura di verifica indipendente e il modello delle minacce.
| Algoritmo di firma | ECDSA su curva NIST P-256 (secp256r1) |
|---|---|
| Digest | SHA-256 |
| Identificatore JOSE equivalente | ES256 |
| Formato chiave pubblica | JWK (kty EC, crv P-256), pubblicata nel keyset |
| Payload firmato | Serializzazione canonica del manifest o del sigillo di catena |
| Implementazione | WebCrypto SubtleCrypto, nessuna libreria crittografica di terze parti |
| Chiave privata | Mai esportata verso il client, mai inclusa nei pacchetti |
| Concatenamento | entry_hash = SHA-256(prev_hash ‖ contenuto evento canonico) |
Scarica audit HTML e manifest JSON firmato dalla pagina di Release Evidence o dal link pubblico.
Calcola SHA-256 del documento e confrontalo con il valore dichiarato nel manifest.
Leggi il key_id nel manifest e recupera la chiave pubblica corrispondente nel keyset.
Verifica la firma ECDSA P-256 sul payload canonico con la chiave pubblica risolta.
Ricalcola prev_hash ed entry_hash evento per evento: qualunque discontinuità invalida la sequenza.
Verifica revoca ed ambiente: il verdetto finale è VALID, REVOKED oppure NOT_VERIFIED.
I passi 2–6 sono eseguibili interamente nel browser, senza contattare i nostri server, dalla pagina di verifica pubblica e dal verificatore offline.
Mitigazione: Hash SHA-256 nel manifest firmato; qualunque modifica cambia il digest.
Rischio residuo: Nessuno noto se il verificatore usa la chiave pubblica corretta.
Mitigazione: Concatenamento per hash con sequenza: la catena si rompe in modo rilevabile.
Rischio residuo: Troncamento dell'intera catena rilevabile solo confrontando con una copia esterna.
Mitigazione: Keyset versionato, rotazione periodica, revoca che porta a NOT_VERIFIED.
Rischio residuo: ALTO finché la chiave non risiede in HSM: è il gap dichiarato KM-4.
Mitigazione: Timestamp server nella catena sigillata e sequenza monotona degli eventi.
Rischio residuo: Senza TSA accreditata la data resta un'affermazione del sistema, non di un terzo.
Mitigazione: RLS owner-scoped, verifica pubblica solo per token, controlli automatici in CI.
Rischio residuo: Chi possiede il token di verifica accede al pacchetto: il token è la credenziale.
Mitigazione: Token ad alta entropia, rate limit sulla verifica pubblica, alert su enumerazione sospetta.
Rischio residuo: Rumore da scansioni automatiche: gestito come alert, non come blocco.
Mitigazione: Connettori isolati con timeout e coda con backoff: mai nel percorso critico del gate.
Rischio residuo: Ritardo nelle notifiche opzionali; esito Certified invariato per costruzione.
Mitigazione: Il nucleo esegue e sigilla prima dei connettori; nessun risultato di connettore rientra nel report.
Rischio residuo: Coperto da test automatici dedicati sull'isolamento dei connettori.
Mitigazione: Ruoli in tabella dedicata con funzione SECURITY DEFINER has_role; mai ruoli nel profilo.
Rischio residuo: Errore in una funzione SECURITY DEFINER aggirerebbe la RLS: superficie da rivedere in audit.
Mitigazione: Disclaimer unico su ogni superficie pubblica e testi approvati per la comunicazione.
Rischio residuo: Rischio comunicativo residuo: mitigato, non eliminato.