Ultimamente ha destato molto scalpore una funzionalità pubblicizzata da Ledger, un noto produttore di wallet hardware connessi, che consentirebbe l’estrazione del seed a fini di backup.
Ritengo utile dunque una sintetica panoramica su cosa sono i crypto wallet, come funzionano, e quali sono le diverse tipologie che si trovano in commercio, con i relativi rischi di sicurezza.
Un wallet, nel contesto delle criptovalute, è un'applicazione o un dispositivo che permette agli utenti di gestire, memorizzare e trasferire le proprie criptovalute in modo sicuro. Funziona come un portafoglio digitale in cui gli utenti possono conservare le proprie chiavi crittografiche (chiave privata e chiave pubblica) necessarie per accedere e controllare le loro criptovalute.
Normalmente un wallet consente di importare o di generare il cosiddetto “seed”.
Il seed (seed phrase, chiamato anche “mnemonica”) è una sequenza di parole casuali, generalmente composta da 12 o 24 parole, generate utilizzando un algoritmo specifico. Il seed viene generato all'inizio del processo di creazione di un wallet e rappresenta una forma semplificata di rappresentazione delle chiavi private. Questo seed è solitamente generato utilizzando una funzione di hashing crittograficamente sicura e può essere considerato come una forma di backup delle chiavi private.
Più precisamente, il seed è una rappresentazione semplificata e mnemonica delle chiavi private, mentre la chiave privata è la forma originale e completa della chiave crittografica.
Un vantaggio significativo del seed è la sua capacità di generare più chiavi private. Utilizzando il seed, è possibile generare una serie di chiavi private derivate, o "chiavi figlie", che consentono di gestire più indirizzi all'interno di un wallet. Inoltre, il seed può essere utilizzato per il ripristino del wallet in caso di smarrimento o danneggiamento del dispositivo.
Il seed è di fatto la chiave di accesso alle nostre cryptovalute. Chiunque sia in possesso del seed può disporre liberamente dei nostri fondi depositati nel wallet.
Un wallet fornisce anche un'interfaccia utente per effettuare transazioni, visualizzare il saldo delle criptovalute e monitorare la cronologia delle transazioni.
Esistono due tipi principali di wallet:
-
wallet software per dispositivi mobili o computer
-
wallet hardware fisici (che a loro volta si dividono in connessi o air gapped)
Dei wallet online non vorrei nemmeno parlare perché, per il principio “not your keys, not your coin”, di fatto con essi perdiamo il controllo sulle nostre crypto, delegandolo completamente ad un servizio esterno.
I wallet software sono programmi che si installano sul PC o sul telefono, e consentono di generare e conservare le chiavi private, e di firmare le transazioni.
I wallet hardware assolvono alle medesime funzioni, con alcune differenze:
-
generazione e conservazione delle chiavi private: il wallet hardware genera le chiavi private in modo sicuro e le conserva all'interno del dispositivo stesso. Il dispositivo è progettato in modo da essere resistente agli attacchi esterni che mirino ad estrarre la chiave privata dal wallet;
-
firma delle transazioni offline: quando devi effettuare una transazione, il wallet hardware consente di firmare le transazioni in modo sicuro all'interno del dispositivo.
Un wallet hardware è decisamente più sicuro rispetto ai wallet software tradizionali, che sono costantemente connessi a internet e pertanto molto più esposti ad attacchi.
I wallet hardware a loro volta si suddividono in due grandi categorie: quelli "connessi" e quelli “air gapped”.
I wallet connessi sono progettati per essere collegati a un computer o a un dispositivo mobile tramite una connessione fisica, come una porta USB o Bluetooth, e tramite questa connessione scambiano dati.
I wallet air gapped, invece, sono dispositivi completamente isolati dalla rete Internet e da altre connessioni di rete. Il loro scopo principale è garantire la massima sicurezza per le tue criptovalute mantenendo le chiavi private offline e protette da minacce esterne.
Come funzionano i wallet air gapped?
La generazione delle chiavi private avviene in modo assolutamente analogo a quello dei wallet connessi. Per quanto riguarda invece la firma delle transazioni offline, il wallet air gapped crea le transazioni offline all'interno del dispositivo isolato. Le informazioni sulla transazione, come l'indirizzo di destinazione e l'importo, vengono inserite nel dispositivo tramite un metodo sicuro, ad esempio utilizzando un QR code o una SD card, e la transazione viene firmata con la chiave privata offline.
Una volta firmata, la transazione può essere trasferita su un dispositivo connesso a Internet tramite lo stesso metodo usato in precedenza.
È questo che rende i wallet air gapped così sicuri: il passaggio di informazioni tra il wallet e la rete è disintermediato, tramite un QR code letto con la fotocamera o tramite l’inserimento di una SD Card.
Tra i due sistemi, a mio parere, è decisamente più sicuro il QRCode, in quanto su una SDCard è relativamente semplice inserire un malware che, una volta portato all’interno del dispositivo hardware, lo comprometta e consenta l’estrazione della chiave privata, copiandola sulla stessa SD Card e, quando questa verrà introdotta nel PC di origine, trasmettendola ad un server Command & Control.
Questo teoricamente si potrebbe fare ugualmente inserendo codice malevolo nel QR code, ma tecnicamente la cosa è molto più difficile per due motivi:
-
il QR code può contenere molte meno informazioni rispetto a una SD Card;
-
il QR code viene letto dal dispositivo, che quindi può bonificare efficacemente quanto letto. La SDCard invece, una volta inserita, potrebbe con più facilità eseguire codice “all’insaputa” del dispositivo.
Merita, prima di giungere alle conclusioni, di citare ancora due punti importanti.
Il primo è che è possibile usare come wallet hardware air gapped un PC installato ex novo, e mai connesso ad internet.
Il secondo è che un punto debole che negli anni si è ripresentato è l’algoritmo di generazione del seed. Questo algoritmo a volte presentava dei bug per cui era meno randomico di quel che sarebbe dovuto essere. Per ovviare a questo problema, oggi molti wallet hardware mettono a disposizione una funzionalità di importazione del seed.
È dunque possibile generare autonomamente il seed (ci sono diversi sistemi, dagli algoritmi che usano i suoni ambientali registrati dal microfono per generare l’entropia necessaria, a quelli che prevedono il lancio di centinaia di dadi) e poi importarlo all’interno del wallet.
Sia i wallet air gapped che i wallet hardware connessi offrono un livello di sicurezza elevato rispetto a un wallet software tradizionale che è costantemente connesso a Internet. Tuttavia, il wallet air gapped (e in particolare quello che comunica tramite QR Code) tende ad offrire una maggiore sicurezza in quanto è completamente isolato dalla rete e da potenziali minacce esterne. La generazione delle chiavi private e la firma delle transazioni avvengono all'interno del dispositivo air gapped, il che riduce i rischi di compromissione delle chiavi private.
Il wallet hardware con connessione USB è più comodo da utilizzare. Tuttavia, l'uso di una connessione USB introduce un potenziale rischio di attacchi tramite malware o vulnerabilità del firmware del dispositivo hardware.
Per concludere, dunque, se la massima sicurezza è la tua priorità assoluta e sei disposto a sacrificare la comodità, il wallet air gapped è la scelta migliore. Se desideri un equilibrio tra sicurezza e facilità d'uso, il wallet hardware con connessione USB potrebbe essere una soluzione adeguata. Se punti tutto sulla facilità d’uso, e gestisci piccole cifre, allora puoi orientarti su un wallet software.
Un sentito grazie a tutti i Soci (e amici) di SICYNT (Società Italiana per la diffusione della cultura CYber e delle Nuove Tecnologie) per la revisione e i suggerimenti
Immagini: autore