Cold storage sicuro con Electrum

May 17, 2014 - Reading time: 19 minutes

Update 24/10/2019: questa guida non è più aggiornata, nonostante ciò contiene indicazioni utili per capire cosa è un cold storage. In particolare consiglio di utilizzare solo Linux per il PC offline e verificare SEMPRE le firme PGP degli eseguibili scaricati da electrum.org

Questo tutorial vi spiegherà come configurare passo a passo un cold storage sicuro e sufficientemente pratico per i custodire i vostri bitcoin. Per chi non sapesse cos'è un cold storage, è sostanzialmente un portafoglio molto sicuro dove avere i propri bitcoin, perché risiede in un pc scollegato da internet, quindi a prova di malware.

Mi serve un cold storage?

Hai tra mani una somma di bitcoin che ritieni importante? Il computer dove li tieni adesso è potenzialmente insicuro? (frequenti molti siti, scarichi parecchi contenuti di cui non sai l'origine)? Allora il cold storage fa per te. Con pochi euro potrai avere una sicurezza invidiabile, senza compromettere troppo l'usabilità del tuo portafoglio, grazie ad un client bitcoin veramente leggero ma allo stesso tempo sicuro ed affidabile (Electrum, open source). Inoltre se sei veramente paranoico potrai adottare degli accorgimenti che ti permetteranno di avere una sicurezza matematica contro malware che potrebbero compromettere le tue chiavi private.

Perché il cold storage?

Se il tuo portafoglio è su un pc connesso ad internet, è un dato di fatto, non è sicuro. Argomentazioni come: "Ho un firewall impenetrabile", "Il mio wallet è cifrato con una passphrase lunghissima", ecc..., non stanno in piedi, infatti per quanto abbiate fiducia in voi stessi e nei vostri sistemi di sicurezza, se venite infettati da un malware zero-day (un virus appena immesso in circolazione), il rischio che i vostri bitcoin vi vengano rubati è minimo ma esiste. Virus diffusissimi come keylogger hanno la capacità di monitorare tutto quello che digitate sulla tastiera, scoprendo senza troppi problemi le vostre password e rendendo vana la cifratura del vostro wallet.dat. Per annullare questo rischio la soluzione è quindi semplice quanto radicale: gestire il tutto da un computer non connesso ad internet.

Ok, mi hai convinto, cosa mi occorre?

La struttura di un cold storage è molto semplice, ti servirà un computer online (va benissimo quello che usi già ora) per ricevere, creare e trasmettere le transazioni, e un computer offline per svolgere la parte più delicata, ovvero firmare le transazioni.

Riassumendo, necessiti di questo hardware:

    PC Offline

    PC Online

    2-3 Chiavette USB per i backup

Per la parte software ci affideremo ad Electrum, perché come menzionato in precedenza è un client molto leggero che non necessita di scaricare l'intera blockchain, inoltre è compatibile con i tre sistemi operativi più diffusi: Windows, Mac e Linux.

PC Online

Il PC online può essere tranquillamente il vostro sistema primario: da qui potrete creare nuovi indirizzi per ricevere pagamenti, creare transazioni non firmate e monitorare i vostri bilanci. Se questo computer verrà compromesso (o magari lo è già), l'hacker non potrà rubarvi alcun bitcoin

PC Offline

Il PC Offline sarà il punto cardine del nostro sistema, infatti qui risiederanno le chiavi private, ovvero quella parte del nostro portafoglio che consente l'invio dei fondi presenti al suo interno. Consiglio di rimediare un netbook usato a basso costo (si possono trovare per 50-60 euro). Il computer di cui necessitiamo deve essere in grado di eseguire almeno windows xp o una distribuzione linux alleggerita (xubuntu per citarne una), ergo non ci serve un mostro di potenza. Computer vecchi che non usate più ma che non avete ancora portato in discarica sono perfetti per lo scopo, se funzionanti.

Data l'importanza che assumeranno, consiglio di controllare anzitutto se non hanno difetti che ne potrebbero compromettere l'utilizzo. Se il computer con il tempo si romperà, avremo comunque a disposizione degli altri supporti di backup del nostro portafoglio, quindi va benissimo un pc non proprio in forma. Preciso che una formattazione risolve il 99% dei problemi di lentezza, e la trovo essenziale per stare più sicuri da malware.

Chiavette USB di backup

Dato il ruolo fondamentale che assumeranno le chiavette, consiglio di investire pochi euro per prenderne 2-3 nuove, piuttosto che riciclare chiavette che magari non utilizzate da molto tempo, le quali avrebbero probabilità molto maggiori di guasti inaspettati.

Sistema operativo

Qui molta gente potrebbe essere ferrea sullo scegliere sistemi operativi basati su linux. La verità è che in questo ambito un sistema Linux non offre molto di più in termini di sicurezza rispetto a un sistema Windows. Il computer in questione, dal momento che sarà sempre offline, a prescindere non potrà essere attaccato da malware presente in rete, perciò i vari sistemi operativi se la giocano praticamente ad armi pari. Di conseguenza, il consiglio è quello di scegliere il S.O. con cui vi trovate meglio ed avete più padronanza.

Perché il paper wallet è potenzialmente meno sicuro come backup

Molti di voi avranno sicuramente già utilizzato dei paper wallet per mettere al sicuro i propri bitcoin. Questo metodo, se non utilizzate particolari accorgimenti è potenzialmente a rischio, infatti nella "catena di montaggio" del paper wallet, è presente la stampante, che può rivelarsi l'anello debole di tutto il sistema. Peggio ancora se quest'ultima è collegata in wifi a tutta la vostra rete locale. Il rischio è che abbia una cache di stampa particolarmente insicura, dove è involontariamente memorizzato parte delle vostre stampe recenti, tra cui le chiavi private presenti sui paperwallet da voi creati. Se un malintenzionato riuscisse ad accedere a queste risorse, vi avrebbe compromesso il vostro portafoglio cartaceo senza nemmeno avere la necessità di rubarvelo fisicamente!

Se proprio avete a cuore l'utilizzo dei paper wallet, come prima cosa generateli tramite un live CD di una distro linux in un pc sconnesso dalla rete, inoltre assicuratevi di cifrare la chiave privata tramite l'utilizzo della crittazione BIP38 (bitaddress.org lo consente). In questo modo, in caso di sniffing della cache nella stampante, l'hacker troverà delle chiavi private crittate

L'importanza di avere una chiavetta USB vuota e formattata

Quando vorrete inviare bitcoin dal vostro portafoglio, dovrete sostanzialmente trasferire una transazione non firmata dal PC online al PC offline (Un piccolo file da copiare su una pen drive USB). Si tratta di uno dei passaggi più delicati da compiere, perché collegando una chiavetta USB proveniente da un PC Online, rischiamo di utilizzarla come ponte per malware che potrebbero passare da un PC all'altro, rubarci le chiavi private e far svanire i nostri bitcoin nel nulla.

Chiariamoci, quella appena descritta è un eventualità che segnalo per paranoia personale, in quanto non conosco ancora casi di furto con meccanismi del genere.

Per proteggerci da un attacco di questo tipo, utilizziamo chiavette esclusivamente dedicate allo scopo, senza altri file sopra, e prima di partire con il procedimento dedichiamo 5 minuti per formattarle.

Inoltre se utilizzate windows, disattivare l'esecuzione automatica da supporti esterni può solo giovare alla sicurezza dei nostri bitcoin.

Procedura

DISCLAMER: Consiglio di non trasferire subito tutti i vostri risparmi al primo tentativo, infatti nonostante il wallet sia molto sicuro, in primis dovete essere voi sicuri di quello che fate (pena, nel peggiore dei casi, la perdita dei vostri bitcoin). Consiglio di utilizzare inizialmente somme irrisorie per acquisire padronanza nell'utilizzo.

1: Preparazione PC Offline

Accendete il pc offline, fate una formattazione a basso livello dell'hard disk (Guida), e installateci un sistema operativo molto leggero. Se vi trovate bene con windows, consiglio Windows MicroXP (pesa 80 MB), mentre se siete pratici con linux, Xubuntu andrà più che bene.

Ricordate, non dovrete installare nulla a parte il vostro wallet, infatti non necessiteremo di alcun software oltre ad electrum dato che l'utilizzo del pc sarà completamente relegato al custodire i nostri bitcoin.

Disabilitate tutte le schede di rete presenti sul pc (Wi-fi, ethernet, bluetooth, IR), nonostante non vi connetterete mai, è bene togliere del tutto la possibilità di far partire connessioni a internet indesiderate, che potrebbero compromettere la sicurezza delle nostre chiavi private.

Ora prendete una pen drive USB, inseritela nel computer online e copiateci sopra l'installer di electrum (Clicca qui per scaricarlo). Non ci servirà scaricare altri programmi sul pc offline.

2: Creazione wallet

Aprite electrum, dato che è la prima volta che lo farete, il programma vi chiederà cosa fare: scegliete l'opzione per aprire un nuovo portafoglio.

Verrà avviato lo wizard di creazione, dove vi verrà mostrato il seed del vostro portafoglio. ATTENZIONE, questo set di parole, nell'ordine visualizzato, consente l'accesso a tutti gli indirizzi che verranno creati sul portafoglio! Ergo cautelatevi di custodirlo con adeguate misure di sicurezza (per intenderci, non scrivetelo su un tovagliolo, ma soprattutto NON buttate via per nessuna ragione i fogli dove scriverete quelle parole)

Nello step successivo dovrete re-inserire il seed prima visualizzato.

A questo punto vi verrà chiesto di crittare il portafoglio con una password, inutile dirvi di non utilizzare ovvietà o password corte e poco sicure.

Una volta terminato il passaggio precedente, vedrete finalmente il vostro portafoglio. In basso a destra lo status connessioni mostrerà un pallino rosso, è normale che sia di questo colore e deve essere così, perché il pc non si può connettere ad internet.

Ora andate su Wallet > Master public key, e scannerizzate il QR che vi uscirà con uno smartphone o un tablet, vi uscirà una stringa numerica identica a quella visualizzata su electrum, salvatevela negli appunti (Non può essere usata per rubare bitcoin, quindi potete maneggiarla senza problemi su dispositivi online come il vostro cellulare)

L'ultimo passaggio è quello di chiudere electrum e copiare il vostro wallet crittato su più pen drive USB (Consiglio almeno 2 dedicate completamente allo scopo), trovate il file contente le vostre chiavi private nelle seguenti directory:

Windows

Code:

\Users\YourUserName\AppData\Roaming\Local\Electrum

Mac

Code:

Finder > Go > Go to folder (shift+cmd+G) and type ~/.electrum

Linux

Code:

Home > Go > Location and type ~/.electrum

Spegnete il computer offline, fatevi un caffé, mentre lo bevete pensate a 2 luoghi sicuri lontani tra di loro dove custodire le pen drive USB

OPZIONALE: Se vi siete scritti su carta il seed (le parole visualizzate in precedenza su electrum), dovete pensare bene a cosa farne: infatti quel foglio corrisponde ad una copia NON crittata del proprio wallet, quindi estremamente insicura se qualche malintenzionato ne ha facile accesso, ecco qualche idea su come procedere:

- Siete dei tipi disordinati, rischiate di perdere il foglio tra le vostre cianfrusaglie nella scrivania: prendetelo e bruciatelo completamente. (E' potenzialmente rischioso non bruciarlo ma semplicemente accartocciarlo e buttarlo nella spazzatura)

- Siete dei tipi ordinati, scrivetevi le dodici parole su un foglio e mettetelo in un posto che reputate sicuro.

- Siete dei tipi ordinati, ma volete la massima sicurezza: bruciate il foglio e dormite sonni tranquilli tramite i backup cifrati che avete salvato sulle chiavette USB.

3: Preparazione PC Online

Passate ora al PC Online, inviate la stringa alfanumerica che avete scannerizzato con il vostro smartphone/tablet (Il QR della master public key), e installate electrum scaricandolo dal sito.

Se non avete mai utilizzato electrum sul PC, anche qui vi verranno proposte 3 scelte, selezionate "Create a watching-only version of existing wallet".

Vi verrà chiesto di inserire la master public key, copia/incollatela e cliccate su OK

A questo punto vi si aprirà electrum in modalità "Sola lettura", ovvero potrete controllare i saldi sui vostri vari indirizzi, crearne di nuovi, e creare transazioni NON firmate (Questo PC infatti essendo online ha pieno accesso alla blockchain)

Lo status connessione (Il pallino in basso a destra) ora sarà verde, segno che il vostro wallet è correttamente connesso.

D'ora in poi potrete utilizzare questo computer per ricevere bitcoin semplicemente copia/incollando gli indirizzi che trovate nella tab "Ricevi"

Electrum di default ne genera 5, ed ogni volta che ricevete dei bitcoin su uno di questi per la prima volta, ve ne verrà generato un'altro dopo questi cinque.

Questi indirizzi sono generati in maniera deterministica, potete fare una prova mettendo la master public key su un'altra istanza di Electrum in un altro PC: vi verranno generati sempre gli stessi 5 address (o più se su uno o più di questi 5 avete già ricevuto bitcoin)

Complimenti, avete finalmente creato il vostro cold wallet!

4: Creare transazioni in un uscita

Abbiamo appena creato il nostro cold wallet, ora non rimane che imparare come firmare transazioni in totale sicurezza

Accedete al PC online, aprite electrum e andate nella tab "Invia"

Qui compilate i vari campi come avete sempre fatto con qualsiasi altri client, noterete però che al posto del pulsante "Invia" ce ne sarà uno con scritto "Crea transazione non firmata". Cliccateci sopra e poi cliccate sul pulsante "Salva" per ottenere un piccolo file contenente la transazione NON firmata.

A questo punto spostate questo file dal PC Online al PC Offline.

Una volta fatto arrivare il file al PC Offline, aprite Electrum, cliccate sul menù a tendina "Strumenti" e poi su "Carica transazione > da file"

Ora avrete la possibilità di ricontrollare una seconda volta che i destinatari, l'importo e la fee siano corretti.

Quando siete pronti, cliccate su "Firma" e inserite la vostra password.

Appena Electrum avrà terminato di firmare la transazione, cliccate su "Salva" e spostate il piccolo file che vi creerà sul PC Online.

In questo momento voi avete già inviato i bitcoin, però nessun nodo della rete ne è ancora a conoscenza, quindi dovete compiere l'ultimo importantissimo step: il broadcast

Spostato il file sul PC Online, riapriamo Electrum, carichiamo la transazione nella stessa maniera con cui l'abbiamo caricata prima (cliccate sul menù a tendina "Strumenti" e poi su "Carica transazione > da file")

Vedrete una finestra che riporta la vostra transazione firmata, premiamo sul pulsante broadcast per inserirla perennemente nella blockchain!

Se il PC è correttamente connesso ad internet, l'operazione andrà a buon fine e potrete controllare tramite un servizio come blockchain.info l'effettiva propagazione della nostra transazione.

Mi hai detto tutto quello che dovrei sapere?

No, manca un ultimo vitale dettaglio: come già accennato electrum crea un portafoglio deterministico: forse avete già avuto modo di sperimentare l'effettivo funzionamento durante la guida, in particolare durante questo passaggio:

Questi indirizzi sono generati in maniera deterministica, potete fare una prova mettendo la master public key su un'altra istanza di Electrum in un altro PC: vi verranno generati sempre gli stessi 5 address (o più se su uno o più di questi 5 avete già ricevuto bitcoin)

I primi 5 indirizzi vengono SEMPRE generati, quelli successivi invece solo se uno o più dei primi 5 indirizzi sono già stati utilizzati. Se poi utilizzerete anche questi nuovi indirizzi generati, electrum ancora andrà a generarne di nuovi, per fornirvi sempre un buffer di indirizzi "vergini" pronti per essere utilizzati. (Questa feature è chiamata gap limit)

E' importante sapere che quindi gli indirizzi generati in maniera deterministica sono oltre che uguali, infiniti, e prodotti sempre nello stesso ordine.

Ma è ancora più importante sapere che il PC offline, non essendo connesso alla blockchain, non potrà verificare l'utilizzo degli indirizzi, quindi di default, ne mostrerà SEMPRE e SOLO 5.

Se per es. riceviamo dei bitcoin su un nuovo indirizzo, non presente nel PC Offline, e ora li vogliamo spendere, normalmente non potremmo perché nel momento in cui andiamo a firmare la transazione, Electrum sul PC Offline ci direbbe: "Non ho la chiave privata necessaria per spendere i fondi di questo indirizzo". Quindi dobbiamo aggiornare manualmente la quantità di indirizzi generati, in modo che vengano visualizzati anche quelli necessari per firmare la nostra transazione:

Per farlo apriamo electrum sul PC Offline, clicchiamo sulla tab "Console" e inseriamo questo comando:

Code:

wallet.accounts[0].create_new_address(0)

Verrà generato un nuovo indirizzo dopo i 5 creati di default, ripetiamolo più volte se vogliamo creare più di un indirizzo. Se andando nella sezione "Ricevi" non visualizzate i nuovi indirizzi, riavviate electrum.

Se volete creare nuovi indirizzi sotto la sezione "Cambio" (i cosiddetti change address), date questo comando:

Code:

wallet.accounts[0].create_new_address(1)

Valgono le regole di prima, quindi se date più volte il comando verranno generati più indirizzi.

Ora conoscete le basi di electrum e siete pronti per creare il vostro personale e sicurissimo cold storage!

About

Questo blog è un sito personale, con materiale scritto da me e i miei contatti di seguito:

mail: a@irxer.com