Durante il tirocinio presso la Consoft Sistemi ho preso parte al progetto PININ, che pone come obiettivo principale la digitalizzazione della tracciabilità agroalimentare appoggiandosi alla tecnologia blockchain. In particolare, mi sono occupato di implementare in linguaggio Java, un reverse proxy per il controllo degli accessi che si interponga tra i client e i nodi delle blockchain consortili erogate secondo un modello PaaS tramite protocollo JSON-RPC. La Consoft propone l'implementazione di una blockchain pubblica, che di natura è permissionless, priva di ogni controllo sull'accesso ai dati. Oltre ad una blockchain pubblica per la tracciabilità alimentare, si pone l'obbiettivo di riservare ad alcuni clienti del servizio delle blockchain consortili, con accesso controllato, al fine di memorizzare i dati sensibili accessibili solamente ad una categoria di persone da essi selezionata. Questa è l'idea di base da cui nasce il mio progetto: aggiungere ad una blockchain permissionless la possibilità di dedicare spazi privati a coloro che li necessi-tano, implementando blockchain consortili privatizzate che gestiscano il controllo sugli accessi utilizzando come credenziali direttamente i wallet crittografici degli utenti. È opportuno precisare che i nodi interni della blockchain comunicano con protocolli che per loro natura hanno un alto grado di sicurezza (RLPx, Kademlia); l'unica problematica riscontrata riguarda il passaggio dati dai client ai nodi della blockchain, poiché le informazioni viaggiano su richieste HTTP con protocollo JSON-RPC, il quale non prevede alcun controllo sull'accesso ai dati. Grazie all'implementazione di un reverse proxy è stato possibile verificare gli accessi da richiesta HTTP con protocollo JSON-RPC, interposto tra i client che richiedono l'accesso e i nodi delle blockchain consortili. Quindi, si intende valutare i criteri selettivi di accesso. Inizialmente proposi di inserire una semplice basic auth, classico login con utente e pas-sword, tuttavia sarebbe venuta meno la mission dell'azienda: proporre l'implementazione di blockchain permissionless, poiché con gestione degli accessi in basic auth avrebbero acquisito identità permissioned. Dopo una successiva fase di analisi emerse la soluzione: tramite apposite librerie e framework (web3j in ambiente Java con Spring framework) verificare in primo luogo che l'utente richiedente l'accesso fosse effettivamente un utente esistente con wallet valido. Successivamente, data una lista di address autorizzati secondo criteri implementabili, verificare che l'indirizzo entrante coincidesse con uno di quelli abilitati, scelti in base ai bisogni specifici di ogni cliente. Completata questa fase è stata aggiunta una funzionalità: connettere il programma Java a uno smart contract tramite wrapping, e implementare i criteri decisionali su di esso al fine di rendere la decisione sugli accessi distribuita sul ledger. Attualmente i criteri scelti sono due: lo user deve avere il bilancio del credito maggiore di zero, e il suo indirizzo deve comparire in una lista contenuta nello smart contract in questione. Il grande vantaggio che quest'innovazione porta, consiste nell'avere criteri decisionali distribuiti e decisi da smart contract che per definizione una volta pubblicati non sono modificabili da terze parti, questo garantisce un sensibile aumento di sicurezza.
Gestione degli accessi tramite consenso distribuito per una blockchain in cloud
MONDINI, MATTEO
2019/2020
Abstract
Durante il tirocinio presso la Consoft Sistemi ho preso parte al progetto PININ, che pone come obiettivo principale la digitalizzazione della tracciabilità agroalimentare appoggiandosi alla tecnologia blockchain. In particolare, mi sono occupato di implementare in linguaggio Java, un reverse proxy per il controllo degli accessi che si interponga tra i client e i nodi delle blockchain consortili erogate secondo un modello PaaS tramite protocollo JSON-RPC. La Consoft propone l'implementazione di una blockchain pubblica, che di natura è permissionless, priva di ogni controllo sull'accesso ai dati. Oltre ad una blockchain pubblica per la tracciabilità alimentare, si pone l'obbiettivo di riservare ad alcuni clienti del servizio delle blockchain consortili, con accesso controllato, al fine di memorizzare i dati sensibili accessibili solamente ad una categoria di persone da essi selezionata. Questa è l'idea di base da cui nasce il mio progetto: aggiungere ad una blockchain permissionless la possibilità di dedicare spazi privati a coloro che li necessi-tano, implementando blockchain consortili privatizzate che gestiscano il controllo sugli accessi utilizzando come credenziali direttamente i wallet crittografici degli utenti. È opportuno precisare che i nodi interni della blockchain comunicano con protocolli che per loro natura hanno un alto grado di sicurezza (RLPx, Kademlia); l'unica problematica riscontrata riguarda il passaggio dati dai client ai nodi della blockchain, poiché le informazioni viaggiano su richieste HTTP con protocollo JSON-RPC, il quale non prevede alcun controllo sull'accesso ai dati. Grazie all'implementazione di un reverse proxy è stato possibile verificare gli accessi da richiesta HTTP con protocollo JSON-RPC, interposto tra i client che richiedono l'accesso e i nodi delle blockchain consortili. Quindi, si intende valutare i criteri selettivi di accesso. Inizialmente proposi di inserire una semplice basic auth, classico login con utente e pas-sword, tuttavia sarebbe venuta meno la mission dell'azienda: proporre l'implementazione di blockchain permissionless, poiché con gestione degli accessi in basic auth avrebbero acquisito identità permissioned. Dopo una successiva fase di analisi emerse la soluzione: tramite apposite librerie e framework (web3j in ambiente Java con Spring framework) verificare in primo luogo che l'utente richiedente l'accesso fosse effettivamente un utente esistente con wallet valido. Successivamente, data una lista di address autorizzati secondo criteri implementabili, verificare che l'indirizzo entrante coincidesse con uno di quelli abilitati, scelti in base ai bisogni specifici di ogni cliente. Completata questa fase è stata aggiunta una funzionalità: connettere il programma Java a uno smart contract tramite wrapping, e implementare i criteri decisionali su di esso al fine di rendere la decisione sugli accessi distribuita sul ledger. Attualmente i criteri scelti sono due: lo user deve avere il bilancio del credito maggiore di zero, e il suo indirizzo deve comparire in una lista contenuta nello smart contract in questione. Il grande vantaggio che quest'innovazione porta, consiste nell'avere criteri decisionali distribuiti e decisi da smart contract che per definizione una volta pubblicati non sono modificabili da terze parti, questo garantisce un sensibile aumento di sicurezza.File | Dimensione | Formato | |
---|---|---|---|
869500_tesidilaurea.pdf
non disponibili
Tipologia:
Altro materiale allegato
Dimensione
3.79 MB
Formato
Adobe PDF
|
3.79 MB | Adobe PDF |
I documenti in UNITESI sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.
https://hdl.handle.net/20.500.14240/28640