OpenTimestamps
Questa pagina web è un’interfaccia per creare e/o verificare prove di marcatura temporale tramite il protocollo OpenTimestamps e i suoi calendar server Bitcoin pubblici e gratuiti. [Se hai fretta, salta questa introduzione e vai direttamente alla marcatura temporale.]
Una marcatura temporale dimostra che un documento esisteva in un determinato stato prima di un dato momento, conferendo a quel documento una data certa (analogamente a un timbro postale). La legge richiede che le date siano certificate da pubblici ufficiali e servizi notarili; per i documenti digitali, la marcatura temporale si basa solitamente sulla firma digitale di un’Autorità di Certificazione (CA).
In ogni caso, i dati digitali possono essere marcati temporalmente in modo sicuro tramite l’attestazione del loro valore di hash in una transazione su blockchain. Il valore di hash identifica in modo univoco il documento (come se ne fosse l’impronta digitale), mentre la transazione estende la marcatura temporale nativa della blockchain al valore di hash incluso, dimostrandone così l’esistenza in un determinato momento. Di conseguenza, l’attestazione su blockchain del valore di hash dimostra anche l’esistenza del documento originale stesso prima del momento della marcatura temporale.
La marcatura temporale e il contenuto di una transazione su blockchain sono garantiti dalla quantità di lavoro computazionale svolto dopo l’inclusione della transazione in un blocco della catena. Infatti, maggiore è il numero di blocchi aggiunti alla catena dopo un determinato blocco, più diventa computazionalmente oneroso manomettere i dati di quel blocco; persino il solo tentativo di alterare la marcatura temporale di una transazione diventa tecnicamente ed economicamente proibitivo, in particolare nel caso della blockchain Bitcoin.
Sebbene esistano molti modi per realizzare una marcatura temporale, OpenTimestamps è un protocollo aperto, indipendente dal fornitore e dalla specifica blockchain, che definisce un insieme di operazioni per creare marcature temporali su blockchain dimostrabili e successivamente verificarle in modo indipendente; come tale, consente la verificabilità da parte di terzi ed è idoneo a soddisfare requisiti normativi.
Le prove di attestazione di OpenTimestamps possono essere verificate senza dipendere da alcun server, fornitore o infrastruttura centralizzata, semplicemente utilizzando una copia locale della blockchain (ad esempio, un full node Bitcoin). La minimizzazione della fiducia è ottenuta grazie a questa architettura distribuita, decentralizzata, indipendente, non censurabile e indipendente dalle giurisdizioni. Questa interfaccia web è soltanto uno strumento di comodo e, poiché una pagina web non può accedere al filesystem locale, per la verifica fa affidamento su block-explorer Bitcoin pubblici (ad esempio, blockstream.info) anziché a una copia locale della blockchain.
Per evitare l’inefficienza di una transazione su blockchain per ogni marcatura temporale, un server OpenTimestamps fornisce l’aggregazione di più hash di documenti in una struttura dati ad albero di Merkle e attesta solamente l’hash della radice dell’albero di Merkle. L’inclusione di un valore di hash come foglia in un albero di Merkle può essere dimostrata crittograficamente, e la relativa prova fa parte dell’attestazione; di conseguenza, la singola attestazione della radice dell’albero attesta implicitamente tutte le foglie. Questo approccio di aggregazione prima dell’attestazione consente una scalabilità pressoché illimitata.
Sebbene chiunque possa effettuare una marcatura temporale con qualsiasi blockchain permissionless pagando le opportune commissioni di transazione (utilizzando il protocollo OpenTimestamps o qualsiasi approccio alternativo), per comodità sono disponibili più calendar server OpenTimestamps pubblici (ad esempio, btc.ots.dgi.io), utilizzabili gratuitamente senza alcuna registrazione o API key. Un singolo calendar server può offrire i propri servizi a più client OpenTimestamps remoti: le marcature temporali verificabili vengono create senza alcun costo per i client. I calendar server OpenTimestamps pubblici e gratuiti utilizzano Bitcoin come notaio della marcatura temporale, ovvero effettuano una transazione Bitcoin per attestare il valore di hash della radice nella blockchain Bitcoin.
Timestamp e verifica
Utilizza il riquadro sottostante per:
Quando un file viene trascinato nel riquadro:
- il suo valore di hash viene calcolato localmente all’interno del browser senza divulgare il documento a terzi, nemmeno ai server OpenTimestamps, preservando la riservatezza;
- l’hash viene quindi inviato a più server OpenTimestamps pubblici e ridondanti per ottenere una prova di attestazione della sua esistenza (marcatura temporale);
- viene scaricata una ricevuta di invio (come file di tipo .ots); questa non è ancora la prova di attestazione: è incompleta e non può essere verificata immediatamente, poiché l’inclusione della transazione nella blockchain può richiedere fino a un’ora (o anche di più in alcune circostanze).
Col tempo, il valore di hash verrà attestato in un blocco: a quel punto, i server a cui è stato inviato l’hash potranno aggiornare la ricevuta di invio a prova di attestazione. Finché almeno un server funziona correttamente, la marcatura temporale è garantita.
Se il file trascinato nel riquadro è una ricevuta di invio (file di tipo *.ots):
- se disponibile, viene scaricato dai calendar server un aggiornamento a prova di attestazione;
- la prova, se presente, viene verificata tramite block-explorer Bitcoin pubblici.
Se il file trascinato nel riquadro è una prova di attestazione (file di tipo *.ots):
- se disponibile, viene scaricata dai calendar server una prova aggiornata;
- la prova più recente disponibile viene verificata tramite block-explorer Bitcoin pubblici.
Trascina qui un file per marcarlo temporalmente oppure una ricevuta/prova (*.ots) per verificarla.
Avvertenze
Le prove di attestazione possono essere verificate indipendentemente da qualsiasi server o strumento OpenTimestamps. Lo stesso non vale per la ricevuta di invio, che può essere aggiornata a prova soltanto utilizzando il/i calendar OpenTimestamps impiegati per l’invio.
L’utente è responsabile della conservazione sia del documento marcato temporalmente (che non è mai stato condiviso con i server OpenTimestamps) sia della sua prova di attestazione (che tecnicamente potrebbe essere conservata dai server OpenTimestamps).
Sebbene il protocollo OpenTimestamps sia indipendente dalla blockchain, una marcatura temporale è affidabile quanto la blockchain utilizzata:
- molto affidabile se si utilizza Bitcoin, poiché tale blockchain è garantita da un’enorme potenza computazionale (proof-of-work);
- molto meno affidabile con altre blockchain pubbliche permissionless;
- se utilizzata con una blockchain privata permissioned, la sua affidabilità dipende dall’attendibilità della governance della catena: in questo caso è probabilmente preferibile una tradizionale autorità di certificazione.
Per quanto possa apparire ovvio, è opportuno ricordare che la marcatura temporale (utilizzando il protocollo OpenTimestamps o qualsiasi approccio alternativo):
- può essere rivelata selettivamente per mostrare le prove convenienti e nascondere quelle scomode (ad esempio, marcando temporalmente una scommessa su un determinato esito e quella sull’esito opposto, per poi rivelare soltanto quello che si è verificato);
- non dimostra la paternità (che dovrebbe essere dimostrata tramite una firma digitale);
- può essere ripudiata se non firmata digitalmente;
- non garantisce la veridicità, la validità, la correttezza o l’esattezza del documento marcato temporalmente.