* autori: Michele Cappelletti, Emanuele Pagliara
Le blockchain stanno rapidamente prendendo piede come architetture rivoluzionarie, aprendo la strada a nuove opportunità di business basate su interazioni sicure e decentralizzate.
I wallet sono lo strumento con cui l’utente si interfaccia con la blockchain, forniscono le funzionalità per gestire il saldo e custodiscono le chiavi necessarie alla firma digitale delle transazioni.
Per i wallet esistono differenti tipologie di architetture e diversi componenti hardware/software disponibili sul mercato, con diversi livelli di accessibilità e affidabilità.
In questo articolo sono analizzati i diversi tipi di wallet e viene proposta un’architettura di wallet che unisce l’accessibilità e i benefici di un wallet online con la sicurezza dei cold storage basati su sistemi disconnessi dalla rete.
Wallet
Un wallet è il software che consente di interagire con una o più blockchain. Consente inoltre di eseguire e ricevere transazioni, visualizzarne lo stato e tenere traccia del proprio saldo.
Le blockchain fanno affidamento su schemi di crittografia asimmetrica per firmare le transazioni e garantire l’immutabilità e la non ripudiabilità dei dati storicizzati. La crittografia asimmetrica prevede l’utilizzo di due tipologie di chiavi: una pubblica, liberamente scambiata sulla rete, e una privata, custodita all’interno del wallet.
La chiave privata è l’elemento fondamentale dei wallet blockchain. Dalla chiave privata vengono generate sia la chiave pubblica che l’indirizzo del wallet e, cosa più importante, la chiave privata serve per firmare digitalmente le transazioni dando prova di autenticità del mittente: le transazioni inviate senza firma vengono riconosciute come non autentiche e rifiutate dalla blockchain.
Nel mondo delle criptovalute un wallet ha la stesse caratteristiche di un portafogli nel mondo reale:
- Nessuno oltre al proprietario deve poter avere accesso al contenuto: in un wallet digitale questo viene garantito dall’utilizzo della chiave privata. Chiunque sia in possesso della chiave privata ha accesso completo al denaro contenuto nel portafogli – ovviamente è compito del proprietario attuare le giuste cautele;
- Inoltre, è comune mantenere nel portafogli solo il necessario per affrontare le spese giornaliere. Lo stesso principio è utilizzabile anche nell’ambito di un wallet digitale, caricando il wallet con il giusto quantitativo di valuta e mantenendo il resto del capitale in un posto più sicuro;
Tipologie di wallet
Esistono differenti tipologie di wallet e diversi stili implementativi sul mercato, con differenti gradi di affidabilità e convenienza. Le soluzioni più diffuse richiedono attenzione nella progettazione e nella realizzazione, mentre i servizi di wallet online forniscono una maggiore semplicità di gestione ma richiedono di affidare la propria chiave privata al fornitore del servizio.
Essendo la chiave privata l’elemento fondamentale di un wallet, le diverse implementazioni si distinguono per i meccanismi di custodia e per i processi di utilizzo della chiave stessa.
Hot wallet
L’hot wallet è l’implementazione più semplice del concetto di wallet. La chiave privata viene custodita direttamente dall’applicazione che si occupa sia di firmare che di inviare transazioni sulla blockchain.
Hardware wallet
Un hardware wallet ha come unica responsabilità la custodia sicura della chiave privata, che avviene all’interno di un dispositivo fisico progettato per essere resistente ai malware. Il dispositivo contenente la chiave privata viene coinvolto nella fase di firma della transazione, normalmente però non è sufficiente in quanto la logica necessaria ad applicare la firma digitale non è implementata dal dispositivo.
Cold storage wallet
La chiave privata di un cold storage wallet viene custodita su un dispositivo disconnesso da Internet (air-gapped o offline), mentre l’operatività online sulla blockchain viene demandata a un secondo wallet con funzionalità ridotte. Le transazioni vengono ricevute e generate sul wallet online, trasferite offline al cold storage wallet che applica la firma digitale e infine ritrasferite sul wallet online per l’invio sulla blockchain.
Multisignature wallet
Il multisignature wallet richiede che la transazione venga firmata da più chiavi private, tipicamente custodite da soggetti differenti. Il coinvolgimento di più chiavi ha lo scopo di ridurre la possibilità di perdita dei fondi del wallet a causa di furti o smarrimenti delle chiavi stesse: questa modalità può anche essere utilizzata in caso di proprietà condivisa dei valori custoditi nel wallet.
Custodial wallet / web wallet
Il custodial / web wallet viene generato e conservato da un servizio di terze parti che conserva anche la chiave privata e consente, tramite le funzionalità del servizio o attraverso un mediatore, di effettuare operazioni e accedere al saldo.
Questo tipo di custodia del wallet rende critica l’attendibilità del responsabile del servizio a cui il wallet è affidato: sono noti e non così poco comuni casi di furto del wallet da parte di attaccanti al sistema del servizio terzo o da parte del responsabile del servizio stesso.
Paper wallet
Un paper wallet non è propriamente una tipologia di implementazione di un wallet, ma piuttosto una metodologia di conservazione della chiave privata e di altre informazioni relative al wallet stesso: il paper wallet non è altro che la versione testuale di tutte le informazioni fondamentali del wallet.
La natura testuale delle informazioni rende possibile e conveniente l’utilizzo di un documento. È evidente che tale forma permette da una parte la conservazione in sistemi fisici considerati sicuri, come ad esempio una cassetta di sicurezza, d’altra parte la possibilità di evitare totalmente l’esposizione a rischi di attacco informatico e la perdita di dati dovuti al possibile deterioramento dei supporti digitali.
Principi di design e requisiti
Scegliere quale tipologia di wallet utilizzare per un servizio basato su blockchain dipende ancora una volta dai requisiti business e, solo in un secondo momento, da considerazioni tecniche o tecnologiche. In generale, nel contesto di erogazione di un servizio, i fattori di continuità e accessibilità del servizio stesso sono tra i principali requisiti.
I cold storage wallet rappresentano l’architettura considerata più sicura dato che limitano fisicamente la maggior parte degli attacchi possibili; tuttavia la disconnessione fisica tra il sistema e il wallet richiede l’intervento umano e implica un forte vincolo di sincronizzazione nel processo.
Un altro fattore chiave nella scelta dell’architettura del wallet è l’affidabilità: sia nel caso di hot wallet che nel caso di custodial/web wallet, la chiave privata è esposta a rischio di furto da chiunque riesca a guadagnare accesso privilegiato a tale informazione.
La segregazione fisica è quindi la via più sicura per custodire la chiave privata: allentare questo vincolo senza compromettere la sicurezza è stata la sfida da affrontare, con l’obiettivo di creare una soluzione che garantisca allo stesso tempo sicurezza e business continuity.
Da tempo Imola Informatica sperimenta diverse soluzioni che utilizzano wallet blockchain e, dalla nostra esperienza, la segregazione fisica non è l’unica attuabile, per questo abbiamo mantenuto il principio di:
- separazione tra chiave pubblica (funzione di verifica) e chiave privata (funzione di firma digitale);
- isolamento della chiave privata dal resto del sistema informativo;
Per farlo, ad Imola abbiamo utilizzato metodologie consolidate e senza vincolarsi ad una particolare tecnologia. Il risultato è una tipologia di wallet che si pone tra il cold storage e l’hot wallet: da questo la denominazione di warm wallet.
Architettura del warm wallet
L’architettura del warm wallet si basa su due componenti logici:
Il signing wallet è il componente che conserva la chiave privata e applica la firma digitale alle transazioni. È il componente da mantenere in sicurezza, per questo viene isolato sia dalla blockchain che dal resto di altri eventuali componenti del sistema informativo. L’isolamento può essere implementato su più livelli.
- Rete: il dispositivo sul quale viene eseguito il signing wallet risiede in una rete dedicata resa visibile solo ai componenti autorizzati ad accedere alle sue funzionalità; è altrettanto possibile limitare la visibilità in uscita usando tecniche di routing e firewalling;
- Contesto di esecuzione: il signing wallet viene eseguito in ambiente dedicato e seguendo il principio di minimo privilegio; è altrettanto possibile utilizzare una base dati criptata e fisicamente indipendente (ad es. dislocata in luogo sicuro);
- Accesso alle funzionalità del componente: le funzionalità devono essere accessibili solo interfacciandosi ad API, applicando autenticazione e autorizzazione;
- Chiave privata criptata: la chiave privata può essere mantenuta in forma criptata sulla base dati, mentre la chiave di decriptazione mantenuta su un componente vault acceduto a sua volta in modo autenticato;
Il watching wallet è il componente online – connesso alla blockchain – che conserva esclusivamente la chiave pubblica, tramite la quale gestisce l’operatività sulla blockchain: mantiene attiva la connessione con i nodi della rete, tiene traccia dei fondi spendibili dai quali ricava il saldo e prepara le transazioni.
Le transazioni, una volta create, necessitano della firma digitale tramite chiave privata: il watching wallet sfrutta le funzionalità del signing wallet trasmettendo il pacchetto dati rappresentante la transazione non ancora firmata. Il signing wallet fa gli opportuni controlli di sicurezza (i.e., indirizzo di destinazione, ammontare del saldo trasferito, etc) e quindi restituisce la transazione firmata e pronta da inviare sulla blockchain.
Conclusioni
Abbiamo visto come il concetto di wallet sia declinato a seconda del contesto di utilizzo. Lo scenario tipico vede una persona come utente fruitore delle funzionalità del wallet, ma cosa cambia quando l’utente è un’applicazione software?
Il contesto in cui Imola Informatica ha operato è quello di un servizio IT erogato all’utente in modo diretto o indiretto, tale servizio può essere di varia natura e l’integrazione della blockchain nel processo non deve comprometterne l’erogazione.
Se la business continuity è fondamentale, la sicurezza è un requisito altrettanto critico: se sottovalutato può portare a sua volta alla compromissione nell’erogazione del servizio e ad altre conseguenze possibilmente anche più gravi (perdita di denaro, conseguenze legali…).
L’architettura del warm wallet raccoglie la sfida di coniugare business continuity e sicurezza e lo fa senza dipendere da una particolare implementazione di blockchain o tecnologia per la sicurezza.