background

Come e perché ho partecipato al bando europeo Blockchains for Social Good

La storia della nascita di Giano, lo strumento alla portata di qualsiasi azienda che permette di utilizzare i registri distribuiti per aumentare il livello di sicurezza della propria infrastruttura informatica

image
Premessa

L'Unione Europea, all'interno dell'iniziativa Horizon 2020, ha promosso un bando dal valore di 5 milioni di euro complessivi, ripartiti in cinque premi da un milione ciascuno. La sfida è stata quella di progettare e sviluppare una soluzione scalabile, efficiente e ad alto impatto sociale, che utilizzasse i registri distribuiti per apportare un reale valore aggiunto.

Le regole da rispettare

I progetti presentati, oltre ad avere un impatto sociale positivo, dovevano poter essere adottati da grandi comunità, migliorare i concetti di privacy, responsabilità e trasparenza, essere utilizzabili dal maggior numero di persone possibile e portatili su larga scala, infine dare benefici concreti rispetto alle soluzioni convenzionali. Non bisognava descrivere un'idea, ma creare una soluzione funzionante. nel

“ Non sapevo cosa fare, ma non potevo lasciarmi scappare questa opportunità senza provarci”
Dove cercare l'ispirazione

Al di là di quello che potrebbero aver cercato di rifilarvi i tanti personaggi bizzarri del panorama italiano degli esperti di cryptovalute, i casi di applicazione sensati dei registri distribuiti sono davvero pochi. La difficoltà maggiore del partecipare a questo bando non è stata sviluppare una soluzione innovativa, ma trovare un qualcosa che rispettasse i criteri stabiliti. Mi spiego subito con alcuni esempi. Le categorie di progetto suggerite erano le seguenti:

  • dimostrare l'origine delle materie prime
  • consentire una maggiore trasparenza della spesa pubblica
  • aumentare la partecipazione al processo decisionale democratico
  • consentire la creazione di social networks decentralizzati
  • migliorare la gestione delle proprietà e degli altri registri pubblici
  • contribuire all'inclusione finanziaria

Per quanto riguarda la prima opzione, non era possibile realizzare nessuna soluzione innovativa. La blockchain può darti un solo vantaggio in questo scenario: poter avere la prova temporale ed immutabile dell'esistenza di un documento contenente una qualsiasi informazione. Non rende in alcun modo vero quello che scrivi, non ti permette di tracciare in alcun modo la filiera, salvo per rarissime eccezioni dove il problema è che nel percorso di trasformazione della materia prima intervengono svariati soggetti che potrebbero, senza essere d'accordo tra loro, approfittarsi l'uno degli altri.

Per aumentare il livello di trasparenza della spesa pubblica le modifiche da fare solo sul processo decisionale che porta un ente ad effettuare una spesa. Infatti, i rendiconti sono già pubblici, renderli immutabili creerebbe soltanto confusione, e nessun vantaggio per nessuno. Che valore avrei potuto aggiungere col mio progetto tanto da meritarmi 1 milione di euro?

Realizzare un'applicazione per permettere ai cittadini di votare, sfruttando anche i registri distribuiti, non è difficile. E' difficile farlo bene. Lo hanno già fatto in tanti, tantissimi. Ti trovi sempre a scegliere un compromesso tra anonimato del cittadino, possibilità di recuperare l'account, necessità di evitare che qualcuno possa votare a nome di qualcun altro e necessità di evitare che il risultato delle votazioni sia calcolabili prima del termine, quando allo stesso tempo devi rendere possibile a ciascun cittadino di identificare il suo voto.

[...]

Dio disse: «Sia luce!» E luce fu

L'idea arrivò un giorno qualunque. E come qualsiasi altra mia idea non mi entusiasmò molto. Non perché non la trovassi valida, ma perché generalmente, dato il mio naturale ottimismo, qualsiasi idea mi sembra fantastica i primi giorni. Il tempo fa poi la sua selezione, e soltanto le idee che persistono per settimane sono candidate a diventare veri e propri progetti. Anche Giano ha fatto lo stesso percorso. Sono partito dalla necessità di adottare delle misure di sicurezza per proteggere i server che per lavoro mi trovo a gestire. In particolare, volevo monitorare gli accessi e avere uno storico di tutte le operazioni effettuate, oltre che essere avvertito in caso di anomalie. L'invio dei riepiloghi via e-mail però non bastava: come potevo essere sicuro di non essere stato vittima di un attacco? L'intruso avrebbe potuto agire sull'invio delle e-mail, in modo da farmi credere che la situazione fosse ancora sotto controllo. Ero riuscito a trovare il caso d'uso che cercavo? Tutto sembrava combaciare. Se avessi fatto girare sulla macchina una routine in grado di memorizzare periodicamente una stringa composta dall'identificativo univoco del file contenente le informazioni di mio interesse e le ultime lettere dell'identificativo della transazione precedente sarei riuscito a rendere lo stato di salute della macchina visualizzabile dall'esterno, nel totale rispetto della riservatezza delle informazioni.

Come funziona

Per capire come Giano sfrutta le potenzialità dei registri distribuiti, è necessario avere una visione chiara dei principi generali del suo funzionamento. Giano agisce come una semplice routine che controlla ad un intervallo di tempo configurato una lista di file. Questi file sono solitamente chiamati logs e sono registri in cui viene riportato quello che è successo sulla macchina che si vuole monitorare. In genere sono creati automaticamente dal sistema operativo o da altri software di sicurezza. In caso di attacco, gli hacker cercano immediatamente di cancellare o manipolare i log per nascondere le loro tracce. E nella maggior parte dei casi, possono e riescono a farlo. Il risultato è che le aziende non si rendono conto in tempo di essere state vittime di un attacco informatico. Se ci fosse un modo per essere sicuri dell'integrità dei registri, questo scenario sarebbe impraticabile e qualsiasi attacco potrebbe essere identificato rapidamente. Giano fa proprio questo. Se la prova dell'esistenza dei log viene memorizzata in un registro immutabile, il fatto stesso che i file in questione non vengono trovati o sono stati alterati costituisce una prova sufficiente dell'accesso non autorizzato. Sul piano pratico, ad un intervallo di tempo programmabile, Giano ottiene un identificativo unico, calcolato deterministicamente per ogni log sotto sorveglianza. Gli identificatori e altre informazioni, come le dimensioni dei log, sono riportati in una struttura dati simile ad un Merkle Tree e memorizzati in un file.

Dopo di che, Giano calcola l'identificativo del file stesso e memorizza queste informazioni in una transazione sulla blockchain. Dopo la prima transazione, le informazioni saranno composte, come anticipato prima, oltre che dall'identificativo del file, anche dagli ultimi tre caratteri dell'identificativo della transazione precedente.
Una volta creata la catena di transazioni, diventa sufficiente controllare se la transazione riportata in ogni file generato esiste e contiene l'identificatore specificato nel campo previousLogTx, per essere sicuri che nessun log sia stato alterato. Il controllo della dimensione dei file è un altro passaggio rilevante: la dimensione di un file di log non dovrebbe mai diminuire a meno che qualcuno non l'abbia manipolato. Questo controllo può avvenire automaticamente e può essere predisposto un avviso automatico in caso di anomalie. Questo è un controllo che può essere fatto solo dagli amministratori del sistema su cui Giano è installato, ma è comunque possibile monitorare dispositivi di terze parti a cui non si ha accesso se si è a conoscenza dell'indirizzo pubblico impostato nel file di configurazione. Un'anomalia o una violazione della sicurezza può essere identificata se la tempistica di trasmissione delle transazioni effettuate dall'indirizzo specifico non viene rispettata o se la sequenza viene interrotta.
Adesso dovrebbe essere chiaro il motivo per cui Giano ha bisogno dei registri distribuiti per funzionare correttamente. Si tratta di un'innovazione che altrimenti non sarebbe stato possibile realizzare. Per la prima volta nella storia, è possibile essere sicuri che una violazione informatica non possa accadere senza che nessuno se ne accorga.