¿Un archivo reescrito en NTFS usa los mismos bloques?

8

Supongamos que producimos un documento confidencial en una caja de Windows 7, el sistema de archivos NTFS. A medida que escribimos el documento, crece más y seguimos guardándolo, lo que significa que el editor lo sobrescribe desde el principio, truncándolo a longitud cero y recreando el nuevo contenido.

Suponiendo que el editor reutiliza el mismo objeto del sistema de archivos, ¿estamos seguros de que el sistema de archivos usará los mismos bloques físicos en el disco para todas las partes del archivo que ya existen? ¿O puede asignar nuevos bloques de inmediato, ya que el final del archivo se trunca?

¿O depende de cómo se escribe el archivo: sobrescribir seguido de truncar explícito, en lugar de abrir para sobrescribir?

La relevancia para la seguridad es que si los bloques anteriores se liberan y se asignan bloques potencialmente diferentes al archivo, entonces no es suficiente destruir el archivo para destruirlo; debemos limpiar todo el espacio libre después de haber hecho múltiples guardados. Para evitar hacerlo, debemos producir el archivo en una sola pasada, o bien destruir la copia en disco fuera del editor antes de cada guardado.

    
pregunta Kaz 05.09.2013 - 06:03
fuente

4 respuestas

4

En general , la asignación de bloques es la operación más costosa en los sistemas de archivos, por lo que los sistemas de archivos intentarán evitarla, en particular reutilizando los bloques cuando sea posible. Esto significaría lo siguiente:

  • Al sobrescribir un archivo existente, se reutilizan los mismos bloques. Los nuevos bloques se asignan cuando los datos del nuevo archivo superan los de los archivos sobrescritos.

  • Al truncar un archivo existente, todos los bloques se liberan, por lo que potencialmente son reutilizables para otras operaciones de archivo. En ese caso, el nuevo archivo puede asignar nuevos bloques. No hay garantía de que el contenido del nuevo archivo reasigne los mismos bloques y, en particular, los bloques antiguos podrían haberse reasignado a otros archivos mientras tanto.

Sin embargo , depende mucho de las funciones internas del sistema de archivos. Logistemas de archivos estructurados realizan todas las escrituras de forma secuencial, a lo largo de toda la partición, por lo que está prácticamente garantizado, con tal sistema de archivos, que el nuevo archivo no sobrescribirá los bloques del archivo anterior. Journaling filesystems puede copiar el contenido del archivo en una estructura adicional (la "revista") además del almacenamiento permanente real (según sobre si el registro en diario se extiende al contenido del archivo, o solo a los metadatos). Algunos sistemas de archivos también usan un "árbol de fases" que se puede ver como un sistema de archivos estructurado por registro, con un árbol en lugar de una lista; para estos, los sobrescritos pueden o no suceder.

Un punto importante a considerar es que las estrategias de asignación de bloques no dependen solo del sistema de archivos , sino también de la implementación . No hay garantía de que Windows XP y Windows 7, por ejemplo, se comporten de manera similar en el mismo sistema de archivos NTFS. Una versión de SO puede valer la pena mantener los bloques antiguos para "acelerar (re) la asignación", mientras que otra podría emplear otra estrategia. Esto es todo heurística, sintonizado y ajustado. Por lo tanto, uno no puede realmente responder a su pregunta sobre "NTFS"; uno tendría que hablar sobre "NTFS implementado en OS foobar, versión 42.17, compilación 3891".

Además , todos estos bloques son lo que ve el sistema operativo; en realidad el almacenamiento físico puede diferir, y mover / copiar datos alrededor. Esto es típico de los algoritmos de nivelación de desgaste en SSD. En términos generales, la sobrescritura / destrucción de archivos en SSD no es confiable (consulte esta respuesta para obtener detalles y sugerencias). Pero algunos movimientos de datos también pueden ocurrir con los discos magnéticos (en particular cuando se detecta un sector escamoso; la reasignación se realiza sobre la marcha, y el sector antiguo permanece intacto, para siempre).

Esto básicamente significa que la destrucción de archivos no funciona bien , ya que no puede garantizar que los datos serán destruidos. Debe utilizar la eliminación de archivos solo como medida de emergencia cuando otros métodos hayan fallado o no se hayan aplicado por error. Las formas correctas para destruir permanentemente un archivo son:

  • Destrucción total del disco completo, por ejemplo, disolviéndolo en ácido.
  • Encriptación : cuando los datos están encriptados, destruir la clave es suficiente para que los datos no puedan recuperarse. Si bien esto no resuelve completamente el problema (todavía tienes que destruir un elemento de datos), lo hace mucho más fácil (una clave es pequeña: es mucho más fácil destruir 128 bits que destruir 128 gigabytes ).

Borrado seguro , cuando se implementa correctamente en el disco, funciona con el Truco de cifrado.

    
respondido por el Thomas Pornin 25.09.2013 - 17:16
fuente
1

En primer lugar, si la unidad es un SSD, entonces no, porque más allá de lo que está haciendo el sistema operativo, la unidad realizará una nivelación de desgaste, esto significa que los datos probablemente se escribirán en una ubicación diferente de la unidad, incluso si el sistema operativo está escribiendo en la misma unidad. bloques.

En Windows, el descriptor de archivo incluye el nombre de archivo, a diferencia de la mayoría de los sistemas Linux que separan la asignación física de datos en una sola entrada de directorio (nombre de archivo). Entonces, cuando empiece a reescribir un archivo existente, el sistema operativo desvinculará todos los bloques subsiguientes del primero, por lo que el primer bloque seguirá siendo el mismo, pero los bloques subsiguientes se reasignarán a, d podría asignarse de manera diferente.

Hay herramientas disponibles que hacen el borrado seguro de archivos, realizan escrituras destructivas en el archivo sin truncarlo, y luego cambian el nombre del archivo para sobrescribir la entrada del directorio.

    
respondido por el Stuart 25.09.2013 - 11:58
fuente
1

No se puede suponer que se usarán los mismos bloques. Y como se dijo en otras respuestas, con SSD y nivelación de desgaste, está más allá de su control. Para un documento confidencial, propondría un contenedor encriptado como TrueCrypt . No olvide utilizar un archivo de intercambio cifrado, también.

    
respondido por el ott-- 25.09.2013 - 18:18
fuente
0

¿Este comportamiento es una característica del software de procesamiento de documentos que está utilizando con seguridad? Ha pasado un tiempo desde que miré el OOXML Standard , si toma El documento es bastante ... sano. Supongo que está utilizando Microsoft Office, perdóneme si he dado un gran salto. Junto con el hecho de que el formato Zip que usa OOXML como contenedor hace que las instalaciones estén disponibles en la especificación para transmitir partes del archivo desde el contenedor, no puedo pensar en una razón por la que un documento creado de esta manera sea un dato inmutable. estructura.

Si no es Office, y la aplicación funciona de esta manera, no estoy seguro de que no se optimice en el compilador o en el kernel a menos que el ingeniero de software fuera explícito en rechazar esta funcionalidad.

Pero si desea hacer algunas comprobaciones, siempre puede usar fsutil para buscar el Las ID de los archivos, un concepto similar serían los INodes o VNodes de Posix, que si tiene instalado Cygwin podría obtener su representación con ls -i .

Necesito repasar los aspectos internos de las distintas arquitecturas de SSD, pero me pregunto si esta pregunta se debe a TRIM y cómo es posible que (al menos en un punto) no se haya asegurado de que sobrescriba un archivo con una la función aleatoria en realidad habría sobrescrito el archivo, en lugar de tener un algoritmo de nivelación de desgaste aplicado para suavizar los IOP en la unidad.

Espero que alguien pueda arrojar algo de luz sobre esto, pero tal vez si no fuera solo por su gimnasia mental, podría estar enfocándose en el problema incorrecto. Si necesita algunas garantías razonables de sus datos en reposo y este documento es lo suficientemente sensible como para que le preocupe la fuga; Tal vez el documento o la unidad debe estar encriptada.

    
respondido por el M15K 05.09.2013 - 08:09
fuente

Lea otras preguntas en las etiquetas