di Luca Cadonici
Il presente articolo è nato a seguito di esperienze professionali che hanno visto lo scrivente operare come Ausiliario di Polizia Giudiziaria in supporto al personale della Guardia di Finanza, e sviluppa le tematiche presentate nel corso della quinta edizione dell’evento annuale organizzato dall’Osservatorio Nazionale sull’Informatica Forense, tenutosi nella giornata del 18 ottobre 2019 ad Amelia, vicino Terni. Al personale di Polizia Giudiziaria presente, che ringrazio per l’attenzione e la partecipazione, vanno queste righe, sperando di poter offrire informazioni utili e spunti operativi in un ambito non ancora normato, in particolare dal punto di vista procedurale, durante le delicate fasi di perquisizione e sequestro.
Con il termine “criptovaluta”, traduzione letterale dell’inglese cryptocurrency, si indica una rappresentazione digitale di valore basata sulla crittografia, consistente in un insieme di asset digitali paritari e decentralizzati di cui i Bitcoin sono ad oggi l’esempio più conosciuto e diffuso.
A differenza delle monete tradizionali, regolamentate e centralizzate da autorità riconosciute quali le banche centrali, le criptovalute utilizzano tecnologie di tipo peer-to-peer (p2p) su reti i cui nodi risultano costituiti da computer di utenti, paritari tra loro e situati in tutto il globo.
La sicurezza di gestione di questo sistema di scambio basato sulla crittografia asimmetrica è strettamente legata alla conservazione della chiave privata, il codice identificativo di ciascun conto che può essere usato per movimentare le criptovalute presenti nei vari DLT (distributed ledger technology), i registri pubblici alla base del sistema di scambio di criptomonete, prima fra tutti la blockchain, contenente lo storico delle movimentazioni dei Bitcoin, dalla loro creazione in poi.
1. Wallet di criptovalute
Con il termine wallet si indicano comunemente i sistemi hardware e software utilizzati per conservare le chiavi pubbliche e private necessarie per realizzare le transazioni in criptovaluta: le prime utilizzate per produrre indirizzi comunicabili a terzi al fine di effettuare le transazioni sui conti e le seconde utilizzate per firmare le transazioni in uscita. A monte della generazione delle chiavi pubbliche e private però, i sistemi di criptovalute generano un solo grande numero, il seed da cui derivano in modo differenti coppie multiple di chiavi pubbliche e private utilizzate sui wallet.
Chiunque sia in possesso del seed è in possesso dei wallet di criptomonete corrispondenti, in quanto può a sua volta generare le chiavi pubbliche o private che ne derivano.
Se il seed viene rubato o smarrito, di conseguenza, le monete custodite nei wallet diventano inaccessibili. Sintetizzando al massimo possiamo dire che ogni wallet non è altro che una coppia di chiavi, pubblica e privata, che possedere un wallet significa custodire queste chiavi e che un hardware wallet è un dispositivo che custodisce wallet di criptomonete.
Oltre ai wallet hardware che andremo a trattare dettagliatamente più avanti, le tipologie di wallet oggi presenti si possono riassumere nelle seguenti categorie:
2. Wallet hardware
Data la maggior diffusione ed il crescente valore sul mercato, negli ultimi anni le criptovalute sono divenute il principale bersaglio di numerose minacce informatiche. Si sono registrati casi non solo di utenti, ma anche di portali dedicati i quali, a causa di una capacità di gestione non adeguata, hanno perso irrecuperabilmente l’accesso a fondi di criptovalute del valore di milioni di euro.
Significativi a tal proposito sono i casi della giapponese Mt. Gox (fallita nel 2014 per un ammanco di 450 milioni di dollari in bitcoin), della Canadese Quadriga CX (166 milioni di dollari in varie criptovalute inaccessibili dopo la morte del fondatore nel 2019) nonché dell’italiana Bitgrail (fallita nel 2018 registrando un ammanco di 150 milioni di euro in criptovaluta Nano).
Per rispondere all’esigenza di segretezza relativa alle chiavi private, sono stati introdotti sul mercato una serie di dispositivi elettronici denominati hardware wallet, utili ad accedere ai conti in criptomoneta senza dover in alcun modo rivelare o digitare il codice consistente nella chiave privata associata che resta occultata all’interno dell’hardware per l’intero ciclo di vita del dispositivo.
Ad oggi infatti i wallet hardware offrono infatti il più alto livello di sicurezza disponibile, eliminando i rischi di sottrazione della chiave dovuti alla memorizzazione su hard disk (wallet software) o su server di terze parti (web wallet) e offrendo comunque misure di sicurezza logica non presenti nei paper wallet quali appunto l’occultamento della chiave e l’autenticazione tramite PIN.
Le possibilità di interazione sono ridotte al minimo per incrementare le misure di sicurezza. Sono quindi comunemente assenti Bluetooth, Wi-Fi, alimentazione a batteria, lettore di impronte digitali e, solitamente, touch screen.
Inoltre gli hardware wallet, anche se collegati a un computer connesso a Internet, conservano le chiavi private in un’area del dispositivo a prova di manomissione. In questo modo le chiavi private restano offline anche se il dispositivo comunica con un computer collegato a Internet.
La sicurezza fisica dei wallet può essere infine incrementata attraverso misure quali l’occultamento o la conservazione in cassaforte o in cassette di sicurezza, agevolata dalle ridotte dimensioni dei suddetti, comprese tra la grandezza di una comune pendrive USB (es. Ledger Nano S 56,95 mm x 17,4 mm x 9,1 mm) fino a misure leggermente superiori, per dispositivi aventi schermo tra i 2,5 e 3,5 pollici (Ledger Blue 97 mm x 68 mm x 10 mm o KeepKey 38 mm x 93.5 mm x 12.2 mm).
3. Principi di funzionamento
Alla prima accensione di ogni dispositivo viene chiesto di immettere un PIN numerico che verrà richiesto ad ogni successiva accensione. Il PIN, di norma compreso tra le 4 e le 8 cifre, permette un numero massimo di tentativi, superati i quali il dispositivo viene resettato. In tal caso l’accesso ai fondi collegati potrà essere effettuato solo tramite la recovery phrase generata al momento della creazione del conto, ovvero della generazione della chiave privata.
La recovery phrase infatti è costituita da elenco di 12, 18 o 24 parole a seconda del dispositivo le quali, “tradotte” tramite opportuno algoritmo, contengono tutte le informazioni necessarie per ricostruire una chiave privata. Al momento della creazione del conto il dispositivo hardware genera una recovery phrase o seed phrase e invita l’utente a scriverla su carta. In questo modo, in caso di furto, manomissione o compromissione del dispositivo, si può importare la chiave in un nuovo wallet.
È essenziale quindi conservare la recovery phrase con le stessa cautele dei wallet, essendone a tutti gli effetti, un backup cartaceo. Una volta connesso il dispositivo al computer (o al dispositivo mobile se supportato e se si è il possesso di cavo OTG), si può procedere al download dell’apposito software di gestione quale Ledger Live o Trezor Bridge, con cui viene gestita la creazione e la gestione dei conti. Prioritaria alla gestione di ogni diversa tipologia di criptovaluta è il download dell’apposita app. Il wallet così configurato è infine pronto per la gestione dei conti.
4. La generazione dei report
Le app di gestione dei vari dispositivi presentano capacità di reportistica che sono fondamentali per costruire le attività dei fondi. L’accesso alle app di gestione dei wallet, assieme ai report che è possibile creare per ogni fondo, consente infatti di acquisire i seguenti elementi chiave per l’analisi dei fondi:
- account collegati
- nome account
- ID account (sui Ledger in formato xpub)
- tipologia di criptovalute dei fondi
- importo totale fondi
- storico delle transazioni
- ID di transazione
- indirizzi di ricezione e invio
- data e ora delle transazioni
- importo delle transazioni
- tipo di operazione (invio o ricezione)
Si riportano di seguito alcuni esempi di report forniti dagli applicativi associati ai wallet presi fin qui in esame.
La differenza principale tra la reportistica dei due wallet leader del mercato è l’inclusione dell’ammontare totale del fondo nei report Trezor, assente nei Ledger che invece riportano il valore delle commissioni e l’account ID in forma xpub.
5. I wallet hardware nelle operazioni di Polizia Giudiziaria
I wallet hardware sequestrati possono essere utilizzati per l’accesso e la ricostruzione dello storico dei fondi qualora si sia in possesso del PIN o nel caso in cui questo venga comunicato dall’indagato. Qualora il PIN non venga comunicato, è possibile effettuare la clonazione dei wallet importando il seed su nuovi dispositivi dal PIN concordato. L’operazione è sempre possibile nel caso si riescano ad acquisire i recovery sheet associati ad ogni wallet. Tale ipotesi operativa è applicabile anche nei casi di distruzione, malfunzionamento o di mancato rinvenimento dei wallet.
Composto da 12, 18 o 24 parole il seed permette di ricostruire la Master Key da cui sono derivate le chiavi in un wallet in ordine deterministico. Alla base di ciò sta il concetto di «portafoglio deterministico gerarchico». Nello specifico si considera un portafoglio deterministico, qualsiasi portafoglio per il quale una determinata chiave privata può essere recuperata se si è in possesso di due elementi:
il seed
l’identificativo/numero di sequenza della chiave
Un portafoglio deterministico gerarchico inizia con una singola coppia di chiavi principale in cui la chiave privata è il seed: a partire da essa saranno generate tutte le successive chiavi figlie. È possibile quindi, ricostruendo la chiave principale, generare nuovamente tutte le chiavi che ne sono derivate.
6. I principali standard dei seed: BIP32, BIP39 e BIP44
BIP32 è stato il primo standard di seed per wallet deterministici gerarchici. Ad esso sono seguiti i più recenti standard BIP39, BIP44.
BIP32, lo standard alla base dei wallet hardware, è costituito da una stringa esadecimale di 512 bit in grado di generare la master key di un wallet. BIP 44 è un’ulteriore implementazione dello standard che permette di creare più account di criptovalute a partire da un’unica master key. BIP39 invece costituisce lo standard “mnemonico” a partire dal quale è possibile utilizzare una sequenza di parole per generare la stringa esadecimale a 512 bit alla base dei seed BIP32 e BIP44.
Il processo di conversione della passphrase dello standard BIP39 nei valori esadecimali alla base degli standard BIP32 e BIP34 può essere effettuato tramite il Mnemonic Code Converter sviluppato da Ian Coleman e reperibile al seguente indirizzo: https://iancoleman.io/bip39/. La conversione offline, preferibile dal punto di vista della sicurezza, è possibile tramite apposita versione scaricabile da Github: https://github.com/iancoleman/bip39
In questo modo, conoscendo gli standard supportati dai wallet è possibile ricostruire il seed, la master key, le chiavi private e pubbliche e, in ultimo, gli indirizzi utilizzati a partendo da semplici liste di parole memorizzate sui recovery sheet. Gli standard BIP32/BIP39/BIP44 sono supportati da tutti i wallet presi in esame.
7. Note tecniche di acquisizione: sequestro e importazione dei seed
Possiamo suddividere le procedure di acquisizione dei wallet durante le operazioni di Polizia Giudiziaria nelle seguenti fasi:
- individuazione
- messa in sicurezza
- repertazione
- sequestro
- acquisizione del PIN (comunicato dall’indagato, via social engineering, tramite nota cartacea o memorizzato su computer/dispositivo mobile)
- individuazione dei conti associati
- generazione di reportistica tramite software associato
Nei casi di malfunzionamento, distruzione o mancata acquisizione del PIN o del dispositivo stesso, è possibile ricostruire il seed a partire dai recovery sheet importandolo su un nuovo dispositivo per verificare le chiavi pubbliche e private associate, l’importo dei conti, le criptovalute associate e lo storico delle transazioni. Nonostante l’importazione del seed possa generare uno o più cloni del dispositivo originale, che potrebbe in questo modo restare totalmente inalterato, la verifica sui dispositivi sequestrati è imprescindibile, in quanto non vi sono elementi certi che associno un recovery sheet ad un wallet: l’associazione di solito è effettuata sulla base di etichette o cartellini cartacei; pertanto anche un’unica accensione e connessione al dispositivo host è sempre indicata, qualora possibile.
8. Importazione dei seed da recovery sheet: Ledger Nano S
L’importazione del seed su nuovo dispositivo è possibile a partire dalla lista di parole riportate nel recovery sheet. Una volta acquisita la lista di 12, 18 o 24 parole è possibile realizzarne l’importazione seguendo le procedure richieste da ogni singolo dispositivo. Nel caso in esempio vedremo l’importazione di seed da e verso Ledger Nano S. Si noti che la conferma di ogni operazione viene fornita dalla simultanea pressione dei due pulsanti del wallet.
Scaricare l’applicativo Ledger live
Connettere il wallet hardware al dispositivo host
Premere i due pulsanti simultaneamente come richiesto sul display
Selezionare cancel (tasto sinistro) per Configure as a New Device?
Selezionare la spunta (tasto destro) per Restore configuration?
Scegliere il codice PIN
Selezionare la lunghezza della frase da immettere
Inserire la frase dando conferma con i pulsanti delle prime lettere di ogni parola finché questa non viene riconosciuta
Avviare l’applicativo Ledger live
Una volta terminata la procedura di importazione, si potranno verificare e analizzare i conti associati al wallet tramite l’applicativo Ledger live.
Importazione dei seed da recovery sheet: Trezor One
Anche in questo caso è possibile il seed sul dispositivo a partire dalla lista di parole riportate nel recovery sheet. Nello specifico, useremo lo stesso seed dell’esempio precedente, originariamente prodotto da un dispositivo Ledger Nano S.
Scaricare l’estensione Trezor per browser Chrome
Connettere il wallet hardware al dispositivo host
Effettuare le procedure di inizializzazione tramite Trezor Chrome Extension
Inserire le parole del recovery sheet nell’ordine richiesto dal wallet
Accedere al wallet tramite Trezor Chrome Extension
Una volta terminata la procedura di importazione, si potranno verificare e analizzare i conti associati al wallet tramite Trezor Chrome Extension. ©