延迟时间密码的最佳方法?

时间:2012-09-07 13:35:39

标签: c# passwords

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

一个。该程序生成一些随机密码并使用它加密文件。 湾我需要能够检索该密码,但直到一天后才能检索。

似乎微不足道,但有两个要求:

  1. 该程序必须能够抵抗Windows时钟篡改(一个人不能简单地提前一天移动时钟,并以此方式获取密码)
  2. 程序必须能够抵抗调试篡改(有权访问源代码的人,不应该检索密码)
  3. 我知道我可以从时间服务器获得时间,这可以绕过要求#1,但仍然留下要求#2。有了源代码,任何人都可以修改从时间服务器收到的数据,并且愚弄应用程序,认为已经过了1天。

    我正在尝试做什么(考虑到要求)甚至可能?

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

    回答其中一个问题 - 应用程序的全部要点是让用户能够在特定时间段内隐藏自己的信息(想想在特定时间过去之前无法打开它的定时安全)。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

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

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