Preoccupazione della privacy per la modifica dei file su SSD

0

Sappiamo tutti che i file che vengono cancellati da un sistema moderno di solito non vengono cancellati immediatamente dalla memoria, il che è di per sé un rischio per la sicurezza.

Tuttavia, questa domanda si concentra su un argomento diverso: supponiamo che un file sul sistema, che è in chiaro, archivi per una piccola quantità di informazioni sensibili (ad esempio, chiavi crittografiche in esso). Quindi, il contenuto del file viene modificato e le informazioni sensibili vengono rimosse da esso.

Supponendo che nessun programma leggesse il file mentre conteneva quell'informazione e supponendo che nessun backup del file fosse fatto dall'editor di testo mentre veniva modificato (poiché è semplicemente l'utility "nano" unix), ci sono dei modi in cui il le informazioni sensibili possono essere estratte dal supporto di memorizzazione dopo che il file è stato modificato rimuovendo le chiavi da esso? Come si estrae questa informazione e dove viene archiviata?

Si supponga che la partizione in cui è contenuto il file sia, come ho detto, in chiaro e che il supporto di memorizzazione sia un SSD. Come modello di minaccia, supponiamo che l'attaccante abbia accesso fisico a tale SSD dopo che è stata effettuata la modifica del file, ma il computer stesso è spento (quindi nessuna estrazione da RAM o cache o altre cose sospette).

Se è rilevante, supponi anche che la partizione sia ext4 (anche se sarebbe interessante ascoltare questa risposta anche per altri sistemi).

    
posta John 19.02.2018 - 14:32
fonte

2 risposte

0

Su ext4 c'è la possibilità che i tuoi dati (le tue chiavi segrete) possano essere ripristinati indipendentemente dall'hardware sottostante, a seconda di come lo monti. (Le seguenti spiegazioni sono valide anche per molti altri filesystem di journaling e hai sempre un problema con i filesystem copy-on-write come btrfs e altri che sono abilitati all'istantanea).

La maledizione dei file system di journaling / copia su scrittura

Questo ha a che fare con il modo in cui i moderni filesystem (di journaling) assicurano che se si ha una perdita di potenza nel mezzo della scrittura sul filesystem, il filesystem si troverà comunque in uno stato normale. Con piccoli dischi, dovevamo eseguire programmi come fsck per riparare un filesystem dopo un tale crash. Con dischi di grandi dimensioni, l'esecuzione di fsck richiederebbe troppo tempo, quindi i file system di journaling sono un'opzione molto migliore.

Tuttavia, ottengono la loro magia di recupero tenendo un diario delle operazioni (da cui il nome) che possono o rigiocare per intero o scartare se non ci sono commit su record (ad esempio se il computer è morto nel mezzo della scrittura di qualcosa sul disco ).

Ora, a seconda di quanto il filesystem scrive nel giornale (solo le operazioni sui metadati del file o anche i dati associati), potresti avere un problema.

Un modo per essere in grado di ripristinare uno stato pulito dopo che una scrittura di dati in un file è andato storto / interrotto nel mezzo) è di non scrivere mai dati nella stessa posizione, quindi se si sovrascrivono i dati di un file, il nuovo i contenuti non sono memorizzati nello stesso blocco del disco del contenuto del file originale. Al suo posto viene invece assegnato un nuovo blocco disco. Questo è chiamato copy-on-write (COW in breve). In questo modo, il vecchio contenuto del file può essere facilmente recuperato quando si scopre che l'operazione di scrittura non è stata completata correttamente.

Tuttavia, ciò significa anche che le tue chiavi segrete risiedono ancora sul disco dopo essere state "sovrascritte" con nuovi dati e possono essere trovate con una semplice operazione grep sul dispositivo di partizione, ad esempio:

grep "my-secret" /dev/sda1 

o forse

strings /dev/sda1 | grep "my-secret"

Quindi non è necessario essere uno scienziato missilistico per recuperare i dati precedentemente sovrascritti quando il file system è montato con l'opzione di registrazione dei dati.

giornale dei dati su ext3 e ext4

ext3 e ext4 consentono di attivare l'inserimento dei dati su (opzione data=journal ) o disattivare (che, penso, è l'impostazione predefinita). Io penso che senza data journaling (o almeno con data=writeback ), i tuoi file dovrebbero essere sovrascritti sul posto (questo è ciò che man ext4 suggerisce, comunque). Ma non sono sicuro al 100%, quindi è meglio testarlo.

Problemi causati da dischi a stato solido e algoritmi di livellamento dell'usura

Le unità SSD e flash pongono più problemi: gli algoritmi di livellamento dell'usura rendono praticamente impossibile sapere dove i dati finiscono fisicamente.

L'opzione di ritaglio dell'unità SSD può essere d'aiuto perché consente al controller SSD di contrassegnare i blocchi come eliminati, in modo che il controllore possa programmarli per essere sovrascritti in un momento precedente. Tuttavia, qui non hai garanzie. Gli SSD economici potrebbero anche non implementarlo e giacciono sul sistema operativo.

Infine, anche i dischi magnetici rotazionali pongono problemi. La maggior parte di questi dischi, che sono ancora operativi, dispone di controller intelligenti che possono sostituire al volo un settore di lavoro per un settore difettoso. Questo può accadere in qualsiasi momento, quindi se sei molto sfortunato, il settore che contiene il tuo segreto potrebbe finire contrassegnato come difettoso e trasparente scambiato. Di solito non è possibile accedere a questi settori difettosi (dopo tutto sono difettosi), ma ciò non significa che gli esperti con l'hardware diagnostico necessario non possano ancora leggere questi settori difettosi. Tuttavia, non mi preoccuperei molto di questo scenario, è solo qualcosa da tenere a mente.

Che cosa puoi fare?

Quindi la tua unica scommessa sicura è quella di crittografare il filesystem in cui memorizzi le informazioni sensibili. Quindi puoi assicurarti che sia davvero inaccessibile eliminando la chiave di crittografia. Questa è l'unica soluzione che funziona indipendentemente dal tipo di filesystem e hardware che usi.

Un altro modo per sovrascrivere i dati è creare un file che occupa tutto lo spazio libero di una partizione:

dd if=/dev/zero of=stupidly_big_file 

Tuttavia, questo potrebbe richiedere molto tempo e non è abbastanza infallibile.

    
risposta data 19.02.2018 - 16:18
fonte
0

Non è un esperto, ma penso che a meno che non venga attivato il trim e ci sia dato abbastanza tempo per fare il suo lavoro:

  • L'utente medio non può recuperarli.

  • Un utente esperto ha la possibilità di recuperarli

  • Un "pro" con capacità di dissaldare i chip di memoria e leggerli direttamente può molto probabilmente leggerli se non vengono fatti sforzi significativi per assicurare che il settore che contiene i dati sia cancellato fisicamente.

risposta data 19.02.2018 - 14:48
fonte

Leggi altre domande sui tag