La sicurezza informatica nell’utilizzo delle criptovalute

Siamo abituati ad avere una moltitudine di credenziali e a dimenticarle costantemente recuperandole grazie al gestore del servizio. Con un sistema decentralizzato e basato su crittografia questo non è possibile, e allo stesso modo è impossibile annullare transazioni fraudolente effettuate a nostro danno. Per l’utente investitore, esperto in materia di finanza tradizionale, diventa dunque necessario non solo conoscere i rischi economici dell’operazione di investimento ma anche formarsi in maniera sufficiente riguardo le criticità tecniche dell’attività svolta, valutando i rischi specifici dell’affidarsi a un intermediario e le misure organizzative e tecniche per operare invece in completa autonomia.


L’utilizzo delle tecnologie blockchain si sta diffondendo sempre di più in numerosissimi ambiti. Ormai chiunque anche non si intenda di informatica conosce questo termine, pur ignorandone molto spesso il significato e soprattutto la tecnologia che ne è alla base.

Proprio l’inconsapevolezza, con la quale la maggior parte dell’utenza è abituata a trattare gli strumenti tecnologici che utilizza abitualmente, può essere causa di spiacevoli effetti nell’ambito di una delle applicazioni più famose della tecnologia blockchain, ovvero l’utilizzo delle cosiddette criptovalute in qualità di metodo di pagamento o, ancor di più, se utilizzate a scopo di investimento o speculazione.

L’utente che si appresta all’utilizzo di criptovalute infatti non solo deve essere consapevole di come effettuare a livello pratico una transazione, ma deve preoccuparsi della custodia sicura delle proprie credenziali crittografiche, cosa che non è affatto scontata a giudicare dai numerosi furti o smarrimenti che quotidianamente sono riportate dalle community dedicate al tema.

Il fenomeno è poi drammaticamente evidente nel caso di utenti investitori o speculatori, spesso esperti di strumenti economici tradizionali, già dotati di buona dimestichezza nell’utilizzo di strumenti informatici a scopo di trading e pertanto altamente confidenti nelle proprie possibilità, ma in realtà totalmente impreparati nel gestire la sicurezza dei propri dati in quanto abituati alla tutela che offrono i tradizionali istituti di credito.

Il sistema delle criptovalute, tra le quali bitcoin è l’esempio più significativo, si basa su registri pubblici decentralizzati su diversi nodi partecipanti e le cui “pagine” sono costituite da blocchi (da qui il temine blockchain). Ogni blocco via via aggiunto alla catena contiene un numero variabile di transazioni effettuati dagli utenti, ciascuna delle quali per essere valida deve essere firmata con la chiave privata dell’utente che la effettua, unica prova valida e necessaria per l’attribuzione di un determinato patrimonio ad un soggetto. Ciascuno dei nodi partecipanti alla blockchain mantiene una copia del registro completo e si occupa di creare nuovi blocchi risolvendo problemi crittografici via via sempre più complessi il cui scopo è creare un nuovo blocco che, secondo uno specifico criterio progettuale, integri l’impronta del precedente e delle transazioni in esso contenute, rendendo il registro stesso via via immutabile.

E’ lampante dunque che la creazione, l’utilizzo e la custodia della chiave privata del proprio portafoglio siano fondamentali per mantenere il controllo sul proprio patrimonio in quanto ogni transazione è irrevocabile e i fondi a propria disposizione, sebbene registrati in modo sicuro e immutabile sulla blockchain e non direttamente su un mezzo tangibilmente a nostra disposizione, sono effettivamente spendibili solo se la transazione è effettivamente firmata con la chiave privata corretta che solo noi possiamo e dobbiamo possedere, una per ciascuna dei portafogli (wallet) che intendiamo creare. Sulla blockchain non esiste un sistema di “reset password” come nei servizi centralizzati più comuni.

Spesso inoltre è preferibile non utilizzare un solo portafoglio e una sola chiave privata, ma crearne diversi (potenzialmente in numero infinito), principalmente a scopo di riservatezza dato che la maggior parte delle blockchain, Bitcoin in testa, è pubblica e ne mostra il saldo complessivo. Attestare immediatamente l’appartenenza di uno specifico portafoglio ad una persona fisica è reso difficile dall’assenza di un ente certificatore, ma non impossibile incrociando dati noti, specie utilizzando servizi di intermediazione come vedremo più avanti.

All’utente deve essere però chiaro che questo meccanismo di tipo informatico non può prescindere dall’implementazione di stretti criteri di sicurezza informatica nell’ambiente dal quale si opera. Tali misure sono molteplici e diverse, e considerando che molto spesso una maggior sicurezza significa una minore semplicità e immediatezza di configurazione e utilizzo dello strumento, devono essere ovviamente parametrate al patrimonio da proteggere.

Sicuramente la base da cui partire è l’utilizzo di password complesse, di un sistema operativo aggiornato, protetto da un antivirus aggiornato e da uno specifico software anti-malware e anti-ransomware, unitamente alle raccomandazioni generali di sicurezza, quale ad esempio non visitare categorie di siti notoriamente poco sicuri. Spesso infatti, a causa delle attività poco regolamentate svolte, tali siti non effettuano controlli sui fornitori di banner pubblicitari e si configura in questo caso il rischio non solo di annunci ingannevoli, ma della presenza di codice macchina specificamente malevolo, caricato automaticamente all’apertura della pagina senza bisogno di interazione da parte dell’utente. A tal proposito, i maggiori browser (Google Chrome, Mozilla Firefox, Microsoft Edge) permettono l’installazione di apposite estensioni ad-blocker e script blocker (ad esempio AdBlock Plus, no-Script, uBlock) che si occupano di riconoscere e intercettare banner pubblicitari e codice macchina dinamico diverso da quello utilizzato per rappresentare la struttura della pagina web originale, garantendo un maggiore livello di sicurezza e richiedendo all’utente un esplicito consenso alla visualizzazione di contenuti sospetti e all’esecuzione di contenuto non strettamente necessario alla sola visualizzazione del contenuto.

Un’ulteriore precauzione operativa da adottare in linea generale è quella di non aprire con leggerezza link ricevuti via email, controllare sempre nell’anteprima che il link punti effettivamente all’URL indicato, diffidare da qualsiasi comunicazione con allegati o link che presentino carattere di urgenza ingiustificata tali da indurci ad agire d’impulso, senza riflettere sull’effettiva operazione e sugli eventuali rischi.

Allo stesso modo dobbiamo ricordarci che, essendo le transazioni in criptovaluta irrevocabili, è necessario prestare particolare attenzione all’indirizzo al quale stiamo inviando i nostri fondi durante una transazione. È possibile infatti che attacchi confezionati ad hoc possano modificarlo a nostra insaputa, trasformandolo in quello dell’attaccante. Questo fenomeno rischia di essere ancora più pericoloso qualora si utilizzi per comodità un cosiddetto “QR code” per codificare l’indirizzo di destinazione, la cui decodifica spesso per leggerezza non viene confrontata con l’effettivo indirizzo desiderato. Tale precauzione è da adottare a maggior ragione si si stanno utilizzando ad esempio dispositivi di prelievo ATM per criptovalute, sui quali di recentemente sono stati rinvenuti adesivi preapplicati posti sulle fotocamere deputate alla scansione dei codici QR per il prelievo dei fondi, inducendo l’utente poco accorto a inviare automaticamente i propri prelievi a indirizzi i propri predeterminati.

Una misura più avanzata può essere l’utilizzo di una cosiddetta “VPN”, Virtual Private Network, ossia un tunnel crittografato, creato nella rete internet tra noi e un apposito provider del servizio che ci garantisca un parziale anonimato ma che soprattutto rafforzi la sicurezza della nostra connessione, di norma già crittografata, instradandola in un canale sicuro diverso da quello normalmente predisposto solo dal nostro provider, già noto solitamente ad un attaccante che voglia tentare di sottrarre il nostro traffico dati.

Nell’ottica di una minor esposizione agli attacchi si può valutare l’utilizzo di un sistema operativo diverso da Microsoft Windows, molto complesso e di conseguenza più esposto ad attacchi informatici, ma soprattutto il più utilizzato e quindi il più statisticamente appetibile per chi si impegna a compiere attacchi su larga scala, preferendo magari l’intrinsecamente più sicuro e meno utilizzato GNU/Linux.

Nel caso di attività molto rilevanti dal punto di vista patrimoniale è consigliabile arrivare a isolare totalmente la macchina che si utilizza per le operazioni, ricorrendo ad una macchina fisicamente dedicata a tale utilizzo o, in maniera più pratica, ricorrendo a una c.d. “virtual machine” ossia creando una macchina virtuale con un proprio sistema operativo totalmente separato a livello logico ma che viene eseguito sullo stesso hardware della propria, funzionando quindi operativamente alla stregua di un programma ma in un ambiente segregato rispetto alla macchina principale che lo ospita.

Una volta affrontate le criticità derivanti da agenti esterni, dobbiamo naturalmente tutelarci anche da eventi catastrofici derivanti dal fallimento dei sistemi di memorizzazione, effettuando un backup sicuro della nostra chiave privata dopo averla generata, così come dovrebbe avvenire periodicamente per tutti i nostri dati più preziosi. E’ prudente effettuare molteplici copie, su un mezzo fisicamente separato dalla nostra abituale postazione di lavoro, preoccupandoci naturalmente anche della sicurezza fisica ma anche logica del backup stesso, proteggendolo con opportuna cifratura.

Ulteriore cura è da applicarsi alle cosiddette applicazioni per l’autenticazione a due fattori, il cui utilizzo alternativo a email o sms di verifica è tipicamente richiesto dai servizi più delicati e tecnologicamente avanzati: al momento della generazione di nome utente e password verrà infatti creato anche un codice di “sincronizzazione” da inserire nell’app scelta come authenticator (Google Authenticator, Microsoft Authenticator), che da quel momento, su base temporale, potrà creare un codice 2fa valido per quel determinato servizio. In mancanza di esplicite forme di backup dell’applicazione authenticator (che per questioni di sicurezza è quasi la norma), è buona norma istallare tale app e inserire tale codice su diversi devices, garantendosi quindi la possibilità di accedere anche in caso di guasto critico sul terminale abituale.

Una volta chiare le misure di sicurezza generali da adottare per la sicurezza e la conservazione del dato, possiamo esaminare nello specifico le diverse modalità pratiche di operatività con criptovalute.

A meno che non si allestisca un complesso nodo validatore e si accumuli criptovaluta come ricompensa automaticamente erogata dalla blockchain per questa attività, il c.d. “mining” nel caso di Bitcoin, il primo passaggio per entrarne in possesso è rivolgersi a un soggetto che effettui un cambio tra la c.d. valuta fiat (euro, dollari, valute correnti in diversi paesi) e la criptovaluta desiderata.

Lo scambio può avvenire tra soggetti privati su base fiduciaria, registrando quindi direttamente lo scambio sulla blockchain, oppure utilizzando un intermediario, c.d. “servizio exchange” che una volta effettuate le necessarie identificazioni del soggetto a scopo di sicurezza (criteri imposti recentemente da normative fiscali e antiriciclaggio) accrediterà la somma pattuita sull’account dell’utente.

Ma come creare la propria chiave privata e come conservarla in modo sicuro per l’utilizzo ricorrente o per una conservazione del proprio patrimonio nel tempo?

Il modo più comune e semplice (ma anche il meno sicuro, come vedremo), è quello di continuare a utilizzare il servizio offerto dall’intermediario.

Tipicamente il servizio di exchange si occupa di convertire la valuta fiat in criptovaluta secondo la quotazione del momento e di fornire all’utente un account per operare con la criptovaluta detenuta: scambiare nuovamente la criptovaluta con moneta fiat, inviare e ricevere pagamenti. Per effettuare le operazioni sulla blockchain il gestore del servizio utilizza però sempre la propria chiave privata, riconducibile esclusivamente al proprio portafoglio (tipicamente più di uno per questioni tecniche e di sicurezza, ma sempre di sua proprietà), ed è il gestore stesso a tenere traccia dell’effettiva giacenza di ciascuno dei propri utenti all’interno del proprio portafoglio, allo stesso modo di una banca ordinaria che tiene traccia della giacenza sui conti correnti di ciascun cliente.

Il vantaggio di questa soluzione è che l’utente cliente del servizio di exchange deve conservare e custodire i dati di accesso allo stesso modo di quelli di un qualunque servizio online; un nome utente, una password e auspicabilmente un token per l’autenticazione a due fattori. Il gestore di norma, attraverso una procedura di KYC, conosce tutti i dati dell’utente e risulta dunque sempre possibile recuperare i dati di accesso all’account in caso di smarrimento, attraverso un’apposita procedura e presentando un documento di identità.

Allo stesso tempo questo sistema presenta diversi svantaggi: un furto di identità può ad esempio rivelarsi fatale, fornendo accesso completo ai fondi da parte di malintenzionati. Gli exchange rappresentano ad oggi anche il boccone più prelibato per hacker e truffatori, e non tutti sono in grado di garantire un adeguato livello di sicurezza informatica e patrimoniale, non avendo la possibilità di poter rifondere i clienti di eventuali furti avvenuti sul proprio portafoglio. E’ inoltre tristemente noto il caso di un exchange canadese il cui fondatore sia defunto senza lasciare a nessuno dei collaboratori una copia della chiave privata del portafoglio principale sul quale erano attestate la maggior parte delle criptovalute di proprietà degli utenti, per sempre bloccate.

Un vecchio adagio in voga tra gli esperti del settore recita, non per caso: “Not your keys, not your money”. Nell’ambito di un sistema che fa della decentralizzazione e dell’indipendenza da un’autorità centrale il proprio punto di forza, affidarsi completamente a un soggetto terzo è certamente un controsenso.

L’alternativa a questo sistema è effettuare direttamente le operazioni sulla blockchain, creando e custodendo personalmente la propria chiave privata, soluzione attuabile in diversi modi:

La creazione di un c.d. “paperwallet”(attraverso siti come https://www.bitaddress.org/)

Una tecnica più analogica e “casereccia” ma non per questo poco sicura. Caricando temporaneamente un programma sul browser della macchina dell’utente, il sito genera una chiave privata valida per la blockchain scelta, che dovrà essere memorizzata a cura dell’utente, ipoteticamente anche su un foglio di carta stampabile.

Sicuramente una soluzione poco pratica per chi ha intenzione di inviare o ricevere pagamenti in maniera ricorrente, ci si dovrà infatti appoggiare a un servizio terzo per effettuare le transazioni ma l’utente sarà esposto ai rischi sopra descritti solo durante l’operazione e solo per la quota di patrimonio impiegata nella stessa, ritrasmettendo comunque il capitale sul proprio esclusivo portafoglio una volta terminate le operazioni.

Un altro vantaggio di questa tecnica è la semplicità dal punto di vista della conservazione: un foglio di carta è comunque facilmente copiabile, essendo un bene fisico non è soggetto a furti attraverso canali informatici e in generale è poco appetibile anche nel caso di intrusioni fisiche (è bene fare attenzione tuttavia al deperimento). Il rischio informatico in questo caso è modesto, a patto di operare da una macchina sana, peraltro non necessariamente sempre la stessa, al momento della generazione e mentre si compiono le operazioni.

La creazione e l’utilizzo di una chiave privata attraverso un apposito “software wallet” (ad esempio jaxx, exodous)

L’evoluzione informatica della soluzione precedente. Un software scaricato appositamente sul nostro pc si occupa di generare la chiave privata (o più chiavi private) che restano memorizzate esclusivamente sulla macchina locale. Le transazioni vengono effettuate utilizzando il programma stesso, che si interfaccerà direttamente con la blockchain, invierà e riceverà le transazioni.

Una soluzione certamente più pratica e immediata, adatta a chi intende effettuare movimenti ricorrenti, ma che coinvolge prepotentemente il tema della sicurezza informatica, sia nell’ambito della macchina attraverso la quale si opera sia nella verifica del programma utilizzato. Si tratta spesso di soluzioni open-source il cui codice è disponibile pubblicamente per il controllo, tuttavia è bene appurare che il programma non sia stato nel frattempo manomesso, effettuando un confronto tra l’hash del file originale derivante dalla compilazione del codice macchina verificato (messo a disposizione dal distributore) e quello effettivamente scaricato. Ricordiamo inoltre che sebbene non sia il programma stesso a contenere effettivamente la criptovaluta, è necessario esportare le proprie chiavi private dopo la generazione ed effettuarne un backup in modo sicuro.

L’utilizzo di un c.d. “hardware wallet”, un dispositivo che generi una chiave privata e la conservi al sicuro su un chip interno dedicato (Ledger Wallet, Trezor)

La soluzione in assoluto più sicura per l’utilizzo di criptovalute e che mantiene un grado di praticità pari al precedente con il solo vincolo di avere con sé il dispositivo. La chiave privata viene generata dal dispositivo al primo avvio e rimane sempre all’interno dello stesso, il suo utilizzo è protetto da un PIN scelto dall’utente. Di norma il dispositivo lavora con un’applicazione companion simile al software wallet, che in questo caso però si occuperà però solo di predisporre la transazione e la invierà all’hardware wallet (collegato via usb o bluetooth) per la firma. Il dispositivo chiederà all’utente di inserire fisicamente il PIN su un tastierino e restituirà al programma la transazione già firmata e pronta per l’invio in blockchain, senza esporre mai la chiave privata.

Anche in questo caso sono necessarie specifiche misure, considerando che il fulcro della nostra sicurezza è costituito dal wallet hardware. E’ consigliabile acquistare il dispositivo direttamente dal produttore e non da rivenditori terzi, diminuendo i passaggi di mano e dunque le potenziali sofisticazioni. In ogni caso è prudente effettuare un reset del dispositivo appena lo si riceve, provvedendo anche a reinstallare il firmware (il sistema operativo integrato del dispositivo) scaricandolo dal sito del produttore e verificandone anche in questo caso l’effettiva genuinità con un confronto degli hash. A scopo di backup è consigliabile esportare in maniera forzata la chiave privata ed effettuarne il backup in modo indipendente, oppure acquistare un secondo dispositivo e importarvi la chiave privata generata sul primo dispositivo in modo da disporre di due dispositivi identici a livello logico e funzionale.

In questo modo infatti non solo garantiamo un backup efficace e sicuro, ma anche la possibilità di mantenere un’immediata operatività (fondamentale in mercati molto volatili) anche in caso di guasto o smarrimento del dispositivo, specificando che in quest’ultima eventualità è comunque prudente correre immediatamente ai ripari generando una nuova chiave privata e trasferendo i fondi su un nuovo portafoglio. Come in qualsiasi altro ambito informatico infatti, benchè il dispositivo sia protetto da un PIN, non è prudente dare per scontato che un accesso fisico non consenta comunque di risalire ai dati memorizzati al suo interno e dunque, nello specifico, alla chiave privata.