在远程客户端上验证 XML 个签名

Verifying XML Signatures on Remote Clients

假设我有一个场景,其中我有几百台远程 PC。这些 PC 从不 连接到互联网。至少每月一次,某人 的任务是使用我控制的实用程序将更新的数据加载到 USB 驱动器上,将其带到远程 PC 上并插入。PC 有软件它知道如何从 USB 驱动器导入和安装数据。我也可以更新和控制这个软件。我想开始验证加载到这些 PC 的数据的完整性和来源,以确保没有人篡改加载到 USB 驱动器的数据。我的想法是对 USB 驱动器上包含的所有文件进行哈希处理,将这些与每个文件对应的哈希值存储在 XML 文档中,并对 XML 文档进行数字签名。数据未加密;我不在乎别人是否看到数据,我只是不想让任何人篡改它。

我 运行 遇到的问题是如何验证 XML 文档的签名者。典型的 PKI 实践会让我使用远程 PC 信任的证书颁发机构 (CA) 签署我的 public 密钥,以验证我的身份。

但是,由于这些远程 PC 从不连接到 Internet,因此我无法保证远程 PC 具有来自给定 CA 的 public 密钥的最新版本,甚至不知道它们。有没有一种安全的方法可以让我分发证书密钥或我可以用来完成此操作的其他身份验证方法?

Diagram for Clarification

您不需要互联网连接即可使用 public 密钥加密,这 就是 我将如何解决这个问题。

我认为您不需要 "CA." 您只需要有一个已知的 public 密钥,例如 嵌入到您的应用程序中,即可用于解密 XML 内容并验证其加密签名。这将同时处理知道 XML 来自可信来源 (you ...), 并且它没有被更改的问题。

XML文件可以加密形式存储在目标系统上,每次使用时解密。如果 XML 内容的隐藏不重要,可以对其进行加密 签名。