如何知道文本文件是否已被编辑或篡改?

信息安全 xml 篡改 防篡改
2021-08-18 19:35:57

是否有可能知道文本文件(例如 XML 格式)是否随着时间的推移被编辑或篡改?

我的问题的上下文如下:

我是一名工业科学家,使用一种称为“质谱法 (MS)”的技术。MS 是一种分析技术,例如在法医分析中用于确定样品中是否存在特定化合物(例如血液或尿液中的滥用药物)。

质量规格 数据文件通常以平面文件格式存储到仪器供应商的私有二进制规范中——他们的软件可以处理它,但没有其他东西可以处理。但是,存在 MS 数据的开放标准,并且大多数供应商支持导出到至少一种开放规范。这些开放标准现在主要是基于 XML 的(例如mzML),并允许使用开源应用程序进行处理,并且还允许以不需要我们维护存档计算机的格式长期存储(> 10 年)数据和操作系统(或虚拟机)和处理软件长期。

供应商二进制格式至少提供了一些防止数据篡改的安全性,但是 XML 格式没有。因此存在问题——开放格式对于提供对归档时间范围内的数据的访问非常有用,但安全性是一个问题。

4个回答

默认解决方案是使用加密签名。让每个技术人员生成 PGP 密钥对,发布公钥并确保私钥安全。

当技术人员进行分析时,他们会使用他们的私钥对结果文件进行签名。现在任何想要验证文件的人都可以使用技术人员的公钥检查签名。当任何人更改文件时,签名将不再正确。

安全考虑:如果技术人员的任何私钥被其他人知道,该人可以更改文件并将签名更改为有效的签名。这个问题可以通过让多人签署每个结果文件来缓解。攻击者需要所有密钥来用有效的签名替换所有签名。

替代的低技术解决方案:打印出每个结果文件,让技术人员以老式方式(用笔)签名,并将文件存放在物理安全的存档中。

顺便说一句:不要假设特定于供应商的二进制格式提供的防篡改安全性比 XML 更高。仅仅因为当您使用文本编辑器打开它时无法阅读和编辑它并不意味着没有其他人可以对格式进行逆向工程并为其构建编辑器。

任何形式的数字签名都可以。这里有几个指针:

  • 对于 XML 数据,有一个数字签名标准 ( XMLSign )。不幸的是,这个标准相当差,并且有一个重要的安全漏洞(文档需要在签名之前通过 XML 转换进行规范化。由于转换本身成为签名的重要部分,因此很难安全地做到这一点)。

  • 您还可以使用PGPS/MIME对文档进行数字签名,这些将生成新的、基于文本的、大部分可读但仍防篡改的文档。

  • 最后,您可以使用分离的签名。基本上,它是另一个文件,其中包含链接到另一个文档的数字签名,可用于验证原始数据(无论原始格式如何)。

让我在这里添加一些额外的信息:

  • 为签名选择正确的属性(算法、密钥类型和大小等)在很大程度上取决于您设置的条件:您打算让数据安全多长时间,您打算保护它们免受哪种类型的攻击者(伪造的价值是什么?破坏所有使用相同密钥签名的文件的攻击的价值是多少?),是否有任何监管要求?这意味着您应该咨询可以将这些业务需求转化为技术需求的专家。
  • 我强烈建议您在签名中添加安全时间戳。这不仅可以让您证明文件没有被篡改,还可以让您证明签名发生的时间。

我将概述三个主要选项和每个选项的优缺点。

将文件的备份存储在安全位置

很不言自明。“安全位置”可以是只读介质(如 CD),也可以是每个人都可以读取但只有主管可以写入的网络驱动器,或者是使伪造文件相当困难的在线存储服务(例如 Dropbox)修改日期。

优点

  • 无论如何你应该有一个备份系统

缺点

  • 如果文件很大,下载它们进行验证可能会很耗时
  • 如果伪造者闯入安全位置,他可以掩盖他的踪迹

 

将哈希值存储在安全位置

哈希是文件的指纹,看起来像8f2e3f53aa90b27bda31dea3c6fc72f6如果两个文件只是略有不同,它们将具有不同的哈希值。获取原始文件的哈希并将其安全存储,然后验证文件未被修改,获取它的哈希并将其与存储的哈希进行比较。

优点

  • 您需要安全地存储/检查 ~32 位代码而不是整个文件

缺点

  • 您仍然需要访问外部资源来检查文件
  • 如果伪造者闯入安全位置,他可以掩盖他的踪迹

 

加密签名

在这种情况下,一个或多个人可以“签名”文件,如果进行任何更改,这些签名将失效。当然,如果需要签署文件的每个人都愿意(或被诱骗)签署被篡改的文件,那么您可以逃脱篡改的文件。

优点

  • 安全信息可以保存在文件本身中也可以保存在同一驱动器上,这意味着更容易验证。

缺点

  • 每个签署文件的人都需要非常小心,以防止有人窃取他们的私钥。
  • 每个签署文件的人都需要非常小心,因为他们知道自己在签署什么。

获取您的 xml 文件和您最喜欢的假日照片。连接文件并计算结果文件的几个哈希值。

假日照片确保即使假日照片文件是公开的,也极难产生碰撞。此外,如果您使用多种哈希算法,那么所有这些算法都不太可能在 10 年内被破解。