Eliminar de forma segura el archivo original después del cifrado

4

Mi aplicación encripta un archivo y el resultado se escribe en uno diferente. ¿Cómo elimino con seguridad el original (C ++)?

Actualizar . ¡Guauu! El problema es más complicado de lo que pensaba ...

1) El propósito de mi aplicación es cifrar archivos del disco duro del usuario. Es posible que no necesite que se canalicen todos los datos, ya que en realidad no sé de qué fuente puede provenir. CUALQUIER archivo, no solo las descargas del navegador o el resultado de cualquier tipo de procesamiento. Por lo tanto, la tubería no es para mi caso.

2) Cuando estaba escribiendo mi pregunta, mi principal preocupación era si la destrucción (o la sobrescritura, como la llamé antes) destruye los datos o no. Ahora veo que tenía razón, y los datos están lejos de estar seguros de ser destruidos.

3) ¿La destrucción realmente daña los discos duros?

Entonces, ¿la destrucción sigue siendo la mejor opción en mi caso o no?

    
pregunta Ilya 11.05.2015 - 12:15
fuente

3 respuestas

2

Aplaudo la respuesta de @ LieRyan de nunca poner información confidencial en un disco duro en texto simple en primer lugar. Escribir directamente en un archivo encriptado, o mejor usar el cifrado de disco completo es mucho más confiable que la destrucción.

Además, quiero agregar algunas notas acerca de que los discos duros modernos son inteligentes:

1. La idea de sobrescribir los datos 16 veces está totalmente desactualizada. Para unidades magnéticas fabricadas después de 2006, basta con ponerlas en cero una vez ( wikipedia) . El problema era que en los años 70 había un espacio no utilizado entre las bandas de escritura donde los campos magnéticos podían "filtrarse" y recuperarse. Hoy en día, las bandas están tan apretadas que no se puede recuperar nada entre ellas.

2. Nivelación de desgaste : como lo indican @LieRyan, las unidades SSD, las unidades flash, etc., hacen todo tipo de nivelaciones de desgaste complicadas para distribuir las escrituras en el disco (wikipedia ). Si realiza dos escrituras secuenciales en el mismo archivo, tiene la garantía de que no estarán en la misma ubicación física.

3. Búferes de disco duro (cachés) : Todos los discos duros modernos contienen algo de memoria caché utilizada para almacenar en búfer los archivos a los que se accede con frecuencia ( wikipedia ). Esto significa que (A) existe la posibilidad de que las copias de sus datos confidenciales permanezcan en el caché una vez que se haya completado la escritura. Un atacante que tiene suficiente acceso físico para recuperar los datos eliminados, también puede recuperar el caché si actúa rápidamente. (B) Supongamos que escribe 16 patrones aleatorios (descarga de stdout cada vez): estas operaciones se realizarán en el caché del disco duro y solo el resultado final se escribirá en el disco magnético, pero debido a (1) arriba, eso está bien. .

4. Unidades híbridas : estas lujosas unidades modernas colocan pequeñas cantidades de memoria SSD dentro de las unidades magnéticas tradicionales para actuar como cachés más grandes. Aquí se obtiene lo peor de ambos mundos en lo que respecta a la trituración: hay > 2 copias de sus datos debido a la nivelación de desgaste, Y no desaparecen cuando apaga la alimentación.

La conclusión es que la destrucción de los discos se desgasta más rápido (especialmente SSD o Flash), pero no siempre elimina sus datos. Ciertamente, se puede destruir (muchas empresas y gobiernos lo hacen), pero se necesita más que software; Debe tener mucho cuidado con el hardware que compra y la forma en que configura su sistema operativo. Si esto es algo que realmente le preocupa, entonces el mejor enfoque es tratar su unidad de disco duro como adversarial y no escribir cosas sensibles a ella en texto sin formato, use cifrado de disco completo.

    
respondido por el Mike Ounsworth 12.05.2015 - 04:13
fuente
2

La forma más segura de hacerlo es no tener el archivo no cifrado en el almacenamiento persistente en primer lugar. Canalice los datos sin cifrar directamente a su programa de cifrado directamente desde cualquier programa que haya generado / descargado los datos.

También deberá tener cuidado de usar la API del SO para marcar su área de memoria como no intercambiable (por ejemplo, con mlock en Linux ). Esto garantiza que el administrador de memoria virtual no envíe el programa al disco. Dependiendo de sus requisitos, es posible que también deba tener cuidado de descartar cualquier información confidencial antes de que la computadora entre en suspensión o hibernación.

Tenga en cuenta que destruir un archivo en realidad no puede sobrescribir los datos sin cifrar en algunos dispositivos de almacenamiento como SSD debido al balanceo de escritura .

    
respondido por el Lie Ryan 12.05.2015 - 03:21
fuente
1

"Tritura" el archivo. Existen varias formas de hacerlo para diferentes sistemas operativos, pero la más simple es abrir el archivo y escribir valores aleatorios sobre los datos reales, varias veces, y después de eso puede eliminarlo.

Eche un vistazo rápido aquí, no es necesario crear un patrón uniforme, pero es solo un ejemplo: enlace

Y no te olvides de vaciar después de cada ciclo de reescritura.

Actualización:

Aquí hay más detalles si quieres echar un vistazo: Trituradora de archivos de escritura , la respuesta seleccionada es bastante buena.

    
respondido por el Sacx 11.05.2015 - 12:58
fuente

Lea otras preguntas en las etiquetas