¿Cómo saber si un archivo de texto ha sido editado o manipulado?

37

¿Es posible saber si un archivo de texto, por ejemplo, en formato XML, ¿se ha editado o manipulado a lo largo del tiempo?

El contexto de mi pregunta es el siguiente:

Soy un científico en la industria que utiliza una tecnología llamada 'espectrometría de masas (MS)'. La EM es una técnica analítica utilizada, por ej. en el análisis forense para determinar si un compuesto en particular está presente en una muestra (por ejemplo, drogas de abuso en sangre u orina).

Espec. de masa. Los archivos de datos generalmente se almacenan en formato de archivo plano según la especificación binaria privada del proveedor del instrumento: su software puede procesarlo, pero nada más puede hacerlo. Sin embargo, existen estándares abiertos para los datos de MS, y la mayoría de los proveedores admiten la exportación a al menos una especificación abierta. Estos estándares abiertos se basan principalmente en XML en estos días (por ejemplo, mzML ) y permiten el procesamiento con aplicaciones de código abierto, y también permiten el uso prolongado. almacenamiento a largo plazo (> 10 años) de los datos en un formato que no requiere que mantengamos una computadora archivada y el SO (o VM) y el software de procesamiento por períodos prolongados.

El formato binario del proveedor proporciona al menos algo de seguridad contra la manipulación de datos, sin embargo, los formatos XML no lo hacen. Por lo tanto, el problema es que los formatos abiertos son muy útiles para proporcionar acceso a los datos en escalas de tiempo de archivo, pero la seguridad es un problema.

    
pregunta Drew Gibson 09.01.2016 - 14:15
fuente

8 respuestas

81

La solución predeterminada sería utilizar firmas criptográficas. Haga que cada técnico genere un par de llaves PGP, publique la clave pública y mantenga segura la clave privada.

Cuando un técnico realiza un análisis, firman el archivo de resultados con su clave privada. Ahora cualquier persona que quiera verificar el archivo puede verificar la firma usando la clave pública del técnico. Cuando alguien cambia el archivo, la firma ya no será correcta.

Consideración de seguridad : en caso de que otra clave privada de un técnico sea conocida por otra persona, esa persona puede cambiar los archivos y también cambiar la firma a una que sea válida. Este problema se puede mitigar haciendo que varias personas firmen cada archivo de resultados. Un atacante requeriría las claves todas para reemplazar las firmas todas por otras válidas.

Solución alternativa de baja tecnología: Imprima cada archivo de resultados, haga que el técnico lo firme a la manera de la vieja escuela (con un bolígrafo) y deposite el archivo en un archivo físicamente seguro.

Por cierto: No asuma que el formato binario específico del proveedor proporciona más seguridad contra manipulación que XML. El hecho de que no pueda leerlo y editarlo cuando lo abra con un editor de texto no significa que nadie más pueda aplicar ingeniería inversa al formato y crear un editor para él.

    
respondido por el Philipp 09.01.2016 - 15:27
fuente
27

Cualquier forma de firma digital servirá. Aquí hay algunos consejos:

  • Para los datos XML, hay un estándar de firma digital ( XMLSign ). Desafortunadamente, este estándar es bastante deficiente y tiene una importante laguna de seguridad (los documentos deben normalizarse a través de una transformación XML antes de que puedan firmarse. Esto es extremadamente difícil de hacer de manera segura ya que la propia transformación se convierte en una parte importante de la firma). / p>

  • También puede usar PGP o S / MIME para firmar digitalmente documentos. Estos producirán documentos nuevos, basados en texto y, en su mayoría, legibles pero a prueba de falsificaciones.

  • Finalmente, puedes usar firmas separadas. Básicamente, es otro archivo que contiene la firma digital vinculada a otro documento y se puede utilizar para validar los datos originales (sin importar el formato original).

Permítame agregar un poco de información adicional aquí:

  • Elegir las propiedades correctas para la firma (algoritmo, tipo y tamaño de clave, etc.) depende en gran medida de la condición que establezca: ¿durante cuánto tiempo tiene la seguridad de los datos, contra qué tipo de adversario pretende? protéjalos (¿cuál es el valor de una falsificación? ¿cuál sería el valor de un ataque que rompería todos los documentos firmados con la misma clave?), ¿hay algún requisito reglamentario? Esto significa que debe consultar a un especialista que pueda traducir estos requisitos comerciales y traducirlos en técnicos.
  • Le recomiendo encarecidamente que agregue un marca de tiempo segura a su firma. Esto no solo le permitirá probar que un documento no ha sido manipulado, sino que también le permitirá probar cuándo ocurrió la firma.
respondido por el Stephane 09.01.2016 - 15:25
fuente
6

Resumiré las tres opciones principales y las ventajas y desventajas de cada una.

Almacene copias de seguridad de los archivos en una ubicación segura

Bastante autoexplicativo. La "ubicación segura" puede ser un medio de solo lectura (como los CD) o una unidad de red que todos puedan leer pero solo el supervisor puede escribir, o un servicio de almacenamiento en línea (por ejemplo, Dropbox) que hace que sea bastante difícil falsificar el archivo Fechas de modificación.

Pros

  • Deberías tener un sistema de copia de seguridad de todos modos

Cons

  • Si los archivos son grandes, descargarlos para verificarlos puede llevar mucho tiempo
  • Si el falsificador entra en la ubicación segura, puede cubrir sus huellas

Almacene los hashes en una ubicación segura

Un hash es una huella digital de un archivo que se parece a 8f2e3f53aa90b27bda31dea3c6fc72f6 ; Si dos archivos son ligeramente diferentes, tendrán un hash diferente. Tome un hash del archivo original y guárdelo de manera segura, luego, para verificar que no se haya modificado un archivo, tome un hash del mismo y compárelo con el hash almacenado.

Pros

  • Debe almacenar / verificar de forma segura un código de ~ 32 dígitos en lugar de un archivo completo

Cons

  • Todavía necesita acceder a un recurso externo para verificar el archivo
  • Si el falsificador entra en la ubicación segura, puede cubrir sus huellas

Firmas criptográficas

En este caso, una o más personas pueden "firmar" el archivo y, si se realiza algún cambio, estas firmas se invalidarán. Por supuesto, si todos los que necesitan firmar el archivo están dispuestos (o han sido engañados) a firmar un archivo manipulado, entonces puede salirse con la suya.

Pros

  • La información de seguridad se puede guardar dentro del archivo en sí mismo , o de otro modo en la misma unidad, lo que significa una verificación más sencilla.

Cons

  • Todas las personas que firmen archivos deben ser muy cuidadosas para evitar que alguien robe su clave privada.
  • Todos los que firman archivos deben tener mucho cuidado de que sepan qué están firmando.
respondido por el Artelius 10.01.2016 - 21:02
fuente
2

Tome su archivo xml y su foto favorita de vacaciones. Concatene los archivos y calcule varios valores hash del archivo resultante.

La imagen de vacaciones asegura que es extremadamente difícil producir una colisión, incluso si el archivo de fotos de vacaciones es público. Además, si utiliza varios algoritmos hash, es poco probable que todos estos se rompan en un lapso de 10 años.

    
respondido por el Per Alexandersson 10.01.2016 - 22:08
fuente
2

Abordar la seguridad del formato de archivo del proveedor, ampliando lo que @Philipp dice en los comentarios.

He tenido un empuje en torno al formato de archivo de un proveedor (no es una especificación masiva pero lo suficientemente cerca para estos fines). Se hizo mucho más fácil al tener instalado el software, pero no soy un experto en estas cosas. Podría cambiar fácilmente los metadatos (en primer lugar, mi objetivo era extraer los metadatos) los datos reales habrían sido más difíciles pero de ninguna manera serían imposibles de modificar. Como los metadatos incluyen elementos como la identificación de la muestra y la fecha de la prueba, esa es una vulnerabilidad suficientemente grande para cosas como "cuya muestra estuvo limpia y cuándo? " como le parezca relevante, o "que descubrió por primera vez esta droga? " en otros campos.

Algunos software proporcionan algunas características de manipulación indebida (por ejemplo, uso interno de hashes, no necesariamente criptográfico); permisos de usuario al editar usando sus software ). La ingeniería inversa sería poco más que trivial para alguien con un poco de habilidad en la mayoría de los casos. Con el software instalado, incluso eludir las funciones integradas podría ser tan simple como escribir un front-end para llamar a las DLL del proveedor, ya que estas funciones anti-manipulación son normalmente complementos opcionales (en muchos campos no son necesarios ni están en desuso) ).

(Esto podría haber sido una secuencia de comentarios, pero como mi objetivo era aclarar el problema del archivo del proveedor, parecía mejor escribirlo correctamente).

    
respondido por el Chris H 11.01.2016 - 10:19
fuente
1

¿Qué hay de hacer que los técnicos publiquen pares de identificadores de archivos únicos y sus hashs en Twitter con sus propias cuentas?

Esto probará que:

  • El archivo de datos con dicho id y hash existía en el momento de la publicación
  • La persona que tiene acceso a la cuenta confía en el contenido del archivo en ese momento
  • El archivo no se modifica después de que Twitter no permite editar los tweets

Este método proporciona al menos una seguridad comparable a muchas de las respuestas y beneficios basados en firmas digitales, como:

  • Mucho más fácil de aprender y usar (no es necesario generar claves privadas, procedimientos de apertura o copia de seguridad)
  • Alta redundancia (a través de las copias de seguridad de Twitter y los sitios de raspado de Twitter de terceros)
  • Marca de tiempo incorporada (que probablemente se mantendrá en un procedimiento legal sin mucha explicación)

Recomiendo usar al menos SHA256 como hash algo.

    
respondido por el billc.cn 11.01.2016 - 11:30
fuente
1

Una de las formas más fáciles es crear un hash del archivo y almacenarlo en otro lugar para saber si se modifica. Los programas de detección de intrusos utilizan esta técnica todo el tiempo para verificar la integridad (o al menos indican si algún atacante ha estado jugando con los archivos del sistema).

Mire un programa como AIDE , puede ejecutar esto en el directorio que contiene los archivos (y posiblemente ejecutarlo a pedido) cuando se agrega un archivo) para actualizar su base de datos de hashes. Todas las noches, ejecútelo para verificar y enviarle un informe por correo electrónico que muestre todos los cambios en los archivos.

Si necesita saber el original, entonces un sistema de archivos versionado puede ser una buena idea. Cada cambio realizado en un archivo se registra y se pueden extraer versiones antiguas. Alternativamente, se podría usar un sistema de respaldo que detecte nuevos archivos y los respalde en una ubicación segura (y mantenga todas las versiones anteriores, o un atacante podría modificar el archivo varias veces hasta que se elimine el original).

    
respondido por el gbjbaanb 11.01.2016 - 16:14
fuente
-2
  

los formatos abiertos son muy útiles para proporcionar acceso a datos en escalas de tiempo de archivo, pero la seguridad es un problema

Gran pregunta: ¿cómo se accede a los archivos?

El problema con el hash de un archivo de texto sin formato es que el hash es de carácter preciso. Cambia un personaje y el hash será completamente diferente. Funciona muy bien para archivos binarios como programas ejecutables (donde un byte fuera de lugar suele ser desastroso) pero falla en cosas como archivos de marcado: normalizar (o compactar) el espacio en blanco cambiará el hash pero no tendrá efecto en los datos.

Si está entregando los archivos por correo electrónico o en un recurso compartido de red de lectura y escritura, tendrá que tener un almacenamiento seguro para el hash, o cualquier persona con medio cerebro puede editar el archivo y luego actualizar el hash. Si tiene almacenamiento seguro para el hash, ¿por qué no almacenar el archivo de datos en el mismo lugar y olvidarse del hash?

Esto va a sonar extraño al principio, pero mira subir el archivo y la descripción a una instalación local de algo como wordpress o mediawiki. El acceso puede ser tan abierto o seguro como desee, y las plataformas tienen controles de carga de archivos específicos del usuario. Una vez que el departamento de TI lo haya configurado correctamente, el acceso de escritura a los archivos se puede bloquear tan bien como sea necesario.

    
respondido por el user96474 10.01.2016 - 08:28
fuente

Lea otras preguntas en las etiquetas