客户站点的可验证日志文件

时间:2017-03-01 16:17:39

标签: digital-signature public-key-encryption sign

我们想在客户站点

创建一个日志文件
  • 客户可以阅读日志(纯文本)
  • 我们可以在我们的网站上验证日志文件未被操作

几百个字节的不可读数据是可以的。但有些客户不会向我们发送无法验证其中包含合理数据的文件。

我到目前为止看到的唯一合理选择是附加加密校验和(例如SHA256(SECRET_VALUE + "logtext"))。 SECRET_VALUE将是硬编码的,简单的“security through obscurity”。有没有更好的方法?

我们使用DotNet库,如果重要的话,我不想手工实施任何加密算法。

2 个答案:

答案 0 :(得分:1)

您可以使用带有密钥的标准HMAC算法来执行校验和。

使用密钥可以简单地防止可以直接重新生成校验和。可以从代码中提取硬编码密钥,但对于您的用例,我认为足够

结果是二进制哈希。要将其插入到文本文件中,请将值编码为十六进制或base64,并确保您能够恢复服务器端的进程,以便可以使用原始文件再次计算哈希值。

您还可以使用分离的哈希文件来避免修改日志文件

答案 1 :(得分:0)

目标

  • 客户可读日志文件
  • 由我方验证
  • 最少的二进制数据
  • 必须离线工作

选项

  • Public-Private-key-things ...(RSA,...)
    • 会安全
    • 但只有二进制数据
  • 添加签名

受信任的时间戳

  • 再次:我们不是第一个(https://en.wikipedia.org/wiki/Trusted_timestamping
  • 需要连接到#34;受信任的第三方" (表示:网络服务)
  • 构建哈希+ TimeStamp - >发送给第三方 - >签署数据(公钥 - 私钥) - >发回来

目前为止的最佳选择

  • 使用HMAC添加签名
  • 将密钥存储在本机代码中(不易于提取)
  • 运行代码混淆并在C#
  • 中构建一些额外的循环
  • 每隔一段时间(5分钟?)将签名放入日志 AND 进入Windows应用程序日志
  • 应用程序日志至少基本上不受修改(只读) 并且我们的错误报告
  • 收集了它
  • 易于被客户监督(邪恶的笑容)