gpt4 book ai didi

c# - 生成某些数据的防篡改签名?

转载 作者:太空狗 更新时间:2023-10-29 21:03:43 25 4
gpt4 key购买 nike

我有一个数据。目前,它是一个 XML 文件,但架构可能会改变。因此,我们暂时假设它是一个 C# 类。

当我将数据存储在磁盘或数据库中时,我需要添加某种签名或指纹或校验和或其他任何东西以确保没有人可以修改数据。警告:即使是有权访问所有源代码的管理员或开发人员也不应该修改它。

我假设由于具有完全代码访问权限的人可以轻松创建新签名(签名需要以编程方式完成,因此无需手动输入密码),签名不知何故需要包含一些额外的数据。理想情况下,我应该能够从签名中提取这些数据,例如签名日期和一些字符串。

我的一般方法是使用对称加密。我从所有字段生成一个哈希值,即 SHA-512,然后使用该哈希值作为密码加密该哈希值和我的其他数据以获取我的签名。要解密,我的函数将从文件中的实际数据生成哈希,并尝试解密签名。这不是防篡改的,因为很容易生成签名日期和附加信息仍然完好无损的签名。

由于我不是该领域的专家,我相信我正在尝试重新发明轮子,而且它不是一个很好的轮子。我只是想知道是否有一些标准方法?我认为我的部分请求是不可能的(毕竟,如果有人控制了整个环境,那么这个人也控制了系统时间),但我仍然想知道一般如何解决这个问题?

最佳答案

在我看来你想要 digital signature 的组合用secure digital timestamp .

简而言之,在签署数据后,您调用第三方网络服务提供官方时间戳和他们自己的数字签名,将时间戳链接到您的签名值,从而提供原始签名(以及原始数据)的证据是在该日期或之前创建的。使用此方案,即使原始签名 key 后来被泄露、撤销或以其他方式失效,由于时间戳的存在,在失效之前所做的任何签名仍然有效。

防篡改硬件签名设备可能会有所帮助。如果目标硬件是相当新的,它可能已经在主板上以 TPM 的形式提供了一些支持。 ,但有很多供应商愿意为自己的产品收取费用 hardware security modules , 或者对于 smart card 稍微少一点.

仅靠技术可能无法实现足够的安全性。您可能需要对系统进行独立验证。您可能需要远程闭路电视监控和机器位置记录或其他物理安全措施来检测或阻止篡改。您可能需要第三方代码托管、审查和签名,以确保机器上加载的代码符合预期,并阻止和/或检测将后门逻辑插入到代码中。

最重要的是,您需要为此花费多少金钱、时间和精力,这在很大程度上取决于如果伪造记录您将损失什么。

关于c# - 生成某些数据的防篡改签名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/609127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com