Dencrypt i contenitori al volo senza montarli nel filesystem?

1

C'è un modo per avere i file contenitore / i dispositivi LVM trasparenti decodificati al volo senza montarli nel filesystem?

Tutte le soluzioni di crittografia che conosco come LUKS-LVM, i contenitori gpg ect richiedono che decifri il dispositivo, lo monto nel filesystem per accedere ai dati. Stavo cercando qualcosa come Docker, che mi dà un ambiente per archiviare i dati e dare agli utenti l'accesso a questo. Tuttavia, voglio anche ridurre il rischio che i dati vengano comprimizzati. Quando ho un'immagine crittografata per Docker, dovrei installarla nel filesystem per Docker per accedervi. Chiunque in qualche modo legalmente o illegalmente ha ottenuto l'accesso al sistema a livello di root, sarebbe in grado di leggere questo punto di mount e ottenere i dati da lì. Voglio minimizzare questo rischio, in modo che possa accedere ai dati sull'immagine / contenitore solo attraverso una sorta di sistema server / client che controlla l'accesso degli utenti utilizzando le chiavi.

È in qualche modo possibile?

    
posta user6329530 11.11.2016 - 15:32
fonte

1 risposta

1

Se vuoi assicurarti che gli utenti abbiano accesso ai loro file solo fornendo una chiave (possibilmente conservata in memoria in modo che non debbano fornirla più e più volte), allora perché non usi semplicemente un semplice , file system non crittografato e crittografare ogni file individualmente?

Forse perché questo perde informazioni sul numero di file, le date di creazione e modifica, le dimensioni dei file e, eventualmente, i nomi dei file se non li crittografate. Quindi inizi a scrivere del codice attorno a quella soluzione e alla fine ti ritroverai con una soluzione che memorizza i singoli file in un contenitore in modo da avere il controllo sui metadati del file.

E ora hai reinventato LUKS, TrueCrypt, VeraCrypt, ...

L'unica differenza tra il tuo sistema e queste soluzioni è che il tuo sistema supporta chiavi individuali per ogni utente mentre LUKS & Co basta usare una sola chiave. Ma puoi ottenere quasi lo stesso comportamento da LUKS creando un singolo contenitore per utente. Hai ancora il problema che se qualcuno ottiene l'accesso come root alla macchina, può leggere tutti i contenitori aperti.

Tuttavia, può farlo anche quando ogni file è crittografato individualmente. È necessaria un'interfaccia per il sistema che accetta un utente e un nome file, decodifica il file al volo utilizzando la chiave utente, che si trova in memoria, e restituisce il contenuto del file decrittografato. Cosa deve impedire a root di utilizzare la stessa interfaccia, mascherata da utente?

Fondamentalmente, LUKS sotto un filesystem standard fornisce l'interfaccia che avresti dovuto progettare altrimenti. Ci sono solo due soluzioni che posso vedere per darti più sicurezza (ma non quello che pensi):

  1. Utilizzare un TPM per proteggere le chiavi dell'utente. In questo modo non verranno rubati dalla memoria, ma un utente che ha root può comunque mascherarsi da un altro utente e decrittografare ogni file ordinando al TPM di decodificarne il contenuto.

  2. Inserisci i dati crittografati e un'API di accesso su un computer dedicato che serve solo la tua applicazione ed è accessibile solo tramite l'API di accesso. Questo rende molto più piccola la superficie di attacco sui dati crittografati. Ma non può nemmeno proteggerti da un account root compromesso sul tuo server delle app o sul server di archiviazione.

Quindi, per riassumere: penso che tu abbia già quello che vuoi fuori dalla scatola con LUKS. Non esiste una linea di difesa sicura contro root compromessa.

    
risposta data 11.11.2016 - 23:00
fonte

Leggi altre domande sui tag