延迟时间密码的最佳方法



以下是我需要程序执行的操作:

a。该程序生成一些随机密码并用它加密文件。b.我需要能够取回那个密码,但要到一天后才能取回。

看似琐碎,但有两个要求:

  1. 该程序必须能够抵抗windows时钟篡改(不能简单地将时钟提前一天,然后以这种方式获取密码)
  2. 程序必须能够抵抗调试篡改(有权访问源代码的人不应该能够检索密码)

我知道我可以从时间服务器获得时间,这将绕过需求#1,但这仍然留下了需求#2。有了可用的源代码,任何人都可以修改从时间服务器接收的数据,并欺骗应用程序以为1天已经过去了。

我想做的事情(考虑到要求)可能吗?

编辑:假设加密阶段是防篡改的。

为了回答其中一个问题,应用程序的全部目的是让用户能够在特定的时间段内对自己隐藏信息(考虑定时安全,即在特定时间过去之前无法打开信息)。

我认为这是不可能的。它们的关键在于它取决于你无法控制的时间。理论上,即使试图从时间服务器获取它,也容易受到中间人攻击风格的影响,因为我认为时间检查不太可能有任何加密(尽管我可能错了)。因此,如果不能依靠任何时间测量,我认为你追求的是不可能的。

如果文件生成和加密例程是防篡改的,那么可以使用可靠的服务器解决其余问题。您可以在没有服务器帮助的情况下阻止客户端解密文件,但强制客户端实际加密文件并丢弃临时密钥是很困难的。

例如,您可以使用服务器公钥加密密钥和时间戳,并将其与加密文件一起存储。然后,客户端在没有咨询服务器的情况下无法解密文件,服务器只会在时间戳过去后向其提供密钥。

最大的问题是,如果文件生成和加密例程在不受信任的系统上运行,则无法使其防篡改。所以你需要重新考虑你的基本设计。可能会牺牲一些需求。

最新更新