close

EncFS

Vai alla navigazione Vai alla ricerca
EncFS
Tipo di file system crittografico [it] .
Sviluppatore Valent Gough (Valent Gough)
Sistema operativo Linux , FreeBSD e macOS
Prima edizione 2003 [1]
ultima versione
Licenza GNU GPL
Sito web vgough.github.io/encfs/

EncFS  è un file system crittografico [en] gratuito basato su FUSE che crittografa i file in modo trasparente utilizzando una directory arbitraria come luogo in cui archiviare i file crittografati. Distribuito sotto licenza GPL .

Durante il montaggio di EncFS, vengono specificati la directory di origine (la directory di origine con i file crittografati) e il punto di montaggio. Dopo il montaggio, ogni file nella directory del punto di montaggio corrisponde a un file specifico della directory crittografata. Pertanto, nella directory del punto di montaggio, i file della directory di origine vengono presentati in forma non crittografata. I file vengono crittografati utilizzando una chiave, che a sua volta viene archiviata nella stessa directory dei file crittografati, in forma crittografata. La password immessa dall'utente sulla tastiera viene utilizzata per decrittografare questa chiave.

Architettura di EncFS

EncFS interagisce direttamente con libfuse (interfaccia FUSE), libreria di registrazione e OpenSSL (libreria di crittografia). La "comunicazione" con il kernel avviene tramite FUSE.

Interazione con libfuse

  • Il livello di callback di EncFS riceve le richieste da libfuse.
  • Inoltre, queste richieste vengono reindirizzate al nodo della directory corrispondente (DirNode) o al file (FileNode) o vengono restituite le informazioni dalla cache, se presenti.
  • Le implementazioni di interfacce per la visualizzazione dei nomi (NameIO) e dei contenuti (FileIO) dei file restituiscono informazioni decrittografate.

Panoramica della crittografia in EncFS

La libreria OpenSSL utilizzata fornisce algoritmi di crittografia AES (cifrare a blocchi da 16 byte con una lunghezza della chiave di 128-256 bit) e Blowfish (cifrare a blocchi da 8 byte con una lunghezza della chiave di 128-256 bit). Le prime versioni (prima della 1.1) avevano un supporto parziale per la libreria di crittografia Botan . La crittografia avviene in questo modo:

  • Il FileNode invia richieste di lettura/scrittura tramite l'istanza FileIO;
  • FileIO forma una catena per la crittografia;
  • Il livello BlockFileIO converte le query in quelle orientate ai blocchi.

Crittografia dei nomi di file

I nomi dei file vengono crittografati e quindi codificati con una codifica a 64 bit, eliminando al contempo i "." e "/". C'è la possibilità di streaming (standard fino alla versione 1.1) e crittografia a blocchi. Il MAC a 16 bit viene utilizzato come IV (vettore di inizializzazione) e anteposto al nome crittografato, che consente di randomizzare il risultato della crittografia (gli stessi nomi di file vengono crittografati in modo diverso, poiché l'intero percorso del file viene utilizzato durante la generazione del vettore di inizializzazione ).

Utilizzo della password

Ogni istanza di EncFS utilizza una chiave generata casualmente (chiave del volume). Questa chiave viene archiviata crittografata con una password immessa dall'utente. E viene decifrato quando l'utente inserisce una password dalla tastiera. Ciò consente di ottenere i seguenti vantaggi:

  • Per modificare la password del volume, è sufficiente modificare una riga nel file di configurazione.
  • Buona estensibilità per il recupero della password.

Dimensione del blocco del file system

Tutte le operazioni di lettura/scrittura in EncFS sono basate su blocchi. La dimensione del blocco è determinata dall'utente durante la creazione del file system e varia da 64 a 4096 byte. Una piccola dimensione del blocco riduce il tempo di accesso casuale, ma aumenta il numero di richieste durante la lettura/scrittura di grandi blocchi di file. Le grandi dimensioni dei blocchi aumentano la velocità di elaborazione dei dati, ma aumentano il tempo di accesso casuale. A differenza dei file system reali, blocchi di grandi dimensioni non sprecano spazio su disco (i blocchi non riempiti non vengono riempiti con zeri).

Utilizzo MAC

Ogni blocco nel file è crittografato con un'intestazione MAC. Fino all'ultima versione di EncFS inclusa, SHA-1 a 64 bit viene utilizzato come MAC . Pertanto, un blocco di 512 byte corrisponde a 504 byte di dati crittografati e 8 byte di MAC.

File di configurazione

Ciascuna istanza del file system EncFS contiene un file di configurazione ".encfs%", dove % è il numero di versione. Questo file contiene:

  • opzioni di crittografia, inclusi algoritmo (AES, BlowFish) e lunghezza della chiave;
  • Intestazioni MAC (codice di autenticazione del messaggio);
  • dimensione dei blocchi di crittografia.

Supporto per la semantica dei file Unix

EncFS supporta la semantica di base di un file system con le seguenti eccezioni:

  • la ridenominazione di una directory comporta l'aggiornamento del valore del tempo di modifica dei file in essa contenuti;
  • i collegamenti reali non sono consentiti perché i dati del file sono legati al nome del file.

Sistemi operativi supportati

L'implementazione principale di EncFS è supportata dai sistemi operativi Linux, Mac OS X, FreeBSD. Esistono diverse implementazioni sviluppate attivamente in Windows [3] [4] [5] [6] .

Utilizzo di EncFS su Linux

L'uso di directory crittografate è molto simile all'installazione di qualsiasi altro file system in Linux. Viene creata una vera directory con tutti i tuoi file, ad esempio /home/user/crypt-raw. Devi anche creare un punto di montaggio, lascia che sia /home/user/crypt. Quando accedi a queste directory, assicurati di utilizzare percorsi assoluti (non solo /usr/bin/crypt).

I dati vengono crittografati con il comando:

> encfs /home/utente/crypt-raw /home/utente/crypt
Chiave del volume non trovata, creazione di un nuovo volume crittografato.
Parola d'ordine:
Verificare:

Al termine della crittografia, è possibile accedere ai file utilizzando la directory crypt. Al termine del lavoro, puoi utilizzare il comando:

> fusore -u /home/utente/crypt

Questo comando smonterà la directory crypt, lasciando crypt-raw crittografato.

Vantaggi

EncFS presenta numerosi vantaggi rispetto ad altri sistemi di crittografia delle partizioni del disco rigido perché ogni file viene crittografato individualmente e salvato come file normale.

  • Lo spazio su disco occupato dai "volumi" di EncFS non è fisso: aumenta e diminuisce a seconda delle modifiche al numero e alla dimensione dei file crittografati.
  • Alcune directory nella directory del punto di montaggio possono trovarsi fisicamente su dispositivi diversi.
  • Gli strumenti di backup possono aggiornare solo i file che sono stati modificati nella directory di origine, non l'intera directory.

Svantaggi

  • I volumi EncFS non possono essere formattati con un file system arbitrario. Mantengono le caratteristiche e le limitazioni del file system contenente la directory di origine.
  • La frammentazione di un volume crittografato provoca la frammentazione del file system contenente la directory di origine.
  • Ogni utente con accesso alla directory di origine è in grado di vedere il numero di file nel file system crittografato, le autorizzazioni di cui dispone, la dimensione approssimativa, la lunghezza approssimativa del nome e la data dell'ultimo accesso o modifica.

Opzioni del file system

Quando si crea una nuova directory EncFS, sono disponibili varie opzioni.

Algoritmo di crittografia

EncFS può utilizzare qualsiasi algoritmo di crittografia che può essere trovato sul sistema. Blowfish e AES sono comunemente disponibili .

Se l'algoritmo di crittografia consente di scegliere la lunghezza della chiave, questo può essere fatto quando lo si utilizza in EncFS.

Dimensione blocco

Ogni file è crittografato blocco per blocco e questa opzione consente di scegliere la dimensione del blocco. Quando si legge almeno un byte da un file crittografato, l'intero blocco viene decrittografato. Inoltre, durante la scrittura, il blocco viene prima decrittografato nella sua interezza e quindi crittografato nuovamente.

La dimensione del blocco predefinita è 512, che è sufficiente nella maggior parte dei casi.

Crittografia dei nomi di file

A differenza del contenuto dei file crittografati, i nomi dei file possono essere crittografati con un codice a blocchi o a flusso. Un cifrario a blocchi ti consente di nascondere la lunghezza esatta dei nomi dei file, mentre un cifrario a flusso lo mostra esattamente lo stesso, risparmiando spazio sul supporto (anche se piccolo).

Catene di percorsi di file completi

Questa opzione consente di crittografare gli stessi nomi di file che si trovano in directory diverse in modo diverso, in base al percorso completo del file.

Tuttavia, se la directory padre viene rinominata, verranno rinominati anche tutti i file e le directory sottostanti. Questa può essere un'operazione ad alta intensità di risorse. Pertanto, non è consigliabile utilizzare questa opzione se è prevista una frequente ridenominazione di directory altamente nidificate.

Avvio del vettore per i file

Se questa opzione è abilitata, ogni file viene crittografato con un vettore di avvio arbitrario di 8 byte, che si trova all'interno del file crittografato. Se questa opzione è disabilitata, ogni file viene crittografato con lo stesso vettore iniziale, il che può rendere la chiave meno resistente al crack.

L'abilitazione di questa opzione rende il file system più sicuro al costo di aggiungere solo 8 byte a ciascun file.

Catene esterne di vettori iniziali

Consente di crittografare il contenuto degli stessi blocchi di file diversi in modi diversi, in base al percorso completo del file.

Di conseguenza, la modifica del percorso del file cambierà anche il suo contenuto crittografato.

Blocca le intestazioni MAC

Consente di memorizzare un checksum di ogni blocco crittografato in modo che il danneggiamento o la modifica del file crittografato possa essere rilevato da EncFS. Il checksum è di 8 byte aggiunti a ciascun blocco. Puoi utilizzare 8 byte casuali aggiuntivi in ​​modo che due blocchi aperti identici abbiano un checksum diverso.

Questa opzione impone un costo aggiuntivo alla CPU , poiché ogni blocco deve essere confrontato con il suo checksum ogni volta che viene letto o scritto.

Smontaggio automatico dopo un certo periodo di inattività

Se il file system crittografato non è stato utilizzato per un po' di tempo (diversi minuti), può essere smontato automaticamente. Lo smontaggio non avverrà se almeno un file è aperto, anche per la lettura.

Confronto con i pari

Il confronto è stato effettuato con i file system CryptoFS (anch'esso basato su FUSE) e LUKS (implementato dal kernel). I file system CryptoFS ed EncFS mostrano le migliori prestazioni quando la dimensione del file e della scrittura è vicina alla dimensione della pagina "nativa" dei sistemi Linux (4096 KB). I risultati di entrambi i sistemi userspace sono significativamente indietro rispetto ai risultati della crittografia LUKS, come previsto. In effetti, l'uso di varie astrazioni FUSE e sistemi crittografici impone una latenza aggiuntiva su tutte le operazioni di lettura e scrittura. Tuttavia, le prestazioni di EncFS si sono rivelate leggermente superiori a quelle di CryptoFS [7] .

Vedi anche

Note

  1. encfs/README.md
  2. Versione 1.9.5 - 2018.
  3. EncFSMP (downlink) . Estratto il 17 ottobre 2015 Archiviato dall'originale il 15 ottobre 2015. 
  4. ^ WEncFS (Windows Encrypted File System) Archiviato l'8 gennaio 2009 su Wayback Machine  : un progetto incompiuto per portare EncFS su Windows
  5. ^ encfs4win Archiviato il 4 luglio 2011 su Wayback Machine  - progetto realizzabile per portare EncFS su Windows (ultima versione 2013)
  6. ^ encfs4win Archiviato il 20 novembre 2016 su Wayback Machine  — Fork del progetto originale, sviluppato attivamente (ultima versione 2016), utilizza l'attuale versione Dokan, ospitato su github Archiviato il 14 gennaio 2017 su Wayback Machine
  7. Sistemi di crittografia dei dati LUKS, EncFS e CryptoFS per Linux (link inaccessibile) . Estratto il 25 dicembre 2008 . Archiviato dall'originale il 30 aprile 2009. 

Collegamenti