我有一个想法,但我不知道在Google中使用什么神奇的词 - 我希望在这里描述这个想法,也许有人会知道我在寻找什么.
想象一下,你有一个数据库.很多数据.它是加密的.我正在寻找的是一种加密解密,变量N必须在给定时间保持值M(从第三方获得,如硬件令牌)或者无法解密.
所以想象一下AES - 嗯,AES只是一把钥匙.如果你有密钥,那么你就可以了.现在想象一下AES修改的方式,算法本身需要一个额外的事实,超出密钥 - 来自外部源的额外数据,以及该数据随时间变化的地方.
这存在吗?它有名字吗?
Ilm*_*nen 10
在受信任的第三方的帮助下,这很容易做到.是的,我知道,你可能想要一个不需要的解决方案,但要忍受我 - 我们会达到这个目标,或者至少接近它.
无论如何,如果你有一个合适的可信第三方,这很容易:用AES加密你的文件后,你只需将你的AES密钥发送给第三方,让他们用自己的密钥加密,然后将结果发回给你,并在将来的某个特定时间发布他们的密钥.此时(但不久),拥有加密AES密钥的任何人现在都可以对其进行解密并使用它来解密文件.
当然,第三方可能需要大量的密钥加密密钥,每个密钥都要在不同的时间发布.不是将它们全部存储在磁盘或其他东西上,而是更容易的方法是从秘密主密钥和指定的释放时间生成每个密钥加密密钥,例如通过对它们应用合适的密钥导出函数.这样,可以为任何期望的发布日期或时间生成独特且(显然)独立的密钥.
在某些情况下,此解决方案实际上可能是实用的.例如,"可信第三方"可能是防篡改硬件安全模块,具有内置实时时钟和安全外部接口,允许在任何发布日期对密钥进行加密,但仅针对日期进行解密已通过.
但是,如果可信第三方是提供全局服务的远程实体,则将每个AES密钥发送给它们进行加密可能是不切实际的,更不用说潜在的安全风险.在这种情况下,公钥加密可以提供解决方案:而不是使用对称加密来加密文件加密密钥(这将要求他们知道文件加密密钥或释放密钥加密密钥),受信任的第三方相反,它可以为每个发布日期生成一个公钥/私钥对,并立即发布密钥对的公共一半,但拒绝在指定的发布日期之前公开私有一半.持有公钥的任何其他人都可以使用它加密自己的密钥,但是在公开相应的私钥之前,没有人可以解密它们.
(另一个部分解决方案是使用秘密共享将AES密钥拆分为共享并仅向第三方发送一个共享进行加密.与上述公钥解决方案一样,这将避免向第三方公开AES密钥派对,但与公钥解决方案不同,它仍然需要加密器和可信第三方之间的双向通信.)
上述两种解决方案的明显问题是您(以及其他所有参与者)确实需要信任生成密钥的第三方:如果第三方不诚实或受到攻击者的攻击,他们可以轻松地披露私钥.时间.
然而,迈克尔·拉宾(Michael Rabin)和克里斯托弗·索普(Christopher Thorpe)在2006年发表了一个聪明的方法(其中一位作者在关于crypto.SE的回答中提到)至少可以部分解决这个问题.诀窍是将密钥生成分布在几个或多或少值得信赖的第三方的网络中,即使有限数量的方不诚实或受到损害,他们都不能学习私钥直到足够多数当事方同意现在确实是释放它们的时候了.
Rabin和Thorpe协议还可以防止被攻陷方进行各种其他可能的攻击,例如企图阻止在指定时间泄露私钥或导致生成的私钥或公钥不匹配.我没有声称完全理解他们的协议,但是,鉴于它是基于现有和良好研究加密技术的组合,我认为没有理由不应该满足其规定的安全规范.
当然,这里的主要困难在于,对于那些实际上有用的安全规范,你需要一个足够大的密钥生成器的分布式网络,以至于没有一个攻击者可以合理地破坏其中的大多数.建立和维护这样一个网络并非易事.
是的,您正在寻找的那种加密确实存在。它被称为定时释放加密,或缩写为TRE。这是一篇关于它的论文:http://cs.brown.edu/~foteini/papers/MathTRE.pdf
以下是上述论文摘要的摘录:
现在有各种电子商务应用程序,例如密封投标拍卖和电子投票,需要对加密数据进行延时解密。文献提供了至少三类提供此类定时发布加密 (TRE) 的协议。它们要么依赖于强制消息接收者在能够解密之前解决一些耗时的、不可并行的问题,要么依赖于使用负责提供解密所需信息的可信实体。
我个人喜欢另一个名字,那就是“时间胶囊密码学”,可能是在crypto.stackoverflow.com 上创造的:时间胶囊密码学?。
| 归档时间: |
|
| 查看次数: |
11014 次 |
| 最近记录: |