Come funziona la catena di hash
L’hash di ogni nuovo evento viene calcolato a partire da tre input: l’hash dell’evento precedente, il payload canonico dell’evento corrente e il timestamp corrente in millisecondi.Payload canonico
Il payload canonico è una serializzazione JSON deterministica dei campi principali dell’evento:I campi arricchiti dal worker —
country, city, ip_address, e i campi della catena stessa (chain_seq, hash, prev_hash) — sono deliberatamente esclusi dal payload canonico. Questo garantisce che l’hash rimanga stabile indipendentemente da come AuditRails arricchisce l’evento dopo l’ingestione.Evento genesi
Il primissimo evento nella catena di un tenant usa 64 caratteri zero (0000...0000) come previous_hash. L’hash di ogni evento successivo dipende da tutti gli eventi precedenti, formando una catena ininterrotta a partire dal primo record mai scritto.
Isolamento per tenant
Ogni tenant mantiene una catena completamente indipendente. Non esiste alcuna dipendenza tra tenant, quindi un’esecuzione di verifica per la tua organizzazione controlla solo i tuoi eventi.Perché il rilevamento delle manomissioni funziona
La sicurezza della catena deriva dalla natura unidirezionale di SHA-256:
Una catena valida è la prova crittografica che ogni evento esiste esattamente come è stato scritto, nell’ordine corretto, senza lacune.
Verifica tramite la dashboard
Puoi ispezionare i singoli eventi e navigare la catena direttamente dall’interfaccia.1
Apri la vista Log
Vai su Dashboard → Log e individua l’evento che vuoi ispezionare.
2
Clicca sull'evento
Si apre il pannello di dettaglio dell’evento. Scorri fino alla sezione Catena.
3
Naviga la catena
Il pannello mostra l’
hash e il chain_seq dell’evento corrente, insieme ai link agli eventi precedente e successivo nella catena. Ogni evento collegato mostra il proprio hash così puoi confermare visivamente che corrispondano.Verifica tramite l’API
L’endpoint/v1/events/verify controlla un intervallo di eventi e restituisce un singolo risultato pass/fail con diagnostica completa.
Endpoint
Parametri di query
Campi della risposta
Esempi
Risposta integra
Risposta con catena interrotta
Per i revisori: verifica indipendente
Se stai conducendo un audit esterno, puoi verificare i log di AuditRails senza affidarti all’output di verifica della piattaforma stessa.1
Esegui la verifica per il periodo di audit
Chiama
GET /v1/events/verify impostando from_seq e to_seq per coprire il periodo di audit. Conferma che la risposta contenga "valid": true.2
Esporta il CSV dei log
Da Dashboard → Log, applica un filtro per data relativo al periodo di audit ed esporta in CSV. L’export include le colonne
chain_seq e hash per ogni evento.3
Ricalcola gli hash in modo indipendente
Usando la formula del payload canonico e i dati esportati, ricalcola l’hash di ogni evento e confrontalo con la colonna
hash nel CSV. Qualsiasi discrepanza indica una manomissione.Il payload canonico è sempre il JSON di: log_id, tenant_id, action, actor_id, resource, metadata — in quest’ordine di chiavi, senza spazi extra.4
Documenta i risultati
Registra i valori
first_seq, last_seq, checked e valid della risposta API come parte del tuo pacchetto di evidenze di audit. Un risultato valid: true che copre l’intero periodo di audit soddisfa i requisiti di integrità della catena di hash per SOC 2, ISO 27001 A.8.15, DORA Art.6, PCI DSS 10.5 e il controllo di integrità dei log AMS-INT-2 del provvedimento del Garante.