1. Università degli Studi di Salerno
Dipartimento di Informatica
Tesi di Laurea di I livello in
Informatica
L’utilizzo di tecnologia Blockchain a supporto
della sicurezza di dati critici generati in ambito
Internet of Things
Relatore
Prof. Francesco Palmieri
Candidato
Gianmarco Beato
Anno Accademico 2018-2019
7. Introduzione
Negli ultimi anni Internet ha conosciuto una crescita esponenziale,
comportando una rapidissima rivoluzione tecnologica e un grandissimo
mutamento della società: Internet ha cambiato le vite di tutti, dal modo di
comunicare, ricercare, intrattenersi e acquistare, ed ogni giorno siamo sempre
più connessi alla rete. Con lo sviluppo sempre più rapido del World Wide
Web e delle varie tecnologie di comunicazione si sta assistendo anche ad un
aumento vertiginoso di oggetti smart che acquisiscono intelligenza, sono
dotati di un'anima software, di sensori, memoria e che hanno la capacità di
accedere alla rete ed interagire con essa senza l'intervento umano: si tratta
dell'Internet of Things (IoT), una incredibile opportunità tecnologica che sta
diventando sempre più pervasiva nelle nostre vite. Tuttavia, però, a causa
delle risorse limitate di questi dispositivi e dell'architettura centralizzata su
cui si basano, l'IoT sta diventando sempre più fragile, causando innumerevoli
problemi di sicurezza. Fortunatamente, l'utilizzo della tecnologia blockchain,
che si sta affermando come un'innovazione importante nel modo di
condividere le informazioni, aiuta a superare i problemi di sicurezza di tali
dispositivi creando un sistema IoT distribuito ed autonomo; infatti il punto di
forza di tale tecnologia è quello di offrire soluzioni di consenso in modo da
garantire la fiducia in ambienti distribuiti, peer-to-peer, senza la presenza di
una terza parte attendibile. Nel 2008, infatti, viene presentato da Satoshi
Nakamoto Bitcoin, un sistema di pagamento mondiale completamente
decentralizzato che elimina per la prima volta la necessita di dover utilizzare
un intermediario per effettuare lo scambio di asset digitali. Alla base del
funzionamento di Bitcoin vi è proprio la tecnologia blockchain le cui
applicazioni non si limitano soltanto alla possibilità di creare valute digitali.
Negli ultimi anni sono nati sulla scia di Bitcoin centinaia di progetti che si
prefiggono come scopo la risoluzione dei problemi più svariati. Tra questi ve
ne sono alcuni, tra cui ad esempio Ethereum, che mirano a utilizzare la
blockchain come tecnologia per sviluppare applicazioni e una nuova versione
del web decentralizzato.
Questa tesi si pone come obiettivo la realizzazione di un'architettura
totalmente decentralizzata basata su blockchain: si propone, infatti, un
esempio di utilizzo della blockchain di Ethereum per creare un sistema di
sostituzione delle batterie dei veicoli elettrici. In questa architettura vengono
1
8. utilizzati due tipi di clients IoT, A e B. L’architettura pensata risolve il
problema dell’architettura centralizzata del paradigma dell’IoT oltre a
superare i limiti prestazionali dei dispositivi IoT. I clients di tipo A sono
considerati dispositivi IoT con risorse limitate e sono responsabili
dell'interazione con l’utente e della raccolta dei dati IoT; I clients di tipo B,
invece, sono da considerare come dei dispositivi IoT con risorse maggiori o
uguali ai personal computer e possono eseguire il processo di mining. Si
utilizza una rete blockchain privata di Ethereum, non solo perché supporta
contratti intelligenti con cui possiamo progettare interazioni relativamente
complesse tra diversi dispositivi IoT, ma anche perché può generare un nuovo
blocco più velocemente di Bitcoin. Inoltre si utilizza l’algoritmo PoW come
protocollo di consenso; e come metodo di crittografia si utilizza l’account
Ethereum. Inoltre, sia i clients di tipo A che di tipo B sono connessi alla rete
Internet.
Lo scopo di questa tesi non si limita alla realizzazione dell’architettura
sopra descritta, mira infatti anche ad offrire una panoramica dettagliata a
riguardo l'IoT e la blockchain, analizzando come queste due tecnologie
possono interagire tra loro per creare servizi tangibili nel mondo reale.
La tesi si articola in tre capitoli:
Capitolo 1 Nel primo capitolo si introducono i concetti
fondamentali del fenomeno dell’IoT
Capitolo 2 Nel secondo capitolo viene illustrato prima il
concetto generale di sicurezza e sicurezza nelle reti
informatiche poi della tecnologia Blockchain nello scenario
Internet of Things.
Capitolo 3 Nel terzo capitolo viene mostrato un esempio
di utilizzo della blockchain di Ethereum in cui viene creata
un’architettura decentralizzata per la realizzazione di un
sistema di sostituzione delle batterie dei veicoli elettrici
Nelle conclusioni viene infine analizzato il lavoro svolto verificando se sono
stati raggiunti tutti gli obiettivi che questa tesi si prefissa.
INTRODUZIONE 2
9. Capitolo 1
Il fenomeno dell’IoT
L’internet delle cose è la più grande rivoluzione introdotta dalla rete
globale negli ultimi tempi, si propone di fondere il mondo reale con quello
virtuale creando un ambiente più intelligente. Un ambiente in grado di sentire,
analizzare e adattarsi per rendere le nostre vite più semplici, sicure ed
efficienti.
L’internet of Things (IoT) è un fenomeno che si sta velocemente
affermando come paradigma rivoluzionario nello scenario delle nuove
telecomunicazioni senza fili. L’idea alla base di questo concetto è la pervasiva
presenza di una gran quantità di cose o oggetti che attraverso varie tecnologie
sono in grado di interagire tra di loro e co-operare per il raggiungimento di
un obiettivo comune.
Esistono numerosi casi d’uso, dalle case intelligenti, alla gestione di
impianti di produzione industriale, dal monitoraggio e miglioramento di
coltivazioni e allevamenti all’utilizzo in campo militare, da sistemi di scala
globale a piccoli ambienti.
1.1 Definizione: che cos’è l’IoT?
Internet delle cose (o, più propriamente, Internet degli oggetti o IoT,
acronimo dell’inglese Internet of Things) è l’ espressione utilizzata per
definire l’estensione di Internet al mondo degli oggetti. L’Internet delle cose
può essere visto come una vera e propria evoluzione dell’uso della Rete. Esso
è la rete delle apparecchiature e dei dispositivi (detti gli “oggetti” o “cose”),
connessi ad Internet, che si rendono riconoscibili e acquisiscono intelligenza
grazie al fatto di essere equipaggiati da un software che permette di scambiare
dati con altri oggetti connessi.
3
10. Per "cosa" o "oggetto" si intende più precisamente categorie quali:
dispositivi, apparecchiature, impianti e sistemi, materiali e prodotti tangibili,
opere e beni, macchine e attrezzature. Questi oggetti connessi che sono alla
base dell’Internet delle cose si definiscono più propriamente smart
objects (oggetti intelligenti) e si contraddistinguono per alcune proprietà o
funzionalità. Le più importanti sono identificazione, connessione,
localizzazione, capacità di elaborare dati e capacità di interagire con
l’ambiente esterno. Obiettivi di questi dispositivi sono raccogliere e trasferire
dati ed informazioni, dare comandi e controllare particolari attività. Dal
frigorifero alla smart tv, dalla lampadina al termostato, dalla telecamera allo
smartwatch, tutti possono essere considerati esempi di IoT. In ambito
cittadino, ad esempio, un rilevatore collocato in una strada può controllare i
lampioni e segnalare se la lampada funziona, oppure potrebbe segnalare
informazioni sulla qualità dell’aria o sulla presenza di persone.
Le due caratteristiche principali di un “oggetto connesso” sono:
• Avere un indirizzo IP che ne consenta l’identificazione univoca sulla
Rete.
• Avere la capacità di scambiare dati attraverso la rete stessa senza
bisogna dell’intervento umano. Questo può essere fornito
direttamente dal produttore, sotto forma di firmware.
IL FENOMENO DELL’IOT 4
Figura 1.1: IoT Network
11. 1.2 L’impatto IoT sull’economia e le aspettative di crescita
Nei prossimi anni l’Internet of Things è destinato a crescere in modo
esponenziale, sia per quanto riguarda la sua diffusione, sia in termini di valore
economico. Nei prossimi 10 anni la maggior parte del traffico Internet sarà
generata da milioni di dispositivi connessi come sensori, misuratori,
elettrodomestici, mezzi di trasporto etc… Secondo gli analisti entro il 2020 ci
saranno più di ventisei miliardi di oggetti connessi a livello globale, ABI
Research stima che saranno più di 30 miliardi. Altri istituti parlano di 100
miliardi. Secondo l’americana Cisco entro il 2020 il valore aggiunto
complessivo all’economia globale sarà di 14.000 miliardi di dollari. Secondo
l'Osservatorio Internet of Things del Politecnico di Milano, il mercato degli
smart objects in Italia è arrivato a toccare i 3,7 miliardi di euro, con una
crescita del 36% rispetto all'anno precedente. Altro aspetto interessante di
quella che è definita come la “quarta rivoluzione industriale” è che il 90%
del valore economico creato dall’IoT sarà catturato dagli utenti: il 60% sarà
destinato ai paesi industrializzati, ma il restante 40% aiuterà le economie dei
paesi in via di Sviluppo. Le maggiori attrattive di business si possono
raggruppare in 4 macro argo-menti: "Smart Manufacturing", "Smart Homes",
"Smart Health" e "Smart Customer Experience". Questi dati sono stati
ottenuti tenendo in considerazione la crescita stimata del settore e la spesa
stimata per l'IoT in quel settore.
1.3 Le potenzialità del mondo interconnesso sulla società
E’ fuori dubbio, quindi, che le potenzialità derivanti da
un’applicazione completa di questo paradigma portino sia ad una rivoluzione
industriale sia ad un radicale cambiamento di molti aspetti della vita
quotidiana e comportamentale delle persone. Dal punto di vista di un utente
privato, gli effetti più importanti del paradigma dell’internet of things sono
visibili sia dal lato lavorativo che domestico. In questo contesto la domotica,
l’assistenza virtuale, lo Smart Car, l’e-health sono solo alcuni esempi dei
possibili scenari in cui questo nuovo paradigma rappresenta un ruolo chiave
oggi e nel prossimo futuro.
5 IL FENOMENO DELL’IOT
12. 1.3.1 Esempi di ambiti applicativi
Virtualmente qualsiasi oggetto può essere dotato di un dispositivo
elettronico con un software in grado di collegarsi ad internet o a una rete
locale, per cui gli ambiti di applicazione dell’Internet delle cose sono
praticamente infiniti: alle smart home, le case intelligenti che regolano da sole
temperatura e illuminazione in base alle condizioni esterne, alle auto che
dialogano in tempo reale con la strada e le altre vetture per evitare incidenti e
ottimizzare consumi e percorsi. Dalla medicina, con pacemaker e altri
dispositivi in grado di allertare direttamente i soccorsi se il portatore si sente
male, all’agricoltura, con sensori immersi nel terreno che segnalano
composizione e umidità del suolo al sistema che eroga acqua e fertilizzanti.
A livello domestico i dispositivi connessi si potranno controllare attraverso il
browser di un computer, accedendo alla rete domestica, oppure più
semplicemente attraverso una app connessa in remoto direttamente dallo
smartphone. Già oggi è possibile, tramite il proprio cellulare, impostare il
termostato di casa e vedere in tempo reale le immagini delle telecamere di
sicurezza di casa. Inoltre molte pubbliche amministrazioni stanno già
guardando con crescente interesse alla possibilità di rendere sempre più smart
le proprie città.
L’unico limite insomma sembra essere la fantasia: qualunque oggetto,
a patto di essere collegato alla rete e di comunicare qualcosa a qualcuno, può
ricadere in questa definizione.
1.3.2 Protagonisti in campo
Tra i principali protagonisti in campo come fornitori di dispositivi,
servizi e framework di sviluppo si possono elencare:
• Microsoft L’offerta di Microsoft comprende più che altro soluzioni
per il cloud e la gestione dei dispositivi attraverso la piattaforma
“Azure IoT Suite”.
• Samsung La direzione, o meglio il settore commerciale al quale
punta Samsung, sembra essere quello della Smart Home, con il lancio
della piattaforma “Smartthings”, un insieme di prodotti per le case
intelligenti.
IL FENOMENO DELL’IOT 6
13. • Apple La casa di Steve Jobs ha messo a disposizione la piattaforma
HomeKit, che permette di configurare i dispositivi Apple in una smart
Home in modo da poterli utilizzare attraverso Siri.
1.3.3 Il futuro dell’Internet delle Cose
La IoT si sta sviluppando parallelamente anche all’utilizzo
dell’intelligenza artificiale. Sono allo studio ad esempio dei nuovi sistemi che
integrano macchine per gli esami clinici in grado di inviare automaticamente
i risultati delle analisi a delle banche dati dove l’intelligenza artificiale,
analizzando grandi masse di dati, è in grado di estrapolare una diagnosi e
consigliare una cura. Intelligenza artificiale, big data e IoT sono fra loro
connessi a livello profondo e lo saranno sempre di più nelle applicazioni
future. Miliardi di dispositivi ed oggetti vari collegati ad internet trasmettono
un’immane massa di dati che una mente umana non saprebbe analizzare né
gestire. L’utilizzo dell’intelligenza artificiale potrebbe invece trovare molti
nuovi ambiti di applicazione, rilevando ad esempio similitudini e differenze
analizzando milioni di cartelle cliniche, seguendo con l’esempio in campo
medico, di pazienti con la stessa patologia.
7 IL FENOMENO DELL’IOT
14. Capitolo 2
Sicurezza
L’Internet of Things, come visto in precedenza, ha tantissimi ambiti
applicativi. La disponibilità di un numero sempre crescente di dispositivi in
grado di connettersi ad Internet ha aperto una nuova sfida per chi lavora con
tecnologia IoT , ovvero quella costituita dai rischi intrinseci per la sicurezza.
Infatti ogni dispositivo IoT può essere un potenziale punto di accesso per gli
hacker. La risposta agli innumerevoli problemi di sicurezza dell’IoT potrebbe
essere la tecnologia Blockchain. Di seguito si discuterà prima del concetto
generale di sicurezza e sicurezza nelle reti informatiche, poi della tecnologia
Blockchain nello scenario Internet of Things.
2.1 Definizione generale di sicurezza
La sicurezza è definita come segue: “La condizione che rende e fa
sentire di essere esenti da pericoli, o che dà la possibilità di prevenire,
eliminare o rendere meno gravi danni, rischi, difficoltà, evenienze spiacevoli,
e simili.”
I concetti principali riguardanti la sicurezza sono:
Minaccia: una azione che se attuata sfruttando delle vulnerabilità può causare
un danno.
Vulnerabilità: una componente di un sistema in corrispondenza alla quale le
misure di sicurezza sono assenti, ridotte o compromesse. Può essere utilizzata
per mettere in pratica una minaccia.
Rischio: la possibilità che si possa verificare un evento dannoso.
Contromisura: un provvedimento diretto a prevenire o neutralizzare eventi
dannosi.
Difesa: la messa in pratica di contromisure.
8
15. 2.2 La sicurezza delle reti informatiche
Le reti di calcolatori e le tecnologie per la comunicazione dei dati sono
in rapida evoluzione e rappresentano un aspetto cruciale per il progresso
tecnologico. Internet è la rete più utilizzata e diffusa ed è ormai parte della
nostra vita quotidiana. La comunicazione digitale e le reti di computer stanno
cambiando molti aspetti del nostro modo di vivere. Le nuove tecnologie
permettono di spedire quantità di dati sempre maggiori con segnali più veloci,
permettendo un notevole miglioramento dei servizi offerti. Nello specifico
una rete è un insieme di dispositivi (chiamati anche nodi o stazioni) connessi
da canali di comunicazione. Un nodo può essere un computer, una stampante,
un sensore o qualsiasi altro dispositivo capace di spedire o ricevere dati
generati da altri nodi della rete. Gli scopi principali di una rete sono: accedere
alle informazioni, condividere delle risorse, e facilitare la comunicazione.
Quando comunichiamo attraverso la rete non stiamo facendo altro che
scambiare delle informazioni. Un sistema di comunicazione è composto da
cinque componenti: un messaggio, un mittente, un destinatario, un mezzo di
comunicazione ed un protocollo.
Una rete è costituita sia dall'hardware (computer e altri dispositivi) sia
dal software (programmi e protocolli) che gestisce il trasferimento dei dati da
un punto all'altro della rete. Una rete effettua i propri compiti grazie ad
un'architettura a strati (o livelli) in cui ogni strato ha un insieme di funzioni.
Il modello OSI è uno standard per le funzioni di comunicazione nelle reti.
Esso stabilisce per l'architettura logica di rete una struttura a strati composta
da una pila di protocolli di comunicazione de rete suddivisa in 7 livelli (fisico,
collegamento, rete, trasporto, sessione, presentazione, applicazione). Ma a
livello implementativo lo standard de facto affermatosi per le architetture di
rete a livelli è il TCP/IP, che riprende in parte il modello OSI. La principale
differenza fra il modello OSE e quello TCP/IP è dovuta al fatto che la suite
TCP/IP è costituita da vari protocolli strutturati gerarchicamente, ma non così
rigidamente come previsto dal modello OSI per il quale ogni strato ha un
preciso insieme di funzioni. In TCP/IP i protocolli sono abbastanza
indipendenti e possono essere usati a seconda delle necessità specifiche.
Inoltre il modello TCP/IP prevede solo cinque strati (fisico, collegamento,
rete, trasporto ed applicazione). Per lo strato di rete il protocollo principale è
IP, mentre per lo strato di trasporto la suite TCP/IP prevede tre protocolli:
TCP, UDP e SCTP. Per la sicurezza delle informazioni scambiate attraverso
la rete esistono alcuni importanti protocolli: IPSec, SSL/TLS e HTTPS. IPSec
fornisce strumenti crittografici per la protezione al livello di rete, TLS (e il
9 SICUREZZA
16. suo predecessore SSL) fornisce funzionalità di sicurezza nello strato di
trasporto.
La “sicurezza informatica”, o meglio, la “sicurezza
dell’informazione”, è l’insieme dei mezzi e delle tecnologie mirate alla
protezione dei sistemi informatici tramite l’analisi delle vulnerabilità, del
rischio e delle minacce, al fine di proteggerli da possibili attacchi che
potrebbero provocare danni (es. economico, politico-sociale, etc…). In
particolare, nella sicurezza delle reti si valutano l’eventuale presenza di
vulnerabilità dei singoli nodi che compongono la rete, e la sicurezza dello
scambio di informazioni tra i nodi. Un sinonimo del termine “sicurezza
informatica” spesso usato è quello di “cybersecurity”.
Nei primi decenni della loro esistenza, le reti di computer vennero
utilizzate prevalentemente dai ricercatori universitari per inviare e ricevere
email, e dalle aziende per condividere stampanti. In quelle applicazioni non
si prestava molta attenzione alla sicurezza. Oggi per via della crescente
informatizzazione della società e dei servizi pubblici e privati, milioni di
persone usano le reti per effettuare acquisti, lavorare, condividere risorse,
comunicare, quindi la sicurezza delle reti sta diventando sempre più un
problema potenzialmente vasto ed importante, il cui interesse sta crescendo
negli ultimi anni proporzionalmente alla crescente diffusione delle reti stesse.
La sicurezza è un argomento molto ampio, che copre innumerevoli
problematiche. Nella sua forma più semplice, riguarda come fare in modo che
intrusi non riescano a leggere o, peggio ancora, modificare di nascosto, i
messaggi destinati a terzi. Si occupa inoltre di impedire che determinate
persone possono accedere a servizi remoti che non sono autorizzate a usare.
La sicurezza si occupa anche di come accertarsi dell’identità dei mittenti dei
messaggi, di come impedire l’intercettazione e la ripetizione di messaggi
legittimi catturati sulla rete, e di come perseguire chi afferma di non aver mai
spedito certi messaggi. La maggior parte dei problemi di sicurezza sono
causati da persone malintenzionate, che tentano di guadagnare qualcosa,
catturare l’attenzione oppure danneggiare qualcuno.
L’approccio odierno alla cybersecurity si concentra su cosa e su come
fare per prevenire un incidente di sicurezza e come comportarsi nel caso un
tale incidente si verifichi. Ciò è confermato nelle linee guida (cybersecurity
framework) emanate dal National Institute of Standards and Technologi che
prevedono i seguenti macro-processi: Identifica, Proteggi, Rileva, Rispondi,
Ripristina.
Inoltre, dal momento che l’informazione è diventata un bene, e che la
maggior parte delle informazioni sono custodite su supporti informatici, ogni
organizzazione deve essere in grado di garantire la sicurezza dei propri dati,
SICUREZZA 10
17. in un contesto dove i rischi informatici sono in continuo aumento. Per questo
esistono, a carico delle imprese, precisi obblighi in materia di privacy, tra cui
quello di redigere annualmente uno specifico documento programmatico
sulla sicurezza.
I requisiti principali che garantiscono la sicurezza dell’informazione
sono la nota triade CIA:
• Confidentiality La confidenzialità, detta anche segretezza, si occupa
di mantenere le informazioni fuori dalla portata degli utenti non
autorizzati.
• Integrity L’integrità si riferisce al fatto che il messaggio ricevuto è
esattamente quello che è stato inviato, senza subire, quindi, nessuna
modifica non autorizzata.
• Availability La disponibilità fa riferimento alla capacità di poter
accedere ai propri dati quando ne si ha il bisogno.
Altri requisiti aggiunti alla triade CIA sono:
• Authenticity L’autenticazione si occupa di stabilire l’identità del
soggetto con cui stiamo comunicando, prima di rivelare informazioni
sensibili o concludere transazioni commerciali.
• Non-repudiation Il termine non ripudio riguarda il meccanismo
secondo il quale il mittente di un messaggio non può successivamente
sostenere di non averlo inviato, e per contro che il destinatario del
messaggio non possa sostenere di non averlo ricevuto.
2.2.1 Principali modalità di attacco e contromisure
Le principali modalità di attacco che hanno come obiettivo la violazione di
requisiti di sicurezza dei sistemi informatici sono:
• Ransomware E’ un tipo di malware che limita l’accesso del
dispositivo che infetta, richiedendo un riscatto per rimuovere la
limitazione.
11 SICUREZZA
18. • Spyware E’ un tipo di software che raccoglie informazioni di un
utente senza che l’utente stesso se ne accorga, trasmettendole tramite
Internet ad una organizzazione che le utilizzerà per trarne profitto.
• Virus, Worm e Trojan Programmi che una volta installati su di un
computer ottengono accesso alle risorse potendone fare qualsiasi
cosa, dalla distruzione al furto.
• Denial-of-service Si tratta di un attacco che punta a rendere
inutilizzabile un determinato servizio e per raggiungere questo scopo
punta a far esaurire le risorse del server che mette a disposizione tale
servizio.
• Backdoor Il backdoor è un metodo per passare oltre la normale
autenticazione in un prodotto, un sistema informatico, un
crittosistema o un algoritmo.
• Spoofing Lo spoofing è un attacco utilizzato per manipolare i dati
trasmessi in una rete, falsificando varie informazioni come l’identità
di un host o il mittente di un messaggio. Una volta che un attaccante
riesce ad impersonare qualcun altro all’interno di una rete gli è
possibile intercettare informazioni riservate e diffondere false
informazioni.
Alcune importanti contromisure sono:
• Riduzione vulnerabilià Ovvero ritrovare eventuali punti deboli del
sistema, come i bug, e metter in pratica delle soluzioni per rinforzarli.
• Autenticazione e identificazione Sapere chi sta accedendo ad una
risorsa ed avere la prova che sia effettivamente chi sostiene di essere
è alla base delle politiche del controllo degli accessi.
• Anti-virus Programma in grado di rilevare ed eliminare programmi
nocivi.
• Firewall Un Firewall è un dispositivo che si pone fra la rete interna
di un’organizzazione e il resto di Internet. Esso permette di monitorare
e filtrare tutto il traffico di rete sia in entrata che in uscita utilizzando
SICUREZZA 12
19. una serie di regole di sicurezza per consentire o bloccare il passaggio
di determinati pacchetti di rete.
• Crittografia La sicurezza nelle reti di calcolatori si ottiene
principalmente attraverso l’uso di strumenti crittografici. La
crittografia è lo studio delle tecniche per occultare un messaggio in
modo da non essere comprensibile a persone non autorizzate e
consentire che due o più persone possano trasmettersi dati attraverso
un canale di comunicazione pubblico o non sicuro di una rete.
Esistono due forme di crittografia: la crittografia simmetrica (o a
chiave unica) e la crittografia asimmetrica (o a chiave
pubblica/privata). Le componenti di un sistema crittografico sono: un
testo in chiaro (messaggio da spedire), il testo cifrato (messaggio
occultato), una chiave segreta, un algoritmo di cifratura (che grazie
alla chiave segreta trasforma il testo in chiaro in testo cifrato), ed un
algoritmo di decifratura (che grazie alla chiave segreta trasforma il
testo cifrato in testo in chiaro).
2.3 La sicurezza nell’IoT
Uno dei problemi principali del fenomeno dell’IoT riguarda proprio
la sicurezza e la privacy. Il mondo dell’IoT rappresenta per i cybercriminali
un terreno molto fertile, pieno di dispositivi, quali smart tv, telecamere,
stampanti, frigoriferi e sensori, dotati di scarsi livelli di protezioni in cui gli
utenti utilizzatori non hanno nemmeno strumenti efficaci per rilevare e
contrastare eventuali attacchi. Questi dispositivi possono essere usati da utenti
malintenzionati con l’obiettivo di danneggiarli o prenderne il controllo anche
dell’infrastruttura su cui si basano, senza escludere l’ambiente esterno con cui
interagiscono. Le vulnerabilità di questi dispositivi sono causate
principalmente dalle loro scarse capacità computazionali non consentendo
l’utilizzo di contromisure efficaci come la crittografia e meccanismi di
autenticazione per mettere in sicurezza i dati che contengono e che
comunicano.
Negli ultimi anni si sono verificati numerosi episodi di cyberattacchi
tramite l’utilizzo di dispositivi IoT, come il famoso attacco DDos del 2016 ai
danni della rete DNS del provider Dyn. In quell’attacco milioni di dispositivi
IoT vennero compromessi infettandoli con il virus Mirai. Dopo aver ottenuto
13 SICUREZZA
20. il controllo di un numero così elevato di dispositivi, gli attaccanti li
utilizzarono per indirizzare ai server DNS di Dyn milioni di richieste, più di
quante i server ne potessero effettivamente gestire, causando una interruzione
di servizio di vaste proporzioni. Stampanti, telecamere, router e persino baby
monitor si resero complici di un attacco di tale entità semplicemente perché
dotati di software poco sicuro. Tra il dicembre 2013 e il gennaio del 2014,
Proofpoint, un provider che opera nel campo della sicurezza, rilevò un attacco
che coinvolse elettrodomestici “intelligenti” come frigoriferi, smart tv, forni,
etc… Questo episodio può essere definito come il primo attacco informatico
basato sull’internet delle cose. Gli elettrodomestici compromessi vennero
usati per inviare delle email malevoli destinate a imprese e privati di tutto il
mondo. Da ogni singolo indirizzo IP venivano inviate massimo 10 email tale
da rendere impossibile la rilevazione dell’attacco in base alla posizione; la
violazione non è stata molto difficile per chi l’ha compiuta, infatti è bastato
utilizzare nome utente e password di default. Anche delle semplici pompe di
insulina potrebbero essere hackerate, infatti questi “oggetti” possono essere
accessibili e controllati da remoto da utenti malintenzionati, dal momento che
questi possono comunicare i dati rilevati tramite wireless con una postazione
dotata di display che potrebbe mostrare informazioni manomesse causando
una somministrazione sbagliata di dosi.
I dispositivi IoT raccolgono una grandissima quantità di dati che se
violati compromettono anche la privacy degli utenti. Per questo motivo i
fornitori di dispositivi IoT devono proporre prodotti di qualità e fornire
trasparenza su quali dati vengono utilizzati e in che modo, e assicurare che
siano adeguatamente protetti.
Tra le principali modalità di attacco ai dispositivi IoT troviamo il
DDOS, l’Accesso Diretto, lo Spoofing ed il Tampering. Inoltre, per la
sicurezza dei dispositivi IoT è stato sviluppato dall’IEEE uno standard, noto
come standard IEEE 802.15.4. Infatti questo standard è stato specificamente
pensato per le comunicazioni wireless a corto raggio, basso costo, bassa
velocità e basso consumo energetico, adattandosi, quindi, perfettamente ai
dispositivi IoT.
I temi centrali inerenti alla sicurezza in ambito IoT sono
principalmente l’autenticazione e l’integrità dei dati. L’autenticazione è
complessa perché richiede l’uso di infrastrutture e server che funzionano
tramite lo scambio di messaggi con altri nodi; questo nell’IoT è impraticabile
a causa dei tag RFID passivi che non possono scambiare così tanti dati con i
server di autenticazione. L’integrità dei dati, invece, si riferisce al fatto di
assicurare l’impossibilità di modificare i dati di una transazione e questo
senza un sistema di protezione avanzato chiunque potrebbe alterare i dati
mentre sono immagazzinati nei nodi o mentre attraversano la rete. Questo
SICUREZZA 14
21. problema può essere risolto con l’utilizzo della tecnologia Blockchain, che
sarà oggetto dei prossimi paragrafi.
Dagli esempi, prima mostrati, si può, dunque, affermare che l’Internet
of Things è intrinsecamente vulnerabile in termini di sicurezza dando origine
ad infinite possibilità di hackeraggio, ampliando il terreno d’azione da parte
dei criminali informatici.
2.4 La tecnologia blockchain: la fiducia su Internet
La blockchain è una tecnologia che consente la creazione e gestione
di un ampio registro digitale distribuito e condiviso tra più nodi di una rete,
per la sincronizzazione di numerosi dati relativi alle transazioni. Il concetto
di blockchain fu originariamente ideato nel 1991 da un gruppo di ricercatori,
ma la prima concettualizzazione di blockchain fu introdotta solo nel 2008 ad
opera di Satoshi Nakamoto che l’ha impiegò per creare Bitcoin, la prima
criptovaluta digitale. Nel corso degli anni la blockchain ha acquistato sempre
più credibilità proponendosi come soluzione ed opportunità per diversi campi
applicativi, tra cui L’IoT. Essa è considerata una delle innovazioni
tecnologiche più importanti avvenute in ambito informatico degli ultimi anni,
in grado di mutare radicalmente il mondo dell’impresa, della finanza, della
Pubblica Amministrazione, ed in tanti altri campi applicativi, così come
comporta vantaggi in termini di efficienza, sicurezza e privacy. La
Blockchain sta facendo con le transazioni quello che Internet ha fatto con le
informazioni e lo sta facendo grazie ad un processo che unisce sistemi
distribuiti e crittografia avanzata.
2.4.1 Definizioni di blockchain
Più che una tecnologia, la blockchain è un paradigma, un modo per
interpretare i temi della decentralizzazione e della partecipazione; proprio per
questo motivo esistono varie definizioni.
15 SICUREZZA
22. In generale, la blockchain (o “catena di blocchi”) è una struttura dati
distribuita, condivisa ed immutabile. E’ definita come un registro digitale in
cui le voci sono raggruppate in “pagine” (dette blocchi), concatenate in odine
cronologico e mediante meccanismi crittografici, che ne garantiscono
l’integrità. La sua dimensione cresce nel tempo, ma il suo contenuto è
immutabile, in quanto, una volta scritto non è più nè modificabile nè
eliminabile. Non è richiesto che i nodi si fidino l’un l’altro, infatti per
garantire la coerenza tra le varie copie, l’aggiunta di un nuovo blocco è
globalmente regolata da un protocollo condiviso. Una volta autorizzata
l’aggiunta di un nuovo blocco, ogni nodo aggiorna la propria copia privata.
La blockchain può essere vista anche come un database distribuito,
gestito e condiviso da una rete di nodi di tipo peer-to-peer (P2P), ognuno dei
quali ne possiede una copia privata. Tale database è strutturato in blocchi,
ciascuno contenente dei dati (tipicamente tutte le transazioni che
costituiscono un cambiamento di stato del database che sono mai state
eseguite nel contesto di un medesimo network). Tali blocchi sono tra loro
collegati in rete in modo tale che ciascuna transazione avviata sulla rete debba
essere validata dall’intera rete nell’analisi di ogni singolo blocco.
La blockchain, dunque, può essere visto come un vero e proprio
registro pubblico aperto a tutti per la gestione dei dati correlati alle transazioni
presenti nei blocchi. La stessa “informazione” è dunque presente su tutti i
nodi e pertanto diventa immodificabile se non attraverso una operazione che
richiede l’approvazione della maggioranza dei nodi della rete e che in ogni
caso non modificherà la storia di quella stessa informazione.
2.4.2 Concetti di base
La blockchain si basa sui seguenti concetti:
• Decentralizzazione, ridondanza e distribuzione La blockchain
decentralizzata sfrutta il passaggio di messaggi ad-hoc e un
networking distribuito per fare in modo di memorizzare i dati su tutta
la sua rete in modo tale che ogni nodo possiede una copia privata
dell’intera blockchain, ed evitare di avere un single point of failure in
modo che non esista una centralizzazione che i cracker potrebbero
sfruttare per abbattere l'intero sistema.
• Sicurezza Oltre alla ridonanza e distribuzione, la blockchain utilizza
dei meccanismi crittografici come le funzioni hash, che rendono
SICUREZZA 16
23. estremamente semplice rilevare se c’è stato un tentativo di alterazione
di dati.
• Immutabilità Ciascun blocco è un archivio di tutte le transazioni
effettuate che possono essere modificate solo con l’approvazione dei
nodi della rete. Da qui il concetto di immutabilità.
• Consenso e condivisione Ogni nodo, chiamato anche miner, nel
sistema decentralizzato ha una copia della blockchain: difatti la
qualità dei dati è mantenuta grazie ad una massiva replicazione del
database. Non esiste nessuna copia ufficiale centralizzata e nessun
utente è più credibile di altri, tutti sono allo stesso livello di
credenziali. I nodi miner, ovvero gli utenti, validano le nuove
transazioni le aggiungono al blocco che stanno costruendo dopo aver
verificato l'intera blockchain. Una volta completato il blocco, lo
trasmettono agli altri nodi della rete.
• Trasparenza le transazioni effettuate attraverso la blockchain sono
visibili a tutti i partecipanti, garantendo così trasparenza nelle
operazioni.
Partendo da questi concetti, la blockchain è diventata la declinazione in
digitale di un nuovo concetto di Trust, di fiducia. Per queste ragioni alcuni
ritengono che la blockchain possa assumere anche un valore per certi aspetti
di tipo “sociale e politico”, come piattaforma che consente lo sviluppo e la
concretizzazione di una nuova forma di rapporto sociale, realmente distribuita
e in grado di garantire a tutti la possibilità di verificare, di “controllare”, di
disporre di una totale trasparenza sugli atti e sulle decisioni, che vengono
registrati in archivi immutabili e condivisi, che hanno caratteristica di essere
inalterabili, immodificabili e dunque immuni da corruzione.
17 SICUREZZA
24. 2.4.3 Principi di funzionamento
Il modello proposto dalla blockchain si basa sulla combinazione tra
firma digitale e marca temporale (timestamp). Le transazioni sono
raggruppate nei blocchi della blockchain e il numero di transazioni all'interno
di ognuno di questi blocchi varia in base alla dimensione della transazione
stessa. Ogni blocco, creato da un utente chiamato “miners”, è aggiornato in
tempo reale e mantenuto da tutti i nodi della rete, ciascuno dei quali è
chiamato a verificare ed approvare ogni blocco, prima che quest’ultimo possa
essere aggiunto definitivamente alla catena pubblica condivisa tra tutti gli altri
nodi partecipanti. Le transazioni sono condivise e convalidate dai nodi
secondo un algoritmo di consenso, il quale esegue automaticamente la prova
di verifica di un blocco, senza la necessità di intervento umano o di
un’autorità centrale. Ogni blocco, escluso il primo che è denominato genesis
block, è composto da due parti principali: l'header e il body. Le transazioni
sono racchiuse nel body del blocco e nell'header sono presenti alcuni campi
di gestione del blocco stesso:
• Versione
• L’identificativo del blocco
• Hash del blocco precedente L’Hash è una funzione iniettiva, quindi
non invertibile (unidirezionale), in grado di mappare dei dati di
dimensione arbitraria in una stringa di bit di dimensione prefissata.
Infatti la blockchain è un insieme di blocchi concatenati tramite questa
funzione crittografica, infatti ogni blocco contiene l’hash del blocco
precedente. L’hash rende molto semplice rilevare se c’è stato un
tentativo di alterazione del passato, in quanto una qualunque modifica
al contenuto di un blocco provocherebbe anche la modifica del suo
SICUREZZA 18
Figura 1.2: rappresentazione semplificata di una blockchain
25. hash causando un invalidamento dell’intera blockchain. Un attaccante
in grado di manomettere i dati memorizzati nella blockchain dovrebbe
ricalcolare in cascata anche gli hash di tutti i blocchi successivi a
quello manomesso. Ciò rende l’operazione di manomissione tanto più
difficile quanto è maggiore il numero di blocchi che l’attaccante dovrà
tantare di modificare.
• Merkle root La radice della struttura ad albero utilizzata per
raccogliere tutte le transazioni appartenenti al blocco.
• Timestamp La marca temporale che indica l’istante esatto in cui il
blocco è stato creato.
2.4.4 Algoritmi e protocolli di consenso
Affinchè in dati di una blockchain siano validati e scritti nel registro pubblico
occorre il consenso da parte dei nodi della rete, ovvero un metodo che metta
d’accordo la maggioranza di tali nodi. I protocolli di consenso costituiscono
un elemento cruciale per una blockchain, in quanto hanno il compito di
mantenere l’integrità e la sicurezza di questi sistemi distribuiti. Esistono
diversi tipi di algoritmi che rispettano i protocolli di consenso; i più comuni
sono:
• Proof of Work (PoW) L’algoritmo PoW, dove PoW sta per “Prova
di lavoro”, consiste in una lunga e complessa prova matematica, che
viene richiesta a quei nodi del sistema denominati miners, come
condizione necessaria per essere ritenuti nodi affidabili, al fine di
poter verificare le transazioni della rete e ricevere un compenso in
forma di criptomoneta. L’intero procedimento è chiamato mining:
solo chi è in possesso di una certa quantità computazionale è ritenuto
affidabile.
• Proof of Stake (PoS) Questo metodo di consenso è basato sul
principio di mettere qualcosa “at stake” e cioè in gioco. L’algoritmo
di consenso Proof of Stake sostituisce il mining PoW con un
meccanismo in cui i blocchi vengono convalidati in base alla posta in
gioco dei partecipanti.
19 SICUREZZA
26. 2.4.5 Blockchain pubbliche e private
Le blockchain possono essere classificate in due grandi categorie: blockchain
pubbliche (Permissionless Ledger) e blockchain private (Permisioned
Ledger):
• Le blockchain pubbliche sono aperte, non hanno una “proprietà” e
sono concepite per non essere controllate; chiunque vi può prendere
parte senza che sia necessario alcun permesso. L’obiettivo delle
Permissioneless Ledger è quello di permettere a ciascuno di
contribuire all’aggiornamento dei dati sul Ledger e di disporre, in
qualità di partecipante, di tutte le copie immutabili di tutte le
operazioni. Ovvero di disporre di tutte le copie identiche di tutto
quanto viene approvato grazie al consenso. Questo modello di
blockchain impedisce ogni forma di censura, nessuno è nella
condizione di impedire che una transazione possa avvenire e che possa
essere aggiunta al Ledger una volta che ha conquistato il consenso
necessario tra tutti i nodi (partecipanti) alla blockchain. Le blockchain
pubbliche più note sono Bitcoin e Ethereum (quest’ultima sarà
oggetto di approfondimento nei prossimi paragrafi).
• Le blockchain private, invece, possono invece essere controllate e
dunque possono avere una “proprietà”. Quando un nuovo dato o
record viene aggiunto il sistema di approvazione non è vincolato alla
maggioranza dei partecipanti alla blockchain bensì a un numero
limitato di attori che sono definibili come Trusted. Questo tipo di
blockchain possono essere utilizzate da istituzioni, grandi imprese che
devono gestire filiere con una serie di attori, imprese che devono
gestire fornitori e subfornitori, banche, società di servizi, operatori
nell’ambito del Retail. Le Permissioned Ledger rispondono alle
necessità di un aggiornamento diffuso su più attori che possono
operare in modo indipendente, ma con un controllo limitato a coloro
che sono autorizzati. Le Permissioned Ledger permettono poi di
definire speciali regole per l’accesso e la visibilità di tutti i dati. In
altre parole le Permissioned Ledger introducono nella blockchain un
concetto di Governance e di definizione di regole di comportamento.
Tecnicamente le Permissioned Ledger sono anche più performanti e
veloci delle Permissionless Ledger.
SICUREZZA 20
27. 2.4.6 Blockchain al servizio dell’Internet of Things
L’Internet delle cose fonde mondi fisici e virtuali per la creazione di
ambienti intelligenti, e, come detto in precedenza, il numero di dispositivi
intelligenti connessi sta aumentando vertiginosamente nel corso degli anni.
Con il progressivo ampliamento del business legato a questo tipo di ambienti,
si moltiplicano anche le sfide legate al tema della sicurezza. La blockchain
si candida ad essere l’unica in grado di assicurare sicurezza, privacy ed
affidabilità in ambito IoT: tale tecnologia può essere utilizzata per gestire
l’autenticazione e per facilitare la comunicazione tra oggetti IoT connessi, che
deve avvenire in maniera P2P, oltre a rendere lo scambio di dati più sicuro e
veloce creando record immutabili associati, e garantendo che ogni messaggio
che viene scambiato tra i nodi provenga da una fonte attendibile e che venga
ricevuto dal giusto destinatario. Questo consente ai dispositivi intelligenti di
comunicare in maniera diretta tra loro ed in totale autonomia, oltre a verificare
la validità delle transazioni, senza la necessità di un’autorità centrale. I
dispositivi vengono registrati nella blockchain una volta entrati in una rete
IoT, dopo di che, possono elaborare in autonomia le transazioni. Questo
approccio decentralizzato, quindi, elimina i punti di failure delle reti
tradizionali, facilitando la creazione di un ecosistema più resiliente sul quale
possono operare gli oggetti intelligenti. Al momento la maggior parte degli
ecosistemi IoT non sono decentralizzati, e dipendono da comunicazioni del
tipo client/server, protocolli come SSL, TLS o meccanismi come Public Key
Infrastructure (PKI) per identificare i nodi della rete e controllare le
comunicazioni. Ma con la progressiva crescita del fenomeno IoT, le reti
centralizzate diventeranno presto un collo di bottiglia, causando ritardi e
guasti negli scambi critici a causa dall’eccessivo congestionamento del
traffico di rete. Quindi una soluzione è proprio quella di decentralizzare le reti
IoT per migliorarne sicurezza, privacy, velocità e connettività.
L’applicazione di tecnologia blockchain in ambito IoT può incorrere
in alcune problematiche, tra le quali:
• La maggior parte dei dispositivi IoT ha una scarsa capacità
computazionale, quindi non tutti sono dotati di una potenza di
elaborazione necessaria ad eseguire gli algoritmi di cifratura alla
velocità desiderata.
• Molti dispositivi IoT hanno una capacità di archiviazione molto
limitata, e questo può costituire un problema per la memorizzazione
del registro distribuito di transazioni dal momento che aumenta
sempre più di dimensioni nel corso del tempo.
21 SICUREZZA
28. 2.4.7 Ethereum: principi di base
Ethereum è una piattaforma decentralizzata, pubblica ed open-source
del Web 3.0, basata su blockchain, per la creazione e pubblicazione peer-to-
peer di contratti intelligenti (smart contracts) creati in un linguaggio di
programmazione Turing-completo. Ethereum è una piattaforma per il
“Computing Distribuito” che ha uno dei suoi componenti principali nella
Ethereum Virtual Machin (EVM).
Ethereum può essere visto come il più grande computer condiviso che
è in grado di erogare una enorme potenza disponibile ovunque e per sempre.
Dunque con Ethereum si passa dal concetto di Distributed
Database a Distributed Computing.
E’ una piattaforma che può essere adottata da tutti coloro che desiderano
entrare a far parte della Rete e che in questo modo avranno a disposizione una
soluzione che consente a tutti i partecipanti di disporre di un
archivio immutabile e condiviso di tutte le operazioni attuate nel corso del
tempo e che nello stesso tempo è concepita per non poter essere fermata,
bloccata o censurata. Ethereum è progettata per essere adattabile e flessibile
e per creare facilmente nuove applicazioni. Ethereum è cioè
una Programmable Blockchain che non si limita a mettere a disposizione
“operations” predefinite e standardizzate, ma permette agli utenti di creare le
proprie “operations“. Di fatto è una Blockchain platform che permette di dare
vita a diverse tipologie di applicazioni Blockchain decentralizzate non
necessariamente limitate alle sole cryptocurrencies.
Ethereum dispone di una criptovaluta nativa, chiamata Ether, che oltre
a poter essere scambiata tra account, viene utilizzata dalla piattaforma stessa
come ricompensa ai miner per il lavoro computazionale svolto. A ciascun
account sono associati una chiave privata e una chiave pubblica che prende
nche il nome di indirizzo. Per poter effettuare una transazione è necessario
che il mittente conosca l’indirizzo, cioè la chiave pubblica, dell’account del
destinatario e che firmi digitalmente la transazione prima di inviarla alla rete
Ethereum con la propria chiave privata, dimostrando che il richiedente
dell’operazione è l’effettivo titolare del wallet. Ethereum mette a disposizione
anche l'Ethereum Virtual Machine (EVM), una macchina virtuale
decentralizzata all'interno della quale vengono eseguiti gli smart contract
utilizzando la potenza computazionale dei nodi che costituiscono la rete. Gli
smart contract possono essere scritti utilizzando diversi linguaggi di
programmazione, il più utilizzato dei quali è al momento Solidity. Il codice
sorgente scritto in Solidity, o in un qualsiasi altro linguaggio ad alto livello
SICUREZZA 22
29. fra quelli supportati, deve essere poi compilato per produrre un bytecode
pronto per essere eseguito dalla EVM.
Che cosa sono i contratti Ethereum. Che cosa sono i contratti Ethereum? I
contratti intelligenti sono degli script eseguiti sulla rete di Ethereum, ovvero
nelle Ethereum Virtual Machines dei nodi, che svolgono azioni in base a
determinate condizioni; in questo senso si può affermare che quando
qualcuno vuole svolgere un compito particolare in Ethereum, avvia un
contratto intelligente che coinvolge uno o più attori. Questi contratti scritti
utilizzando “Solidity”, funzionano sfruttando la seguente logica: se la prima
serie di istruzioni viene eseguita, esegui la funzione successiva e
successivamente quella successiva e continua a ripetere fino a raggiungere la
fine del contratto.
Figura 1.3: rappresentazione semplificata di uno smart contract
23 SICUREZZA
30. Capitolo 3
Ethereum: un caso d’uso
In questa sezione si propone un esempio di utilizzo della blockchain
di Ethereum come soluzione per la sostituzione delle batterie dei veicoli
elettrici, in cui vengono utilizzati due tipi di clients IoT, A e B. L’architettura
pensata risolve il problema dell’architettura centralizzata del paradigma
dell’IoT oltre a superare i limiti prestazionali dei dispositivi IoT. I clients di
tipo A sono considerati dispositivi IoT con risorse limitate e sono
responsabili dell'interazione con l’utente e della raccolta dei dati IoT; I clients
di tipo B, invece, sono da considerare come dei dispositivi IoT con risorse
maggiori o uguali ai personal computer. Si utilizza una rete blockchain privata
di Ethereum, non solo perché supporta contratti intelligenti con cui possiamo
progettare interazioni relativamente complesse tra diversi dispositivi IoT, ma
anche perché può generare un nuovo blocco più velocemente di Bitcoin.
Inoltre si utilizza l’algoritmo PoW come protocollo di consenso; e come
metodo di crittografia si utilizza l’account Ethereum. Inoltre, sia i clients di
tipo A che di tipo B sono connessi alla rete Internet.
3.1 Architettura del sistema
La figura sottostante mostra l’architettura del sistema su cui si basa
l’esempio. I clients di tipo A e di tipo B possono entrambi fornire una
interfaccia grafica utente (GUI) e richiamare le API della blockchain, mentre
solo i clients di tipo B contengono tutti i nodi della blockchain, eseguire il
mining e contenere tutti i dati relativi alle transazioni.
24
31. La figura seguente, invece, mostra come i clients di tipo B creano tra loro una
rete P2P, proprio come creato dai nodi pubblici della blockchain di Ethereum.
I clients di tipo A sono collegati ai clients di tipo B formando una topologia
a stella. Inoltre, poiché solo i clients di tipo B sono dotati di alte prestazioni,
essi eseguono il processo di mining e di consenso, risolvendo il problema
delle risorse limitate di cui sono dotati i clients IoT di tipo A.
Figura 1.4: architettura del sistema basata sui clients A e B
P2P
Figura 1.5: architettura generale del sistema
ETHEREUM: UN CASO D’USO 25
32. 3.2 Privacy e sicurezza
Per identificare ciascun dispositivo si utilizzano gli account Ethereum: si
assegna un account Ethereum ad ogni dispositivo in modo tale da identificarlo
in maniera univoca nel sistema. Ogni dispositivo ottiene, oltre al suo account,
anche la sua chiave pubblica e la sua chiave privata. Se un dispositivo IoT
viene violato, un utente malintenzionato può adottare le seguenti azioni:
• Rubare le proprietà dell’account utilizzato su questo dispositivo.
• Violare altri dispositivi attraverso questo dispositivo. Questo
comporta gravi problemi in un sistema centralizzato, poiché il server
centrale può essere facilmente attaccato, ma in un sistema
decentralizzato questa circostanza non può verificarsi.
• Fingersi un account e inviare dati falsi tramite questo dispositivo. Ma
poiché solo i dispositivi di tipo B possono generare un account valido,
l’account falso non può essere convalidato nel sistema grazie ai
meccanismi di consenso della blockchain durante la formazione dei
blocchi e delle transazioni. Inoltre, anche se un dispositivo di tipo B
viene violato, dal momento che è solo un singolo nodo nella rete
blockchain, gli altri dispositivi di tipo B rifiuteranno le richieste da
esso inviate.
3.3 Implementazione del sistema di sostituzione batterie basato su
Ethereum
Figura 1.6: architettura del sistema di sostituzione batteria
26 ETHEREUM: UN CASO D’USO
Si utilizza un Raspberry Pi (RPi) come hardware di un dispositivo IoT di tipo
33. A, ognuno dei quali rappresenta un “veicolo elettrico” (EV). Un dispositivo
di tipo B, invece, rappresenta una “stazione di rifornimento”, ed è costituito
da un’interfaccia di sostituzione della batteria;
In ogni veicolo elettrico, si adopera il framework "Truffle" per invocare il
servizio RPC (Remote Procedure Call) della blockchain, mentre il server
locale "express" viene utilizzato per controllare l'interazione tra le
informazioni della batteria memorizzate in un file su un dispositivo USB di
ciascun veicolo, e la stazione. Il dispositivo USB è connesso al RPi e
rappresenta una reale batteria. Inoltre si utilizza il software "Geth” per mettere
in comunicazione il dispositivo elettrico con la piattaforma di Ethereum.
Smart contract. Per gestire il sistema di sostituzione delle batterie si
implementano tre tipi di contratti intelligenti:
1. Il contratto intelligente "BatteryInformation" viene utilizzato per
gestire e memorizzare le informazioni sulla batteria. Memorizza sia le
informazioni statiche (marchio, prezzo di fabbrica, etc…) che le
informazioni dinamiche (stato di carica, tempi di carica, prezzo,
account del proprietario, etc…).
2. Il contratto intelligente "BalanceProcess" viene utilizzato per gestire
il trasferimento di valore tra gli accounts. Dato che non è funzionale
richiedere a tutti gli utenti dei veicoli elettrici di pagare una
commissione in Ether per l’esecuzione di ogni operazione destinata a
ricompensare i miner del lavoro computazionale svolto per aver
validato una transazione e/o eseguito il codice di uno smart contract,
si utilizza un token come mezzo di garanzia all’interno del sistema.
3. Il contratto intelligente "BatteryInterface" fornisce delle interfacce
API per tre tipi di utenti terminali: operatore della stazione,
proprietario del veicolo elettrico e account supervisore. I proprietari
di veicoli elettrici possono espellere la batteria dal proprio veicolo
elettrico e possono inviare una richiesta di sostituzione della batteria
alla stazione e attendere la conferma. Gli operatori della stazione sono
i dipendenti della stazione stessa, e possono caricare, scaricare,
espellere e riciclare le batterie che appartengono alla stazione e
possono approvare o rifiutare una richiesta di sostituzione della
batteria inviata dai proprietari di veicoli elettrici. L’account
supervisore è il gestore di questo sistema di sostituzione della batteria
che può creare altri tipi di account.
ETHEREUM: UN CASO D’USO 27
34. Flusso di esecuzione del sistema. Inizialmente un veicolo elettrico ha la sua
batteria scarica (che si identifica con il nome “alfa”), mentre la stazione ha
due batterie completamente cariche (che si identificano rispettivamente con
il nome “beta” e batteria “gamma”). Il proprietario del veicolo elettrico
accede all’interfaccia grafica del sistema di sostituzione della batteria ed invia
una richiesta di sostituzione, per sostituire la sua batteria “alfa” con la batteria
“beta” presente nella stazione. Dopo che l’operatore della stazione ha
approvato la richiesta di sostituzione, le informazioni della batteria
memorizzate nella blockchain vengono cambiate. A questo punto, però, le
batterie reali (i dispositivi “usb”) non sono state ancora effettivamente
scambiate, quindi viene segnalata l’incoerenza tra le informazioni presenti
sulla blockchain e le informazioni fisiche. Infine, dopo l’effettivo scambio
delle batterie, non viene emesso alcun avviso, e lo stato corrente della batteria
può essere verificato.
Ci sono tre tipi di operazioni principali che vengono eseguite:
• Inizializzazione. Il veicolo elettrico e la stazione eseguono
rispettivamente l’inizializzazione. Il sistema sul RPi legge le
informazioni di tutte le batterie inserite nelle interfacce USB, e lo
smart contract crea un record per ciascuna batteria contenente le sue
informazioni statiche e genera un unico ID batteria che verrà
memorizzato all’interno del file di informazioni della batteria sul
dispositivo USB.
• Controllo della coerenza delle informazioni della batteria. Ogni
volta che il proprietario di un veicolo elettrico oppure un operatore
della stazione accede alla pagina che mostra le informazioni delle
batterie che appartengono al veicolo elettrico o alla stazione, il sistema
controlla se le informazioni statiche delle batterie registrate nei
dispositivi USB sono coerenti con le informazioni statiche registrate
sulla blockchain. Se viene rilevata una incoerenza verrà visualizzato
un messaggio di avviso. Dopo che il proprietario del veicolo elettrico
ha inviato una richiesta di scambio e l’operatore della stazione ha
approvato la richiesta, è necessario scambiare i rispettivi dispositivi
USB per eliminare l’inconsistenza.
• Carica e scarica della batteria. Quando un utente esegue una
operazione di carica o scarica della batteria, il sistema cambia le
informazioni dinamiche della batteria presenti sulla blockchain, e
contemporaneamente vengono cambiate le informazioni dinamiche
registrate sul dispositivo USB in base all’ID batteria.
ETHEREUM: UN CASO D’USO 28
35. Conclusioni
La realizzazione di questa tesi ha consentito l’approfondimento di due
importanti tecnologie molto importanti: l’Internet of Things, che si sta
affermando sempre più come paradigma rivoluzionario nello scenario delle
reti e consiste nell’insieme degli oggetti e dei sensori che utilizzano la rete
per comunicare qualcosa, cioè dei dati, a qualcos’altro, e la blockchain, un
registro pubblico per la realizzazione di applicazioni totalmente
decentralizzate.
La tesi, infatti, si è concentrata su come far comunicare il mondo della
blockchain con il mondo dell’Internet of Things: in tal senso è stata proposta
un’architettura basata sulla blockchain per la realizzazione di un sistema di
sostituzione batterie per veicoli elettrici.
Il risultato finale del lavoro svolto si è rivelato valido raggiungendo
gli obiettivi pefissati da questa tesi. In particolare:
• L'utilizzo della blockchain di Ethereum per la creazione ed esecuzione
degli smart contract, oltre a garantire immutabilità e sicurezza.
• Grazie ad Ethereum si è potuta creare un'architettura completamente
decentralizzata, superando i problemi causati dalla tradizionale
architettura centralizzata del paradigma dell'IoT.
• Inoltre, sempre grazie all'utilizzo della Blockchain, si sono potuti
superare problemi causati dalle risorse limitate dei dispositivi IoT:
infatti solo i clients IoT di tipo B, che sono dotati di maggiori risorse
computazionali, possono effettuare il processo di mining.
In conclusione, il risultato ottenuto da questa tesi è stato molto soddisfacente
e di grande interesse, oltre a rappresentare una base di partenza per numerosi
sviluppi futuri che potrebbero portare all’approfondimento di altrettante
numerose nuove tecnologie.
29