Proteggere il portamonete

Da Bitcoin Wiki.

Introduzione

La sicurezza del portamonete può venire divisa in due obbiettivi separati:

  1. proteggere il vostro portamonete da perdite,
  2. proteggere il vostro portamonete dai furti.

In caso il vostro portamonete non sia ancora protetto adeguadamente (es. messo in linea con parola d'ordine debole):

  1. creare un portamonete nuovo più sicuro facendo uso di una protezione a termine più lungo.

Contesto tecnico

Le transazioni bitcoin inviano Bitcoin a chiavi pubbliche specifiche. Un indirizzo Bitcoin è una chiave pubblica di una hash cifrata. Per essere in grado di spendere i bitcoin ricevuti, è necessario possedere una chiave privata (parola d'ordine segreta) che sia stata accoppiata alla chiave pubblica (parola d'ordine condivisa con altri) usata per ricevere tali monete. Il portamonete contiene tutte le chiavi private necessarie per spendere le transazioni ricevute. Se si cancella il portamonete senza avrene una copia di riserva, si perde l'informazione necessaria all'autorizzazione richiesta per prendere possesso delle monete che ci appartengono. Queste monete qundi, associate con tali chiavi, sono perse per sempre.

Il portamonete contiene automaticamente una riserva di 100 chiavi incolonnate riserva chiavi. Le dimensioni di questa riserva sono impostabili aggiungendo l'argomento "-keypool" al comando di attivazione. Quando si ha bisogno di un indirizzo per qualunque motivo (trasferire, richiesta di nuovo indirizzo, generando, ecc.), in realtà la chiave non viene generata nuovamente ma viene stratta da questa riserva. Dopodiché un indirizzo nuovo di zecca viene generato per riportare la riserva al totale di 100. Quindi, quando si crea la prima copia del portamonete, questo contiene tutte le chiavi usate fino a quel momento più 100 chiavi non ancora utilizzate; dopo l'invio di una transazione, questa avrà 99 chiavi inutilizzate. Dopo un totale di 100 transazioni con chiavi nuove, si incomincerebbe ad utilizzare chiavi che non sono presenti in questa copia. Siccome la copia di riserva non ha le chiavi private necessarie per le autorizzazioni a spendere tali monete, ripristinare da questa vecchia copia causerà una perdita di monete.

La creazione di un nuovo indirizzo genera un nuovo paio di chiavi, pubblica e privata, che vengono aggiunte al portamonete. Ciascun paio è composto principalmente di numeri a caso, in modo che non possano essere conosciuti prima che vangano generati. Quindi, se si fa una copia di riserva del portamonete e poi si creano più di 100 indirizzi nuovi, le coppie di chiavi associate con gli indirizzi pi&ugarve; nuovi non sono presenti nel vecchio portamonete perché le coppie di chiavi possono solo essere conosciute dopo la loro creazione. Allora, qualsiasi moneta ricevuta da questi indirizzi verrano persi se si ripristina dalla copia di riserva.

La situazione è ancora più disorientante per via del fatto che gli indirizzi riceventi mostrati dall'interfaccia utenti dell'applicazione, non sono le sole chavi nel portamonete. Quando viene generato, ogni bitcoin riceve una chiave pubblica nuova e, ancora più importante, ogni transazione d'invio di monete invia indietro al mittente, indirizzando ad una chiave nuova, anche un certo numero di Bitcoin. Quando si inviano Bitcoin a chiunque, si genera una nuova coppia di chiavi per se stessi e, al contempo, si inviano Bitcoin alla propria chiave pubblica nuova e a quella del destinatario. Questa è un aspetto dell'anonimità che rende più difficile rintracciare le transazioni di Bitcoin.

Dunque, se si crea una copia di riserva e poi si fanno piu` di 100 cose, ciascuna utilizzando una chiave nuova, seguite a loro volta da un ripristino dalla copia di riserva, si perderà un certo numero di Bitcoin. Non è che l'applicazione Bitcoin ha cancellato delle chiavi (le chiavi non vengono mai cancellate): è che l'applicazione ha creato chiavi nuove, non esistenti nella copia ripristinata, e poi inviato monete a quelle chiavi. Insomma, il portamonete rispristinato non conosce le chaivi nuove perché queste erano state create dopo la creazione della copia-per-ripristino.

Come creare un nuovo portamonete

Nel caso in cui un portamonete sia stato disperso, o conservato, in modo da comprometterne la segretezza (anche se solo una compromissione potenziale), sarebbe saggio creare un portamonete nuovo e trasferire il saldo intero di Bitcoin ad un indirizzo contenuto nel nuovo portamonete appena creato.

Ad esempio, ciò sarà necessario nel caso un portamonete fosse stato creato con una parola d'ordine di 12 caratteri, secondo le raccomandazioni di un tempo. Anni dopo tuttavia, ciò non &egravel più considerato sicuro. Semplicemente crittografare di nuovo non sarebbe sicuro ma, è necessario creare un portamonete nuovo e svuotare quello vecchio (inviandone le monete a quello nuovo).

Come proteggere lo spazio lavorativo

Linux

Il primo passo è quello di creare un nuovo utente, dunque digitare (se si usa il locale inglese di Linux):

adduser nuovo_nome_utente

come root. Quando si viene presentati con il prompt digitare il nuovo nome oppure premere il tasto di rimando per accettare il valore predefinito, continuate a premere il rimando.

Dopodiché cambiatevi nel nuovo utente usando, per esempio, l'icona apposita dell'interfaccia grafica del vostro sistema (sotto lo schermo 'esci' in Ubunto, per esempio), oppure, dalla linea di comando, facendo un logout ed un nuovo login come nuovo utente. Navigare, tramite interfaccia grafica o linea di comando, fino alla cartella di casa del nuovo utente e cambiare l'impostazione del permesso di accesso alla cartella dell'utente, scegliendo 'nessuno' per la scelta 'Altri'.

Per rendere il browsing sicuro, avviare Firefox e poi, sotto la voce 'Edit' fare clic su 'Preferenze'. Iniziando dalla sinistra, far clic sulla linguetta 'Generali' e poi scegliere 'Mostra una pagina in bianco'. Dopodiché fare clic sulla linguetta 'Contenuti' e deselezionare 'Caricamento automatico immagini' e 'Abilitare Javascript'. Poi, far clic sulla linguetta 'Privacy' e nel campo 'Firefox' selezionare 'non ricorderà la storia'. Poi, fare clic sulla linguetta 'Sicurezza' e, nella sezione 'Parole d'ordine' deselezionare 'Ricorda le parole d'ordine per i siti' e deselziona 'Usa parola master'. Infine, fare clic sulla linguetta 'Advanced', poi sulla linguetta 'Aggiornamenti; e la sezione 'Contolla aggiornamenti automaticamente' deselezionando 'Aggiuntivi' e 'Motori ricerca'.

Quando si disattiva javascript, la pagina scarica linux non scarcherà automaticamente, rendendo necessario fare clic sul link diretto.

Una volta protetto in questo modo il nuovo utente, per mantenere il livello di sicurezza, si dovrebbe usarlo solo per bitcoin.

Mac

Fare backup di tutti i dati (500MB)

Seguire queste istruzioni per fare una copia di riserva dei dati di bitcoin (portamnonete e catene blocchi) su un immagine disco crittografata.

  1. Aprire la utility disco.
  2. Fare clic su 'Nuova immagine' e scegliere '500MB', 128-bit o 256-bit (più rapida e sicura) immagine disco crittografata.
  3. Salvarla in qualche posto dove non la si possa perdere (chiaramente etichettato).
  4. Scegliere una parola d'ordine forte e sicura.
  5. Muovere tutto da ~/Library/Application Support/Bitcoin all'immagine.
  6. Creare un symlink indietro in modo che l'applicazione possa farne uso.

:::ln -s/Volume/Bitcoin~/Library/Application Support/Bitcoin

Non scordarsi di montare l'immagine prima di usare Bitcoin e smontarla dopo averlo chiuso.

Fare backup solo di wallet.dat (40MB)

Seguire queste istruzioni per fare una copia di riserva solamente del file wallet.dat. Ciò risulta in un'immagine disco più piccola ma è più complicato farla.

  1. Aprire la utility disco.
  2. Fare clic su 'Nuova immagine' e scegliere '40MB', 128-bit o 256-bit (più rapida e sicura) immagine disco crittografata e partizione singola.
  3. Salvarla in qualche posto dove non la si possa perdere (chiaramente etichettato).
  4. Scegliere una parola d'ordine forte e sicura.
  5. Muovere il file wallet.dat all'immagine.
  6. Creare un symlink indietro in modo che l'applicazione possa farne uso.

:::ln -s/Volume/Bitcoin~/Library/Application Support/Bitcoin/wallet.dat

Montare il portamonete ed avviare Bitcoin Non scordarsi di montare l'immagine prima di usare Bitcoin e smontarla dopo averlo chiuso.

'NB': se si avvia Bitcoin senza aver montato l'immagine, l'applicazione sovrascriverà il symlink con un nuovo portamonete. Se ciò accade non spaventatevi. Semplicemente cancellate il wallet.dat nuovo, montate l'immagine e create un symlink come sopra. Automazione: si può creare una piccola applicazione usando Automator (incluso nel OS X) per montare il portamonete automaticamente e poi avviare l'applicazione Bitcon. Vedere la schermata su come farlo.

Windows

Nel caso si usi Windows XP o Windows 7, è possibile conservare il portamonete in un'immagine-disco crittografata creata da applicazioni terzi, tipo TrueCrypt (Open source o sorgente aperto) oppure Jetico BestCrypt (commerciale). È probabilmente possibile fare lo stesso con Windows Vista (ma perchè usarlo?) o Windows 2000.

NB: Si raccomanda di impostare Bitcoin in questo modo solo su computers su cui si usa BitCoin, ma non si usino questi computer per estrarre. Ad esempio, questa potrebbe essere una buona impostazione per un notebook od un PC-tavoletta.

Presumendo che si sia installato il cliente BitCoin per Windows e lo si sia utilizzato almeno una volta, il processo è come segue sotto.

Per montare una cartella dati Bitcoin su un disco crittografato:


  • creare e montare un'immagine disco crittografata di almeno 100 MB, usando il programma crittografico terzi di vostra preferenza
  • copiare la cartella dati BitCoin, ed i suoi contenuti, in una cartella del disco crittografato

Vedere Locating BitCoin's Data Directory per aiuto in lingua inglese nel trovare questa cartella

  • creare una scorciatoia [shortcut], associata al parametro -datadir, che avvii BitCoin e che specifichi disco e cartella.
Ad esempio, se BitCoin è installato nella cartella predefinita, il disco BitCoin crittografato è montato con E:\ ed i dati BitCoin vi sono salvati su come Bitcoin, si digitizza il seguente comando come bersaglio del shortcut:
C:File Programmi\Bitcoin\bitcoi.exe -datadir=E:\Bitcoin
  • Aprire le impostazioni di BitCoin ed impostare il programma ad avviarsi automaticamente quando si avvia Windows.

Ciò permette di montare l'immagine del disco crittografato BitCoin prima di avviare BitCoin.

  • Chiudere BitCoin e riavviarlo usando la nuova scorciatoia.

Dopo aver eseguito tutto questo, sarà sempre necesssario che prima si monti l'immagine disco crittografata, designando il disco sempre allo stesso modo, e poi avviare BitCoin dalla scorciatoia così creata, in modo che l'applicazione sia messa in grado di trovare il proprio portamonete. :-)

Come trovare la cartella dati di Bitcoin

La cartella dati è il posto dove vengono salvati i file dati di BitCoin, incluso il file dati portamonete.

Windows

Pulsante Start -> Avvia (oppure premere TastoWin+R) e digitizzare questo:

explorer %APPDATA%\BitCoin

Si aprirà la cartella dati BitCoin. Nella maggior parte dei casi, questa è nel posto seguente:

C:\Documenti e Impostazioni\VostroNomeUtente\Dati applicazioni\BitCoin (XP)

C:\Utenti\VostroNomeUtentee\Appdata\Roaming\BitCoin (Vista and 7)

Come prescelta, "AppData" e "Dati applicazioni" sono nascosti.

Linux

Come opzione prescelta, BitCoin mette i dati quì

~/.bitcoin/

Per visualizzare cartelle il cui nome inizia con il punto è necessario usare il comando ls -a

Se non lo si trova in questo modo, si può cercare così

find / -name wallet.dat -print 2>/dev/null

Mac

Come opzione prescelta, BitCoin mette i dati quì

~/Library/Supporto Applicazioni/Bitcoin/

Backup

L'unico file di cui è necessario fare copie di riserva è "wallet.dat". Assicurarsi di avere chiuso BitCoin, copiare questo file altrove, crittografarlo, e metterlo in un posto sicuro. Idealmente, si dovrebbe mettere questo file in due posti: uno a portata di mano, ed uno a 100 kilometri di distanza.

E` possibile utilizzare il comando JSON-RPC backupwallet per fare la copia di riserva senza dover chiudere Bitcoin.

Soluzioni Generiche

Il vostro file wallet.dat non è crittografato da BitCoin. Chiunque può facilmente accedervi e rubarvi tutte le monete. Utilizzate uno di questi programmi crittografici nel caso esista una qualche possibilità che qualcuno possa imbattersi nel vostro portamonete.

  • 7-zip - Supporta archvi a forte crittografia.
  • AxCrypt
  • lrzip - Software da compressione per Linux e OSX che supporta la protezione di parole d'ordine con alto livello crittografico.
  • TrueCrypt - Crittografia al volo su volumi (per utenti avanzati)
  • WinRar - Software per archivi comunemente usata, che supporta la verifica di documentazione e crittografia.

Esiste anche un elenco di Software crittografica open source.

Parole d'ordine solide

Le tecniche di forza bruta per scoprire le parole d'ordine sono sempre in miglioramento. Una parola che un tempo si credeva sicura, costruita con 8 caratteri alfanumerici più [!-~], può venire oggi scoperta facilmente (usando hardware adatto) ... La lunghezza raccomandata è almeno di 12 caratteri. Si può anche utilizzare una parola multipla The Usability of Passwords

L'approccio della forza bruta per scoprire la parola d'ordine diventa improbabile - anche fra 10 anni, quando una parola di 12 caratteri potrà essere troppo corta - se si fa uso di un file chiave, in aggiunta alla parola d'ordine.

Si presuma anche che qualunque file crittografato che si volgia salvare in linea (p. es. gmail, Dropbox), verrà conservata per sempre da qualche parte senza mai venire cancellata.

Conservare gli archivi

Uno dei metodi più semplici di conservare adeguatamente un archivio crittografato del wallet.dat è quello di inviare l'archivio come un allegato al prorio indirizzo e-mail. Certi servizi, come gmail.com, usano reti completamente distribuite che rendono la perdita di dati molto improbabile. Si può persino offuscare il nome dei file contenuti nell'archivio e dare all'archivio un nome meno invitante, come: 'note personali' oppure 'assicurazione auto'.

Un'altra soluzione è quella di fare uso di un servizio di conservazione files come Wuala ( crittografati, istruzioni), Dropbox e others, incluso SpiderOak che è più sicuro.

Soluzione Linux

Gli utenti Linux possono preparare cron attivando 'contrab -e' ed aggiungere la riga seguente:

 01 */1 * * * /usr/local/bin/backupwallet.sh

che mette in funzione backupwallet.sh nel minuto 01 di ogni ora. Ricordarsi però di aggiungere un 'newline (rimando)' dopo l'ultima riga del file contrab, altrimenti l'ultima riga non funzioner`.

backupwallet.sh:

 #!/bin/bash
 
 TS=$(date "+%Y%m%d-%H-%M")
 WALLET=/tmp/wallet${TS}
 WALLET_E=/tmp/wallet${TS}.crypt
 
 if
   echo -n making backup...
   bitcoind backupwallet $WALLET 
   [[ ! -s "$WALLET" ]]
 then echo failed
 elif
   echo done
   echo -n encrypting....
   ! gpg -r myusername --output $WALLET_E --encrypt $WALLET
 then echo failed
 elif
   echo done
   echo -n copying to distant server...
   ! scp $WALLET_E user@myserver.org:~/wallets/
 then echo failed
 else echo done
 fi
 
 rm -f $WALLET $WALLET_E

Questo shell script:

  • chiama il comando 'backupwallet' dell'utilità bitcoind per creare un portamonete timbrato con data ed ora,
  • GPG cripta il portamonete usando la chiave pubblica dell'utente,
  • copia il risultato sul posto destinato al backup.

Ripristino

Assumendo che la vostra copia di riserva [backup] sia abbastanza recente da non aver ancora consumato tutta la riserva di chiavi ... dovreste ritrovarvi con tutte le vostre monete dopo il ripristino di un portamonete in un posto nuovo (o anche vecchio) e il riesame della catena blocchi. Si seguano semplicemente i seguenti punti:

  • chiudere bitcoin(d).
  • copiare il backup di wallet.dat nella vostra cartella 'profilo utente' bitcoin
  • qualora si copiasse nel profilo esistente, bisogna cancellare i file blkindex.dat e blk0001.dat in modo da forzare l'applicazione a riesaminare la atena blocchi. Vi ritroverete tutto nuovo di zecca.

Eliminare i portamonete in chiaro

È buona pratica tenersi almeno due portamonete, uno come "conto corrente" per le transazioni giornaliere, ed uno come "libretto di risparmio" dove si mantiene la maggior parte delle monete possedute.

Il portamonete per il risparmio dovrebbe venire salvato come backup solamente in forma crittografata, mentre si dovrebbero cancellare tutte le sue copie in chiaro. Così nel caso qualcuno acceda abusivamente al computer (sia con furto, sia sfruttandone le vulnerabilità dall'internet o altro), potranno spendere solo le monete contenute nel portamonete del "conto corrente".

Con la maggioranza dei sistemi operativi, inclusi Windows, Linux e Mac OS X, cancellando semplicemente un file wallet.dat non lo distruggerebbe. L'utilizzo di strumentazione avanzata può portare al ripristino del file, anche dopo che è stato cancellato.

In Linux, il comando shred può servire a sovrascrivere il file portamonete con dati a caso prima di cancellarlo; sarà quindi praticamente impossibile leggere questo file anche se si riuscisse a ripristinarlo. Con Windows tuttavia, l'uso di shred o strumenti simili non garantisce che non esistano altre copie nascoste da qualche parte sul disco fisso. Questo dipende dall'impostazione del vostro sistema e da quali pacchi di applicazioni vi siano stati installati. Con certi sistemi, ad esempio, strumenti per backup e ripristino creano periodicamente delle istantanee del sistema di file, duplicando il vostro wallet.dat.

Con il Mac OS, fare clic su "Svuotamento Trash Assicurato" ("Secure Empty Trash") nel menu "Finder", straccia i contenuti del bidone trash (come shred di Linux). Allo stesso modo di altri sistemi operativi, ciò non impedisce l'esistenza di altre copie pi*ugrave; o meno nascoste sul vostro sistema.

Con Windows, il comando cipher /W straccia tutti i file precedentemente cancellati. CyberShredder assicura la cancellazione di ciascun file.

eWallet

Anche conservare bitcoin con un fornitore eWallet ha i suoi rischi. Essenzialmente si concede pieno accesso al proprio portamonete ad terzi, in questo caso eWallet.

Altri link


Gianco 15:07, 22 giu 2011 (GMT)


Gianco 12:28, 24 giu 2011 (GMT)