Rimozione sicura del file originale dopo la crittografia

4

La mia applicazione crittografa un file e il risultato è scritto in un altro. Come rimuovere in modo sicuro quello originale (C ++)?

Aggiorna . Wow! Il problema è più complicato di quanto pensassi ...

1) Lo scopo della mia applicazione è quello di crittografare i file dal disco rigido dell'utente. Potrei non richiedere che tutti i dati vengano inviati, poiché in realtà non so da quale fonte possa provenire. QUALSIASI file - non solo i download del browser o il risultato di qualsiasi tipo di elaborazione. Quindi, piping non è per il mio caso.

2) Quando stavo scrivendo la mia domanda, la mia preoccupazione principale era se distruggere (o sovrascrivere, come ho chiamato prima) distruggere i dati o meno. Ora capisco che avevo ragione e i dati non sono certo stati distrutti.

3) Lo shredding danneggia davvero i dischi rigidi?

Quindi, la triturazione rimane la scelta migliore nel mio caso o no?

    
posta Ilya 11.05.2015 - 12:15
fonte

3 risposte

2

Mi congratulo con la risposta di LieRyan di non aver mai inserito informazioni sensibili su un disco rigido in chiaro. Scrivere direttamente su un file crittografato, o meglio usando la crittografia a disco intero, è molto più affidabile della distruzione.

Inoltre, voglio aggiungere alcune note sui moderni dischi fissi intelligenti:

1. L'idea di sovrascrivere i dati 16 volte è decisamente superata. Per le unità magnetiche prodotte dopo il 2006, basta azzerarle una volta è sufficiente ( wikipedia) . Il problema era che negli anni '70 c'era spazio inutilizzato tra le bande di scrittura in cui i campi magnetici potevano "fuoriuscire" e essere recuperati. Oggigiorno le band sono talmente strette che non è possibile recuperare nulla in mezzo.

2. Indossare livellamento : come sottolineato da @LieRyan, unità SSD, unità Flash, ecc. eseguono tutti i tipi di complicato livellamento dell'usura per diffondere le scritture attorno al disco (wikipedia ). Se si eseguono due scritture sequenziali sullo stesso file, si garantisce che non si troveranno nella stessa posizione fisica.

3. Buffer del disco rigido (cache) : tutti i dischi rigidi moderni contengono una memoria cache utilizzata per memorizzare i file a cui si accede frequentemente ( wikipedia ). Ciò significa che (A) esiste la possibilità che le copie dei dati sensibili rimangano nella cache dopo che la scrittura è stata completata. Un utente malintenzionato che ha accesso fisico sufficiente per recuperare i dati cancellati, può anche recuperare la cache se agisce rapidamente. (B) Supponiamo che tu scriva 16 pattern casuali - flushing stdout ogni volta - queste operazioni verranno eseguite nella cache dell'HDD e solo il risultato finale scritto sul disco magnetico, ma a causa di (1) sopra, in realtà è ok .

4. Unità ibride : queste fantastiche unità moderne collocano piccole quantità di memoria SSD all'interno di unità magnetiche tradizionali per funzionare come cache più grandi. Qui si ottiene il peggio di entrambi i mondi per quanto riguarda la triturazione: ci sono > 2 copie dei tuoi dati a causa dell'usura, E non va via quando si spegne il potere.

La linea di fondo è che la triturazione consuma le tue unità più velocemente (in particolare SSD o Flash), ma non elimina sempre i tuoi dati. La triturazione può certamente essere fatta (molte aziende e governi lo fanno), ma ci vuole più del software; bisogna stare molto attenti a quale hardware si acquista e come si configura il sistema operativo. Se questo è qualcosa di cui sei veramente preoccupato, allora l'approccio migliore è quello di trattare il tuo disco rigido come contraddittorio e non scrivere cose sensibili in testo in chiaro, utilizzare la crittografia a disco intero.

    
risposta data 12.05.2015 - 04:13
fonte
2

Il modo più sicuro per farlo è quello di non avere il file non criptato sulla memoria permanente in primo luogo. Pipe i dati non crittografati direttamente al tuo programma di crittografia direttamente da qualsiasi programma che ha generato / scaricato i dati.

Dovrai inoltre fare attenzione a utilizzare l'API del sistema operativo per contrassegnare la tua area di memoria come non sostituibile (ad es. con mlock su Linux ). Ciò garantisce che il programma non venga distribuito sul disco dal gestore della memoria virtuale . A seconda delle tue esigenze, potresti anche aver bisogno di aver cura di eliminare tutti i dati sensibili prima che il computer vada in sospensione o ibernazione.

Tieni presente che distruggere un file potrebbe non sovrascrivere i dati non crittografati su alcuni dispositivi di archiviazione come SSD a causa di bilanciamento della scrittura .

    
risposta data 12.05.2015 - 03:21
fonte
1

"Distruggi" il file. Ci sono molti modi per farlo per diversi sistemi operativi, ma il più semplice è aprire il file e scrivere valori casuali sui dati reali, più volte, e dopo puoi eliminarlo.

Dai un'occhiata veloce qui, non è necessario creare un modello uniforme, ma è solo un esempio: link

E non dimenticare di svuotare dopo ogni ciclo di riscrittura.

Aggiornamento:

Ecco altri dettagli se vuoi dare un'occhiata: Scrittura del distruggidocumenti , la risposta selezionata è piuttosto buona.

    
risposta data 11.05.2015 - 12:58
fonte

Leggi altre domande sui tag