2010-12-30 19 views
7

Duplicar posible:
C# - Deleting a file permanentlyBorrando de manera segura un archivo usando métodos simples?

Hola,

estoy usando C# .NET Framework 2.0. Tengo una pregunta relacionada con la destrucción de archivos.

Mis sistemas operativos de destino son Windows 7, Windows Vista y Windows XP. Posiblemente Windows Server 2003 o 2008, pero supongo que deberían ser los mismos que los primeros tres.

Mi objetivo es borrar de forma segura un archivo.

No creo que usar File.Delete sea seguro. Leí en alguna parte que el sistema operativo simplemente marca los datos del disco duro en bruto para su eliminación cuando elimina un archivo: los datos no se borran en absoluto. Es por eso que existen tantos métodos de trabajo para recuperar archivos supuestamente "eliminados". También leí, por eso es mucho más útil sobrescribir el archivo, porque entonces los datos en el disco realmente tienen que cambiarse. ¿Es esto cierto? ¿Esto es generalmente lo que se necesita?

Si es así, creo que simplemente hay que escribir el archivo completo de 1 y 0 de un par de veces.

he leído: http://www.codeproject.com/KB/files/NShred.aspx http://blogs.computerworld.com/node/5756 Securely deleting a file in C#.NET

+0

Esto debería hacer el truco: http://www.ameri-shred.com/equipment/industrial/hard-drive.html – Flipster

+2

@FlipScript: Usted pensaría que sí, pero incluso eso podría no ser lo suficientemente bueno. Muchos datos caben en una tira de 3/4 ". [El DOD usa palabras como" incinerar "," pulverizar "y" derretir ".] (Http://www.zdelete.com/dod.htm) –

Respuesta

5

Me temo que se enfrenta a un problema complejo. Sugeriría que no intentes resolverlo tú solo.

Tenga en cuenta que además de garantizar una sobreescritura física del archivo (que puede estar en LAN, flash o lo que sea), tendrá que encargarse de las cachés de aplicaciones, Windows hiberna archivos, Windows recupera archivos, cambia archivos de Windows , y todas las copias o más versiones de este borran archivos (de intercambio de todo el espacio vacío, o peor, espacio que contenían caché antes, y puede haber sido asignados a otros archivos desde) - todo en el orden correcto.

Creo que sus posibilidades pueden ser mejores si puede almacenar sus archivos en una unidad lógica (o incluso física) dedicada, que no es utilizada por el SO o por otras aplicaciones, y si convencerá a Windows no intercambiar la memoria que está utilizando para mantener el archivo, mientras está en RAM (usando VirtualLock()). Aún así, debe borrar el intercambio, el caché, etc.

Además de eso, debe integrar un producto como Eraser en su aplicación (el software Eraser es gratuito y su código fuente está publicado bajo la Licencia Pública General de GNU).

+1

Volver a utilizar una solución existente es un buen consejo, pero no elegiría nada que afirme que borre archivos individuales de forma segura, simplemente no es posible. –

+0

@ Ben Voigt: Reading Eraser chang log, puede ver cuánto esfuerzo le han dedicado a lo largo de los años: lidiar con diferentes unidades y escenarios. Supongo que puede haber algunas configuraciones muy especiales en las que el borrado seguro es imposible, sin embargo, probablemente funcionará bien para los sistemas estándar. –

0

se podían abrir el archivo y sobrescribir utilizando una corriente de cifra varias veces. Sobrescribirlo 7 veces y luego eliminarlo parece ser la norma :)

+1

Sobrescritura el archivo no sobrescribe necesariamente la sección del disco que contenía los datos anteriores. –

+0

Tampoco sobrescribe ninguna temp o copias almacenadas en caché de la aplicación o el sistema operativo podría haber realizado, como las del archivo de intercambio, etc., que Lior señaló. – NotMe

2

De lo que I've read, la solución para hacer que los datos ya no sean visibles parece estar sobreescribiendo el archivo con 0 y 1.

+2

No solo sobrescribe -con-cero no borra los datos más allá de la recuperación, pero no hay razón para pensar que esto realmente sobrescribe los datos. Si está en una unidad flash, es casi seguro que haya un algoritmo de nivelación de escritura activo y el bloque al que escribió diferente de la que contiene el contenido anterior. Y si no es una unidad flash, el archivo probablemente se ha movido por desfragmentación, dejando copias del contenido en otros bloques en el disco. –

1

Si el archivo que está borrando de forma segura era el suyo, para empezar, es posible que desee considerar la encriptación de la misma en el primer lugar. Entonces, incluso si se recupera después de la eliminación, la información no se revelará (suponiendo que pueda controlar las claves).

+1

No lo mencioné porque pensé que era w no debería estar relacionado con la pregunta. Sí, ya me siento seguro ya que el archivo está encriptado (elijo AES 256 bit usando un algoritmo SHA 512). Aún así, el amigo para el que estoy programando todavía exige que haga todo lo que pueda para borrarlo. Después de toda esta búsqueda, parece que debería simplemente llamar a SDelete.exe desde SysInternals y dejar que se encargue de todo el trabajo. – Jason

+0

Por lo tanto, debe concentrarse en destruir el archivo de intercambio, que puede contener copias de los datos descifrados y los archivos que contienen la clave de descifrado. Pero, por las razones mencionadas en mis comentarios, las preguntas vinculadas, etc., que ejecutan el comando de borrado seguro del fabricante del disco o la destrucción física del disco son las únicas dos formas de estar seguro. –

Cuestiones relacionadas