L'eliminazione sicura è generalmente costruita indirettamente:
- Cripta i dati con una chiave generata a caso.
- Archivia la chiave in un unico punto (forse essa stessa crittografata con una chiave derivata da una password).
Quindi, anziché eliminare tutti i bit dei dati, il processo di cancellazione sicura deve solo garantire che pulisca la chiave.
Ciò consente di archiviare il file chiave su un tipo di supporto diverso rispetto ai dati del file, ad esempio i dati del file possono essere su un disco rigido o SSD e i dati chiave su un dispositivo più piccolo ma più sicuro come un flash rimovibile guida (che porti sempre con te) o una smartcard (che rende difficile l'estrazione della chiave). Per distruggere la chiave, è sufficiente cancellare o distruggere il piccolo supporto economico contenente la chiave.
Questa configurazione è facile da organizzare a livello di intero file system (ad esempio, LUKS sotto Linux può funzionare con un file di chiavi memorizzato su un supporto diverso o con una password che è memorizzata su una smart card OpenPGP), ma io non conoscere qualsiasi soluzione pronta all'uso a livello di file.
Non è molto conveniente, ma puoi creare qualcosa con encfs sotto Linux. Encfs crittografa un albero di directory con una chiave memorizzata in un file ( .encfs6.xml
nella radice dell'albero crittografato). È possibile spostare questo file su un altro dispositivo di memorizzazione (che può essere di sola lettura) e creare un collegamento simbolico. Quindi puoi eliminare efficacemente l'albero crittografato distruggendo o cancellando il dispositivo contenente la chiave. Il file chiave deve essere scritto una volta sola, quindi se si utilizza un filesystem che non rialloca i blocchi (es. Ext2), sovrascrivere il file è sufficiente per cancellare il contenuto precedente (almeno a livello logico; le unità eseguono la propria riallocazione dei blocchi in modo che sia ancora possibile recuperare i dati rimuovendo l'unità per bypassare il controller).