11 min di lettura
Log di compliance che gli auditor possono verificare senza fidarsi del fornitore
Ancora una Merkle root delle tue prove di compliance su Cardano: un auditor potrà poi confermare che un determinato report o log è stato vincolato entro un momento pubblico — senza fidarsi del sistema che lo ha prodotto.

Le prove di compliance sono più convincenti quando vengono ancorate al di fuori del sistema che le ha create. Lo schema è semplice: a intervalli regolari calcola l'hash dei tuoi report, dei log di audit e degli snapshot dei controlli, raggruppa quegli hash in un'unica Merkle root e pubblica quella root come Proof of Existence Label 309 su Cardano. In seguito, un auditor che disponga soltanto delle foglie e del riferimento della transazione potrà confermare che un determinato item faceva parte del batch vincolato e che il batch esisteva entro un block time pubblico — senza fidarsi del tuo database, della tua dashboard o della tua parola.
Questo non dimostra che ogni evento registrato sia vero. Rende molto più difficile nascondere una riscrittura silenziosa.
Perché «è nel nostro sistema» è una risposta debole per un auditor?
La maggior parte delle prove di compliance vive dentro i sistemi del fornitore: comodo, ma con un problema di fiducia. Se le prove sono conservate solo nella stessa piattaforma che ha prodotto il report, chi le esamina in seguito si ritrova con domande a cui il sistema non può rispondere su se stesso:
- Il log potrebbe essere stato modificato a posteriori?
- Il report è stato generato prima o dopo la scadenza?
- Questo snapshot dei controlli esisteva davvero in quel momento?
- Le prove sono state inserite a posteriori dopo un incidente?
- Il PDF esportato è lo stesso che è stato esaminato?
- Il fornitore o un amministratore potrebbe aver riscritto il record?
I sistemi interni possono essere ben controllati e restare comunque sistemi interni. I timestamp, lo storico delle modifiche e lo stato «alla data» provengono tutti dalla stessa parte il cui comportamento è sotto esame. La Proof of Existence aggiunge un testimone esterno alla cronologia: un record indipendente che attesta che un dato digest esisteva entro un dato momento pubblico.
Quali prove dovresti ancorare?
Ancora le prove che potrebbero contare in seguito — tutto ciò che un'autorità, un cliente, un consiglio di amministrazione o un tribunale potrebbe un giorno chiederti di riprodurre così com'era a una data precisa. Candidati comuni:
- report di compliance e di trasparenza;
- valutazioni del rischio;
- snapshot dei controlli;
- log di audit;
- revisioni degli accessi;
- approvazioni di policy;
- record di governance dell'AI e di valutazione dei modelli;
- report di content moderation;
- cronologie degli incidenti;
- log di risposta alle vulnerabilità;
- deliverable di sicurezza per i clienti;
- documentazione destinata alle autorità;
- registri dei trattamenti di dati.
Le prove vere e proprie possono restare private. Il record pubblico si vincola solo a un hash, oppure a una Merkle root su molti hash — mai al contenuto sottostante.
Perché raggruppare le prove in una Merkle root invece di ancorare ogni file?
Le prove di compliance sono di solito un flusso, non un singolo file. Una giornata può produrre centinaia o migliaia di record; un periodo di audit può estendersi su molti sistemi; una sola piattaforma può generare log di content moderation, supporto clienti, sicurezza, valutazione dei modelli e risposta agli incidenti tutti insieme. Ancorare ogni item in una transazione a sé sarebbe lento e costoso.
Un Merkle tree risolve il problema. Calcoli l'hash di ogni item per ottenere una foglia, ripieghi le foglie in un'unica root da 32 byte e pubblichi quella singola root. La lista ordinata delle foglie resta off-chain. In seguito, chiunque possieda le foglie può dimostrare che un determinato report o una determinata voce di log era inclusa, grazie a una piccola inclusion proof che cresce solo con il logaritmo della dimensione del batch — senza dover mettere on-chain alcun record privato.
La root è pubblica; le prove sottostanti restano sotto i tuoi controlli. Se stai confrontando questo approccio con uno per-file, un solo record per migliaia di file ripercorre i compromessi in gioco.
Cosa verifica davvero un auditor?
Un auditor verifica la catena che va da una singola prova fino alla blockchain. Per un item, i passaggi sono:
- il file, il report o la voce di log in sé;
- il suo hash;
- la Merkle inclusion proof che collega quell'hash alla root;
- la root registrata nel record Label 309;
- l'orario della transazione Cardano;
- l'eventuale firma sul record;
- la tua policy che descrive la cadenza di registrazione.
Costruire l'albero e verificare una inclusion proof sono pura computazione — nessun server, nessun account, nessuna rete. Chiunque disponga delle foglie e della root on-chain può ricavare in modo indipendente qualsiasi prova, ed è proprio questo il punto: la verifica non dipende dalla tua collaborazione.
Questo risponde a una domanda circoscritta ma utile: questa prova esatta faceva parte di un batch vincolato in quel momento? Non è un giudizio di audit completo, ma offre all'auditor un'àncora esterna per la cronologia delle prove che nessun sistema interno è in grado di fornire.
Come si inserisce in un quadro normativo sempre più stringente?
Molti regimi normativi vanno verso più documentazione, più reporting e una trasparenza leggibile dalle macchine. Il Digital Services Act dell'UE ne è un esempio chiaro. Impone ai servizi intermediari di pubblicare report di trasparenza e ai servizi di hosting di emettere motivazioni per le decisioni di moderazione, e aggiunge obblighi più gravosi per le piattaforme online e i motori di ricerca di dimensioni molto grandi: reporting più frequente, accesso ai dati per ricercatori abilitati, un canale anonimo per i whistleblower e valutazioni annuali del rischio insieme a report di audit indipendenti. La Commissione ha inoltre standardizzato il reporting di trasparenza in un formato comparabile e leggibile dalle macchine.
Ancorare gli hash delle prove non basta di per sé a soddisfare una normativa, e questo articolo non è una consulenza legale — le prove giuste dipendono dalla legge, dalla giurisdizione, dall'azienda e dal flusso di lavoro. Ma il bisogno di fondo è costante: i team devono sempre più spesso produrre prove ripetibili capaci di reggere a un esame. Un vincolo con timestamp può aiutare a dimostrare che le prove esistevano prima della revisione, della scadenza, dell'incidente o della controversia, anziché essere state assemblate in risposta a questi.
Cosa significa davvero «senza fidarsi del fornitore» qui?
Fidarsi del fornitore significa affidare a un'unica piattaforma e al suo database l'intera storia delle prove. Tre situazioni familiari mostrano dove questo schema si rompe:
- Se la tua dashboard di compliance dice che un controllo era a posto il mese scorso, puoi dimostrare che la dashboard lo diceva il mese scorso — e non che è stata modificata ieri?
- Se il tuo strumento di governance dell'AI dice che un report di moderazione esisteva prima di un incidente pubblico, puoi dimostrare che il report non è stato rigenerato a posteriori?
- Se la tua piattaforma GRC esporta un PDF, puoi dimostrare che quel PDF esatto è quello che è stato esaminato?
Un record Label 309 non rimuove il fornitore dal tuo flusso di lavoro. Il fornitore può continuare a generare report e a conservare le prove. Ciò che cambia è che la prova crea un vincolo esterno che il fornitore non può riscrivere silenziosamente in seguito senza spezzare la catena degli hash. («GRC» qui significa governance, risk and compliance — la categoria di strumenti che comprende piattaforme come Vanta, Drata e simili.)
Cosa dovrebbe contenere il manifest?
Un manifest rende la prova comprensibile a chiunque la verifichi in seguito. Un manifest di compliance potrebbe registrare:
- il periodo di riferimento delle prove;
- il nome del sistema;
- gli identificativi del controllo e del report;
- il nome e l'hash del file;
- il tipo di record;
- il proprietario;
- il timestamp di export;
- la versione della policy;
- lo stato della firma;
- la posizione di storage;
- un riferimento alla inclusion proof.
Il manifest può essere tenuto privato, pubblicato apertamente o sigillato per destinatari specifici. Ciò che conta è che sia stabile e documentato a sufficienza per poter essere verificato in seguito. Un manifest mal documentato può lasciare una prova crittograficamente valida ma confusa sul piano operativo — i byte tornano, ma nessuno sa più dire a cosa ci si stesse vincolando.
Con quale frequenza dovresti ancorare?
Adegua la cadenza al rischio. Alcuni team ancorano ogni giorno; altri ogni ora, per ogni incidente, per ogni release, per ogni ciclo di audit o per ogni report normativo.
Per gli obblighi di monitoraggio continuo, una cadenza regolare è proprio il punto. Un report generato il giorno prima di un audit è molto meno persuasivo di una catena di vincoli periodici che mostra come le prove siano state acquisite nel tempo. La cadenza può diventare parte del controllo stesso: se la tua policy dice che ogni giorno viene pubblicata una root, un giorno mancante è visibile a tutti. La stessa logica rende la Proof of Existence un'ottima soluzione per le prove legali e l'e-discovery, dove il quando qualcosa è stato registrato è esattamente la questione contesa.
I record di compliance dovrebbero essere sigillati?
Spesso sì. Le prove di compliance possono contenere dati operativi sensibili, dati personali, dettagli di sicurezza o documenti aziendali riservati. Pubblicarne il testo in chiaro sarebbe un errore. Label 309 supporta tre schemi, che puoi anche combinare:
- Solo-hash — pubblica solo il vincolo e tieni le prove al tuo interno.
- Merkle root — pubblica una root su molti elementi di prova privati.
- Sigillato — conserva le prove cifrate o un manifest a un URI indirizzato per contenuto e incapsula la chiave di decifratura per destinatari specifici, così la prova e il testo cifrato possono viaggiare insieme mentre solo chi detiene le chiavi autorizzate può leggere il contenuto.
Sigillare è utile quando vuoi un timestamp verificabile e la riservatezza allo stesso tempo — per esempio, prove che potresti dover consegnare in seguito a un'autorità o a un auditor ma che non puoi pubblicare oggi. Tieni a mente i suoi limiti: un record sigillato dimostra il momento e l'integrità, non la segretezza per sempre. Un destinatario che decifra il contenuto può comunque divulgarne il testo in chiaro in seguito.
Cosa non dimostra tutto questo?
Una prova di esistenza dimostra che byte esatti esistevano entro un momento pubblico. Su questo è precisa, e su tutto il resto è silenziosa:
- Non dimostra che l'evento sottostante fosse vero. Se viene generato e vincolato un report falso, la prova mostra che il report falso esisteva — non può renderlo accurato.
- Non dimostra che il programma di compliance sia efficace.
- Non sostituisce i controlli sugli accessi, la gestione delle modifiche, l'integrità dei log, la separazione dei compiti, la revisione legale o le procedure di audit.
- Non dimostra che le prove siano complete a meno che il tuo processo e i tuoi controlli non supportino quell'affermazione in modo indipendente.
La Proof of Existence è uno strato di integrità delle prove, non un programma di compliance. Per l'insieme completo dei limiti, vedi cosa una prova non dimostra.
Qual è una buona prima implementazione?
Parti dai report che già generi, e da un solo flusso di prove anziché da tutti i sistemi in una volta:
- Scegli un report di compliance o uno snapshot dei controlli.
- Esportalo in un formato stabile e riproducibile.
- Calcola l'hash del file.
- Aggiungi l'hash a un manifest giornaliero o settimanale.
- Costruisci una Merkle root per il periodo.
- Pubblica un record Label 309, eventualmente firmato.
- Conserva il manifest, la lista delle foglie, le inclusion proof e il riferimento della transazione.
- Documenta il processo, così gli auditor sanno cosa significa la prova.
Poi estendi al flusso di prove successivo. Lo stesso schema si inserisce con naturalezza nell'automazione — i passaggi di build e pubblicazione si adattano a una pipeline CI/CD che ancora una root alla fine di ogni esecuzione.
Perché questo conta per un CEO, e non solo per un team di compliance?
Cambia la conversazione da «fidatevi della nostra dashboard» a «verificate la nostra cronologia delle prove» — e questa distinzione conta per clienti, auditor, consigli di amministrazione, investitori, autorità e revisioni interne degli incidenti.
Riduce anche la dipendenza da un singolo fornitore. Se il sistema del fornitore cambia, gli export spariscono o un account viene chiuso, tu conservi comunque i vincoli con timestamp alle prove che hai preservato. Le prove si verificano contro una blockchain pubblica e un explorer pubblico, senza alcun server dell'emittente nel mezzo. Vista così, non è davvero una funzionalità cripto. È resilienza delle prove.
In breve
Le prove di compliance dovrebbero essere difficili da riscrivere di nascosto. Calcola l'hash dei report e dei log che contano, raggruppali in Merkle root, pubblica record Label 309 con una cadenza chiara e conserva il manifest e le inclusion proof. Sigilla le prove sensibili quando il contenuto non può essere pubblico.
La prova non ti dirà se l'azienda fosse conforme. Può aiutare a dimostrare quali prove esistevano, quando esistevano e se un file successivo corrisponde ancora al record vincolato — e permette a un auditor di confermare tutto questo senza prendere i tuoi sistemi sulla fiducia.
Approfondimenti
- Un solo record per migliaia di file — come funzionano il Merkle batching e le inclusion proof.
- Cosa una prova non dimostra — i limiti della Proof of Existence.
- Lo standard aperto e le implementazioni di riferimento si trovano su label309.org e github.com/cardanowall. Label 309 è stato sottomesso al processo CIP di Cardano ed è in esame presso gli editor CIP come proposta di categoria Metadata (PR aperta).
- La panoramica della Commissione europea sugli obblighi di trasparenza del DSA descrive il tipo di prove ripetibili e leggibili dalle macchine che le piattaforme regolamentate devono produrre sempre più spesso.