我想创建一个数字时间胶囊,它将在一段时间内保持不可读状态,然后变得可读。我不想依靠任何外部服务,例如,将密钥保密,然后在需要的时间将其公开。这可能吗?如果不是,是否有某种可能的证明?
一种策略将基于对未来计算能力的预测,但这是不可靠的,并且会假设将多少资源应用于任务。
我想创建一个数字时间胶囊,它将在一段时间内保持不可读状态,然后变得可读。我不想依靠任何外部服务,例如,将密钥保密,然后在需要的时间将其公开。这可能吗?如果不是,是否有某种可能的证明?
一种策略将基于对未来计算能力的预测,但这是不可靠的,并且会假设将多少资源应用于任务。
Answers:
这个问题被称为定时释放加密。有关一些参考/介绍,请参见:
我们的动机是“定时释放加密”的概念,其目标是对消息进行加密,以便在经过预定时间之前,任何人甚至发件人都无法解密消息。目标是“向未来发送信息” ...
我提出了部分答案,但并非严格地说是针对所述问题的答案。我怀疑这可能会尽可能接近,但我不确定。
首先,我们使用解密所需的密钥对胶囊进行编码。
我不知道如何绕过某种拥有密钥的权限,但是可以分配该功能。如果我们将密钥分解为n个片段,那么我们可以要求n个权威机构持有该片段。然后可以在适当的时候全部发布其作品,以实现密钥的重建。
此解决方案容易受到n个授权机构中的任何一个不可用的影响,但是使用n个编码中的m-out-of-n,我们可以将文件分发给n个授权机构,而只要求m即可发布它们。
即使在这种情况下,一定数量的具有正确时钟的授权机构也必须提供正确的密钥管理服务。是否可以削弱上述假设,而不是上面建议的n分之一?
我认为这是一种可行的方法:
使用首选的加密方案并使用随机生成的密码短语生成一组密钥。诀窍在于密码短语。密钥是已知的,但是我们将使用密码短语创建时间胶囊。
选择一个密码短语,这样,如果我们从中创建一个加盐的哈希,使用当今的计算能力,在已知盐和哈希值的情况下,计算密码短语将花费大约“ n”年的时间。如果我们要创建一个20年的胶囊,请从现在起20年后估算我们的计算能力,并创建一个哈希,该哈希将由用户或超级计算机在20年内计算一个月,具体取决于胶囊的目标。如图所示,对于一个20年的时间胶囊,megacorp将在15年内将其解密,或者将在20年内由用户解密。
使用具有随机密码短语的密钥加密数据,存储密钥和散列的密码短语,而不存储实际的密码短语。现在保存数据,并且在将来的某个时候,您将有望拥有恢复数据的计算能力!
我不是密码学家,而只是一名工程师,所以我的解决方案比物理方案更具计算性,但无论如何,让我尝试一下。我提出以下程序:
于是出现了一个显而易见的问题:当您仅将纯文本消息存储在芯片中时,为什么还要担心加密?对此的答案是,这样,明文可以任意长,而不会影响芯片的存储容量,因为仅固定长度的密钥存储在此处。另外,您可以保留公共密钥的副本,稍后再使用它生成更多消息,然后将其同时解锁。就是这样。
为了使其更加安全,您可以将光传感器安装到芯片上,然后将组件封装在防光的外壳中(或将开关安装在门上,或使用其他防篡改机制),然后将传感器暴露在光线下将触发密钥擦除。这是为了防止使用诸如蚀刻的侵入性方法来获取密钥。某些芯片的硅层结构也使得通过在内存上方放置其他必不可少的电路来掩盖单个位,几乎不可能进行侵入式读取。