[OT] Consiglio per cifratura file

Alessandro Baggi <[email protected]>
Newsgroups gmane.linux.debian.user.italian
Message-ID <[email protected]>
Un saluto a tutta la lista,
mi scuso in anticipo l'OT.

Avrei bisogno di un consiglio per cifrare il contenuto di una directory 
(che può avere dimensione variabile) e che dovrà essere caricata online.

Al momento sto valutando due possibili candidati:

1) gocryptfs (disponibile sui repo di Debian 12). Lo sto provando e 
funziona bene. Per chi non lo conoscesse è un fs FUSE, bisogna 
inizializzare la directory da cifrare, montarla e scriverci dentro i 
file e smontarla. Il risultato finale è una directory con il suo albero. 
I nomi dei file e directory sono cifrati, usa un IV per ogni singola 
directory (e non per singolo file) che viene memorizzato nella directory 
a cui appartiene. C'è stato un audit nel 2017 dove viene riportato che 
qualche informazione si può recuperare ma generalmente è considerato 
sicuro. Ha dei limiti: per esempio la lunghezza del nome del file non 
puo superare un certo numero di caratteri, in passato non supportava le 
ACL. Inoltre ha un file (gocryptfs.conf) che non deve essere caricato 
online altrimenti si può perdere la confidenzialità dei dati.

2) Container LUKS su file: stavo leggendo qualche tempo fa [1] di poter 
utilizzare i container LUKS per cifrare solo una parte interessata e non 
necessariamente tutto il device. Praticamente si crea una file di un 
determinata dimensione. Con fallocate l'allocazione è molto veloce in 
quanto riserva solo lo spazio necessario senza scrivere dati (il file 
viene visto pieno di \0) ma si può anche riempirlo con l'output di 
urandom. Una volta creato il file si crea il device con 'cryptsetup 
luksFormat', si apre con 'cryptsetup open', si crea il filesystem (ext4 
o xfs) si monta, ci si scrive dentro, lo si smonta, si chiude il device 
e il risultato è un file cifrato che può essere inviato in rete anche 
via rsync (che con il sync del delta è molto efficiente). Per i 
successivi utilizzi basta 'aprire' il container luks e montare l'fs. 
Permette inoltre di avere un header staccato dal file in modo tale che 
le informazioni importanti non vengano spedite in rete. Nel caso in cui 
serva più spazio, il container può essere ingrandito (questo comporta 
anche resizefs) a proprio piacimento.

I dubbi sono che mentre gocryptfs è sviluppato da (credo) un singolo 
utente, LUKS/dm-crypt è lo standard su Linux. Inoltre LUKS è stabile e 
molto testato, è portabile tra diversi sistemi e le limitazioni che ha 
sono legate al filesystem che si usa sul device luks mentre le 
limitazioni di gocryptfs sono legate al software stesso. Inoltre se 
gocryptfs non è compilato per la distribuzione che si utilizza può 
essere fastidioso non averlo nei repo del sistema (anche se ha una 
versione statica sul sito).

L'unica pecca del container LUKS è che ci sono multipli livelli impilati 
tipo: device -> fs -> luks -> fs. Credevo che questo comportasse un 
degradamento delle performance ma dopo qualche test mi sono ricreduto. 
Altra piccola nota è che in preparazione del file container, nel caso lo 
si voglia popolare con dati random, richiede tempo e risorse ma una 
volta fatto va una meraviglia.

Quali tra i due metodi è migliore?

Grazie in anticipo e mi scuso ancora per l'OT.


[1] - https://opensource.com/article/21/4/linux-encryption
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.