Diffamazione sulla blockchain via OP_RETURN

By | 19 ottobre 2015

Diffamazione sulla Blockchain del BitcoinNell’ordinamento giuridico italiano, la diffamazione è un delitto contro l’onore ed è definita come l’offesa all’altrui reputazione, comunicata a più persone con la parola, lo scritto ed ogni altro mezzo di comunicazione. Inclusa la blockchain Bitcoin, potremmo aggiungere.

Si sente sempre più spesso parlare di diffamazione mediante offese su siti web, email, chat, forum o social network come Facebook. Si sente ancora parlare di diffamazione mediante articoli di giornale o servizi TV. Quello cui non siamo ancora abituati è la diffamazione sulla blockchain del protocollo Bitcoin o di altri protocolli di criptovalute.

La blockchain è una sorta di grosso file, ad oggi di dimensioni maggiori di 50 GB, condiviso da tutti i nodi della rete Bitcoin, oltre 5000 al momento. Questo grosso file contiene l’elenco di tutte le transazioni avvenute sulla rete Bitcoin dal primo giorno in cui è stato avviato il sistema il 3 gennaio 2009. Se compariamo informalmente un indirizzo bitcoin con un IBAN di un conto bancario, possiamo pensare alla blockchain come a un estratto conto di tutti i bonifici avvenuti tra i conti da quando il sistema bancario Bitcoin è stato messo in piedi.

Per chi sta chiedendosi cosa c’entri la blockchain con la diffamazione, precisiamo che, oltre all’indirizzo mittente e destinazione della transazione, ogni riga di questo grosso file contiene un campo “libero” dove è possibile scrivere ciò che si vuole. Tale campo, chiamato OP_RETURN, permette la scrittura di 80 byte, cioè di 80 caratteri alfanumerici a piacere, che verranno legati per sempre alla transazione e possono contenere messaggi codificati in esadecimale come il seguente “I cant see u but I still love you lili” (tx):

Il campo OP_RETURN della Blockchain del protocollo Bitcoin

Tecnicamente, il campo OP_RETURN è la modalità standard con la quale marcare una transazione come provably unspendable, inserendo una scriptPubKey del tipo “scriptPubKey: OP_RETURN {zero or more ops}” che fa sì che lo script venga identificato come invalido, garantendo che non possa esistere alcuna scriptSig in grado di spendere l’output. Dal punto di vista dell’impiego di risorse, le transazioni OP_RTURN sono l’ideale per non sovraccaricare la rete dato che gli output possono essere potenzialmente rimossi dalle cache di transazioni non spese, alleggerendo così l’intero sistema rispetto a modalità alternative di inserimento di dati nella blockchain.

L’idea è che grazie a questo campo, OP_RETURN, è possibile utilizzare il protocollo Bitcoin non soltanto per trasferimenti di moneta virtuale ma anche per contratti evoluti o servizi come Proof of Existence, che utilizzano la blockchain per fornire un sistema di timestamp di documenti sicuro ed economico, basato sull’inserimento dell’hash del documento da certificare temporalmente all’interno del campo OP_RETURN.

Il problema è che se al posto di uno script o di un hash inseriamo nel campo OP_RETURN della blockchain una frase denigratoria all’interno della blockchain, otteniamo un esempio di diffamazione con una caratteristica unica: nessuno sarà mai in grado di rimuovere la frase diffamatoria, che si diffonderà su tutte le copie della blockchain ove verrà conservato in eterno. Sul mio Macbook, ad esempio, ho un’intera copia della blockchain, contenente anche i messaggi visionari inseriti in questi mesi nella blockchain come:

  • “In a world where scarcity is scarce, one day Satoshi was born”
  • “Buon compleanno Sonia… da Glo a So per sempre !”
  • “Dai diamanti non nasce niente, dalla blockchain nascono i fiori”
  • “Valentino Rossi is a great champion!”

Oltre a messaggi simpatici, ce ne sono altri che lo sono meno, soprattutto per le persone citate. Ne riporto alcuni offuscandone alcune parti:

  • “_____ è un figlio di p______
  • “Raff______ Der_____, CF: DR_RF_____06L___8Z , è un truffatore!”
  • “D____ F_____ srl 021______28 organizza dei falsi corsi per rubare fondi
  • “M___a T____o in R_____o d Catania è 1 truffatrice (ex C___________e)”

Ovviamente non ci si aspetta che la gente vada leggere il testo all’interno della blockchain, il fatto è che i maggiori servizi di block explorer ne mostrano in chiaro il contenuto e lo lasciano indicizzare anche ai motori di ricerca. Il che significa che cercando il nome di una vittima di diffamazione sulla blockchain compariranno tutti i block explorer che pubblicano in chiaro (ricordiamo che originariamente viene registrato in codifica esadecimale) l’OP_RETURN contenente il messaggio denigratorio. Ad esempio, cercando sui motori di ricerca il codice fiscale citato sopra, si troverà per sempre il messaggio che ne accusa il detentore di truffa e nessuno potrà mai cancellarlo, a meno che i block explorer – su richiesta – eliminino le pagine che mostrano i dettagli delle transazioni contestate (non le transazioni stesse, che sono irremovibili dalla blockchain). A titolo di esempio, questi sono soltanto alcuni dei block explorer che al momento indicizzano tramite Google il codice fiscale indicato in blockchain, così da tacciare il proprietario come “truffatore” per l’eternità.

Diffamazione tramite blockchain indicizzata su Google

La funzionalità di inserimento di parole nella blockchain è nota da tempo, tanto che sono disponibili block explorer come SmartBit che che permettono ricerche anche all’interno del testo contenuto all’interno dell campo OP_RETURN. Servizi come CoinSecrets mostrano, in tempo reale, quali transazioni contengono messaggi “anomali” che indicano la presenza di un qualche tipo di messaggio oltre alla transazione di moneta virtuale. I migliori block explorer online come Blockchain.info, BlockTrail, ChainFlyer, Chain.soSmartBit mostrano, insieme a ogni transazione, il valore del campo OP_RETURN tradotto in codifica UTF8 comoda per essere letta dagli umani. Per chi non si accontentasse del campo OP_RETURN, ci sono poi servizi come BitcoinStrings che filtrano qualunque testo presente sulla blockchain e lo mostrano direttamente sul loro sito.

Compilare il campo OP_RETURN di una transazione non è cosa facile come trasferire qualche millibitcoin. La maggior parte dei wallet non permette l’inserimento di testo aggiuntivo e anche con i client che lo permettono – come Bitcoin Core ed Electrum – bisogna lavorare da linea di comando e capire qualcosa di txout, codifica esadecimale e change address per non combinare pasticci. Esistono script come php-OP_RETURN e python-OP_RETURN che agevolano la preparazione di una transazione contenente un campo personalizzato OP_RETURN e, per i più temerari, è possibile utilizzare servizi web come CoinBin (disponibili anche in locale) per prepararsi una transazione quasi “a mano” a partire da una chiave privata e un indirizzo con almeno una UTXO, verificarla, firmarla e fare push sulla rete Bitcoin.

Recentemente, inoltre, è stato lanciato un servizio italiano chiamato Eternity Wall, che permette anche a chi non ha idea di cosa siano i bitcoin di inserire del testo a piacere all’interno della blockchain e mostrarlo sulla homepage del sito stesso (oltre che su tutti i block explorer che mostrano il campo OP_RETURN). Il servizio permette l’inserimento di un messaggio gratuito all’ora mentre non pone limiti a chi è disponibile a sacrificare qualche millibitcoin. Una volta pubblicato un testo, è possibile condividerlo sui social network, visualizzarne la corretta pubblicazione sulla blockchain attraverso i più diffusi block explorer, verificare quante visualizzazioni ha avuto sul sito, manifestare il proprio apprezzamento (“like”) versando una piccola quota all’indirizzo bitcoin segnalato (quello su cui viene convogliata una parte della cifra versata per pubblicare il messaggio) oppure pubblicare un testo di risposta.

Eternity Wall

Tecnicamente, Eternity Wall non fa altro che inserire una transazione nella blockchain con un campo OP_RETURN contenente la stringa “EW”, uno spazio e il testo scelto dall’utente. Questo significa che è possibile pubblicare testo nella blockchain contenenti il testo “EW ” in testa al messaggio e farlo comparire così sul sito Eeternity Wall, come nell’esempio che segue.

Messaggio Eternity Wall sulla blockchain

Si nota che in questo caso manca la possibilità di attribuire like al messaggio o rispondere tramite il servizio Eternity Wall, ma il messaggio verrà comunque inserito sulla pagina Eternity Wall. Rispettando il protocollo aperto Eternity Wall, il messaggio potrà comparire nel “wall”, ricevere like e risposte. Lo sviluppatore Riccardo Casatta dichiara che, in caso di segnalazioni relative a diffamazione, si rende disponibile alla rimozione immediata del messaggio dal suo sito [WBM] ma ovviamente non dalla blockchain, dalla quale nessuno potrà mai toglierlo. In ogni caso, poi, come fa notare lo sviluppatore, esistono numerosi altri servizi che fanno uso degli OP_RETURN come Open Assets, Proof of existence, Factom, chaindb, Ascribe, Coinspark, Colu, bitproof, docprof, blockai.

La bitcoin forensics e la bitcoin intelligence saranno certamente utili nel caso in cui il reato di diffamazione attraverso la blockchain – ancora agli inizi – prenda piede. Questo tipo di reato, compiuto su di un mezzo che basa la propria struttura su indirizzi pseudonimi e tecnologia peer-to-peer, richiederà sforzi non indifferenti per poter rintracciare gli autori dei messaggi diffamatori. Una eventuale denuncia querela per diffamazione porterebbe infatti a un’indagine sui possibili autori del reato, con conseguente acquisizione, conservazione e presentazione della prova (la blockchain) con successiva indagine sugli indirizzi e sulle transazioni legate a quella sulla quale compare il messaggio all’interno del campo OP_RETURN.

2 thoughts on “Diffamazione sulla blockchain via OP_RETURN

  1. Riccardo Casatta

    Ciao Paolo, ottimo articolo, aggiungo solo qualche precisazione:
    la codifica OP_RETURN utilizzata dal protocollo non è ASCII ma è UTF-8, è possibile infatti inserire caratteri cirillici o ideogrammi per esempio.
    I messaggi scritti dall’esterno non solo appaiono sul sito, ma possono ricevere like e risposte se rispettano pienamente il protocollo EW.

    Reply
    1. Paolo Post author

      Grazie Riccardo, ottima precisazione, non avevo approfondito il protocollo ma dato che è open si può implementare esternamente e renderlo compliant con il sito. Per l’OP_RETURN, hai ragione, con UTF-8 abbiamo anche un range più ampio di caratteri a disposizione.

      Reply

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *