Filesystem crittografato per Dropbox (ma anche Ubuntu One)
Parliamo ancora di filesystem crittografati, a differenza del precedente articolo, che riguardava la crittografia di intere partizioni, qui parliamo di un filesystem criptato in userspace. Lo scopo è quello di utilizzare servizi come Dropbox o Ubuntu One con la garanzia della riservatezza dei propri dati.
Dropbox
Dropbox, per chi non lo conosce, è un servizio che consente di condividere il contenuto di una cartella tra più computer. Tutte le modifiche fatte su uno qualunque dei computer vengono automaticamente riportate sugli altri. Se sono connessi questo avviene in tempo reale, altrimenti alla prossima connessione. I dati sono anche memorizzati sui server di Dropbox (che usa lo storage di Amazon S3) e sono anche accessibili via web. Per usare il servizio è necessario installare un client disponibile per Linux, Windows, Mac. Iscrivendosi a Dropbox si ottengono gratuitamente due gigabytes di spazio, che possono arrivare fino a 5 facendo iscrivere amici e conoscenti. Se si vuole più spazio è necessario pagare.
Se il servizio ti interessa puoi iscriverti usando il link seguente.
https://www.getdropbox.com/referrals/NTExNTg5MDU5
E’ il link che consente sia a te che a me di ottenere 250MB aggiuntivi.
Ubuntu One è un servizio analogo (anche questo offre 2GB di spazio gratuito) ma è disponibile solo per Ubuntu ed è in fase di Beta.
Perché crittografare
Dropbox crittografa i dati che invia al server ma la chiave usata per crittografare i dati è nota a quelli di Dropbox. Per avere la garanzia di riservatezza circa i propri dati è quindi necessario crittografarli in proprio. Io ho usato encfs, un filesystem criptato in userspace. Quelle che seguono sono le istruzioni per installarlo in Ubuntu 9.04 Jaunty Jackalope.
Istruzioni
Innanzitutto installiamo encfs:
sudo apt-get install encfs
Ora creiamo un filesytem criptato in una cartella all’interno della cartella di Dropbox.
encfs ~/Dropbox/encrypted ~/shared
Digitando il comando di cui sopra verrà creata una cartella con i dati crittografati all’interno della cartella di Dropbox, questa cartella crittografata sarà accessibile in chiaro entrando nella cartella shared nella tua home.
Dopo aver digitato il comando ti verrà chiesta conferma per la creazione dell due cartelle. Conferma.
Alla domanda successiva rispondi x per entrare nella modalità di configurazione per esperti. E’ anche possibile scegliere p per una modalità pre-configurata in modalità paranoica ma le performance sono molto scarse, quindi consiglio di procedere con la modalità per esperti. Se però non ti interessano le performance puoi tranquillamente inserire p e per te la configurazione di encfs finisce qui, puoi passare direttamente alla sezione in cui spiego come impostare la password. Se scegli la modalità esperta continua a leggere perché dobbiamo configurare encfs.
La domanda successiva ti chiede di scegliere tra l’algoritmo AES e il Blowfish. Ho fatto alcune misure di performance sul mio netbook e ho verificato che, almeno su questa macchina, le performance con Blowfish sono migliori di quelle con AES (circa il 50% più performante), quindi ti consiglio di inserire 2 per selezionare Blowfish.
La successiva domanda è per scegliere la dimensione della chiave. Ho fatto misure con chiavi a 128 e 256 bit senza rilevare differenze di performance quindi ti consiglio di inserire 256.
Ora devi scegliere la dimensione dei blocchi da cifrare. Consiglio di lasciare il default che è 1024.
Poi è necessario scegliere l’algoritmo di encoding dei nomi dei files. Puoi decidere di lasciare in chiaro i nomi dei files, di usare un algoritmo che cirpta il nome modificandone la lunghezza e un altro algoritmo che cripta il nome senza modificarne la lunghezza. Consiglio di inserire B per l’algoritmo che modifica la lunghezza del nome, non ci sono particolari implicazioni di performance ed è più sicuro.
[aggiornamento: criptare il nome del file rende difficile recuperarlo dall'interfaccia web di dropbox e anche gestire i conflitti (cioè quando un file viene modificato contemporaneamente su più macchine e Dropbox ne crea una copia con un nome diverso), questo è il motivo per cui sono passato a nomi di files in chiaro.]
Ora scegliamo se rendere il filename dipendente dall’intero path o no. Nel primo caso lo stesso nome file in due cartelle diverse verrà codificato in modo diverso, nel secondo caso lo stesso nome file in cartelle diverse verrà codificato allo stesso modo. Anche qui non ci sono particolari problemi di performance quindi consiglio di accettare il default che è Yes che rende il filename dipendente dal path.La prossima opzione propone di aggiungere 8 bytes casuali ad ogni file per rendere più sicuro il filesystem. Il default è Yes e consiglio di accettarlo visto che ha un impatto trascurabile sulle prestazioni.
Ora ti viene chiesto di abilitare la cosiddetta “block autentication”, si tratta di aggiungere un checksum per ogni blocco per consentire ad encfs di rilevare eventuali corruzioni. Questa opzione impatta in modo molto pesante sul consumo della cpu, quindi consiglio di non attivarla inserendo No che è anche il default.
La prossima opzione serve per attivare dei bytes casuali per ogni header di blocco. Serve a rendere il filesystem più sicuro ma ha un impatto pesante sulla cpu e siccome abbiamo già attivato gli 8 bytes casuali per ogni file non è neanche necessaria, quindi consiglio di inserire 0 per disabilitarla.
Ora ti viene chiesto se attivare una opzione che evita la creazione di blocchi criptati in presenza di “buchi” nei files. Serve a migliorare leggermente le prestazioni in casi molto particolari ma presenta problemi di compatibilità in molti altri casi (ad esempio usando encfs con samba) quindi è meglio disabilitarla con No che poi è il default.
Password
Abbiamo finito: ora devi sono inserire due volte la password che servirà per sbloccare il tuo filesystem criptato. Dopo ti spiegherò come fare in modo che il filesystem venga montato automaticamente quando fai il login, se la cosa ti interessa e se vuoi evitare che ti venga chiesta ad ogni login la password di encfs devi inserire la stessa password che usi per il login.
Ok, hai il filesystem criptato funzionante, Dropbox lo avrà già replicato sulle altre macchine. Prova a scrivere un file nella cartella ~/shared e vedrai comparire un file dal nome illeggibile nella cartella ~/Dropbox/encrypted. Significa che tutto sta funzionando.
Al prossimo login però dovrai nuovamente montare il filesystem digitando
encfs ~/Dropbox/encrypted ~/shared
non è il massimo della comodità, quindi ti spiego come configurare l’automount del filesystem al login.
Automount con libpam-mount
[aggiornamento: ho inserito in coda a questo paragrafo una sezione specifica che usa libpam-encfs invece di libpam-mount che nelle ultime versioni di ubuntu ha un bug]
Per configurare l’automount del filesystem criptato è necessario installare il seguente pacchetto
sudo apt-get install libpam-mount
ora devi editare (da amministratore) il file /etc/security/pam_mount.conf.xml
Hai due scelte, la prima è più rapida ma mi piace di meno:
cerca la riga <!– Volume definitions –> ed inserisci subito dopo.
<volume user="<<il tuo username>>" fstype="fuse" path="encfs#/home/<<il tuo username>>/Dropbox/encrypted" mountpoint="/home/<<il tuo username>>/shared" />
Naturalmente devi sostituire il tuo username al posto di <<il tuo username>>
L’altra soluzione, che mi sembra più pulita, è quella di “scommentare” la riga
<luserconf name=”.pam_mount.conf.xml” />
togliendo il
<!–
che c’è subito prima e il
–>
che c’è subito dopo, e creare il file .pam_mount.conf.xml nella tua home contenente le seguenti righe:
<?xml version="1.0" encoding="utf-8" ?> <pam_mount> <volume user="<<il tuo username>>" fstype="fuse" path="encfs#/home/<<il tuo username>>/Dropbox/encrypted" mountpoint="/home/<<il tuo username>>/shared" /> </pam_mount>
[aggiornamento: per karmic e lucid è necessario aggiungere, alla riga che inizia per "<volume" quanto segue: options"nodev,nosuid"]
[aggiornamento: se hai qualche file che deve essere utilizzato dall'utente root, ad esempio qualche file che viene utilizzato all'interno di un comando che inizia per sudo, aggiungi anche allow_root tra le opzioni]
A questo punto, sia che tu abbia scelto la prima o la seconda soluzione, ogni volta che farai il login (anche da console) il filesystem criptato sarà automaticamente montato.
Se lo spiegone non è stato sufficientemente chiaro lasciami pure un messaggio.
Automount con libpam-encfs
Installiamo libpam-encfs
sudo apt-get install libpam-encfs
Ora modifichiamo /etc/security/pam_encfs.conf aggiungendo una riga simile alla seguente:
rsa /home/<username>/Dropbox/enc /home/<username>/shared -v allow_root,nodev,nosuid
Al posto di <username> inserisci il tuo username.
In /etc/fuse.conf scommenta la riga user_allow_other
In /etc/pam.d/gdm inserisci
auth requisite pam_encfs.so
subito prima di @include common-auth
e fai la stessa identica cosa in /etc/pam.d/login se vuoi che il filesystem venga montato anche quando fai login da console
La seguente modifia a /etc/pam.d/common.auth serve solo se per encfs usi la stessa password che usi per il login utente e non vuoi inserire la password due volte al login:
Aggiungi la prima di queste due righe in testa e aggiungi use_first_pass in coda alla seconda:
auth sufficient pam_encfs.so auth [success=1 default=ignore] pam_unix.so nullok_secure use_first_pass
Tags: dropbox, encfs, ubuntu, ubuntu one
This entry was posted on martedì, luglio 7th, 2009 at 9:59 pm and is filed under tecnologia, ubuntu. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
luglio 8th, 2009 at 9:37 am
Ciao Rudi, grazie per il post!
Anche io uso Dropbox, lo trovo utilissimo sia come backup che come accesso condiviso a file.
Non ci tengo dati “particolarmente” riservati, quindi per ora non penso di crittografare il tutto, ma è sempre buono sapere che c’è la possibilità!
Grazie ancora,
Andrea
maggio 28th, 2010 at 9:07 am
Ciao,
con karmic e lucid ho dovuto aggiungere al tag l’attributo segente:
options=”nodev,nosuid”
altrimenti non montava.
Paul
marzo 1st, 2011 at 12:12 pm
Ok, lo sto usando da tempo ormai, e devo dire che di solito funziona tutto benissimo ma…
Ogni tanto, non ho capito bene perche` capita che c’e’ un conflitto dove due PC tentano di scrivere lo stesso file nello stesso arco di tempo. Dropbox non risolve i conflitti, fa una copia del file e basta. Visto che i nomi dei file sono criptati il nuovo file si chiama qualcosa tipo:
“j85-6kOFk3Gg0Lg1TiuqgqIz/8p2kJa8tboYSSpadfuiE9Tuq (pippo’s conflicted copy 2009-10-21)”
ed e` visibile solo nella partizione criptato (~/Dropbox/encrypted) e non quello in chiaro (~/shared).
Questo puo` essere fonte di grande confusione. Mi e` capitato di vedere errori quando cancellare una cartella che sembra vuota visto da ~/shared ma non lo e` in Dropbox/encrypted.
Per vedere se hai file di questo tipo basta fare
find ~/Dropbox/encrypted -name ‘*(*’
Per ora non ho trovato di meglio che cancellare i file cosi – ma chiaramente non e` il massimo.
Vedi anche
http://news.ycombinator.net/item?id=895660
Paul
marzo 1st, 2011 at 12:50 pm
Io infatti nel frattempo ho modificato il filesystem encfs togliendo la crittografia del nome del file.
Tengo crittografato solo il contenuto dei file ma il nome è in chiaro.
marzo 13th, 2011 at 1:39 pm
Ciao e grazie per la guida…a me pero’, da totale ignorante, sfugge una cosa…ho criptato la cartella e la ho uppata su ubuntuone…ora, se provo a scaricare i file criptati sulla cloud ottengo, giustamente, dei file illegibili…come faccio a decriptarli per renderli di nuovo usabili se avessi necessità di un restore?
marzo 14th, 2011 at 1:19 pm
Se vuoi scaricare un solo file e decrittarlo, senza quindi tenere una copia di tutto il filesystem criptato, devi fare così:
- crea una cartella
- mettici dentro il file .encfs6.xml che c’è nella cartella criptata Dropbox
- mettici dentro il file criptato che hai scaricato
- dalla riga di comando: encfs path-completo-della-cartella path-completo-del-mountpoint
A questo punto entri dentro al mountpoint e apri il tuo file.
ciao
Rodolfo
marzo 14th, 2011 at 5:37 pm
Ciao Rodolfo e grazie per la dritta,stasera provo!!
Mi piacerebbe poter aver copia di tutta la cartella criptata e poterla eventualmente riscaricarla tutta insieme…purtroppo credo che con ubuntuOne non sia possibile dal momento che riesco a fare solo i download dei songoli file e non delle cartelle!Su dropbox invece mi pare di capire che si possa riscaricare direttamente la cartella…mi sa che è il caso di provare il servizio!
Un saluto
Gabriele