【问题标题】:Locking data for x days锁定数据 x 天
【发布时间】:2011-04-29 13:56:11
【问题描述】:

是否有一种(简单的)方法来加密数据,以便解密它需要一定数量的 cpu 小时?可能是一系列具有短密钥长度的加密、一个可变的单向函数或任何东西?

它可能用处不大,但是如何调用这个加密方案,有没有工具呢?

编辑:

为了在蛮力中断时间上没有变化的结果,我不应该使用带有异或反馈的多轮吗?

我刚刚想出了这个算法(对于具有相等值和密钥长度的对称分组密码)......也许这是无意义的

第1轮 创建一个零块 创建一个随机块 1 加密值:带密钥的零块:random-block1 => 给出 lock-output-1 第二轮 创建一个零块 创建一个随机块 2 加密值:带密钥的零块:随机块 2 => 给出温度 xor temp with random-block-1 => 给出 lock-output-2 等等

存在与 random-block-1 的异或操作,因此解锁例程必须先找到 random-block-1,然后才能开始暴力破解 lock-output-2。

lock-output-1 + lock-output-2 .. lock-output-N 将是完整的锁定输出。当解锁例程在所有锁输出块上找到 N 个每个都为零的密钥块时,它可以将这 N 个密钥块作为一个整体来解密实际数据。

然后我还需要一个公式来计算多少轮可以给出最大变化,例如所需的 CPU 小时数为 10%。

我想肯定存在类似的算法。

【问题讨论】:

  • 既然有云计算,我应该说锁定数据,所以要暴力破解它需要一定的金钱。

标签: algorithm encryption brute-force


【解决方案1】:

这个概念被称为timed commitment,由 Boneh 和 Naor 定义。您要加密的数据据说是由一方(我称之为发送方提交,这样另一方(接收方 ) 可能会以可调整的成本恢复数据。

Boneh 和 Naor 描述的方法比您建议的要先进得多。他们的定时承诺方案具有以下三个特性:

  • 可验证的恢复:发送者能够说服接收者他确实确实提交了接收者能够的正确值em> 通过应用大量但可行的 CPU 肌肉来恢复。

  • 有证据的恢复:一旦恢复完成,它就可以有效地验证:第三方希望验证恢复的值确实是提交的值,可以这样做高效(无需花费数小时的 CPU 时间)。

  • 对并行攻击的免疫力:恢复过程无法从访问一千台 PC 中受益:一个 CPU 无法比使用单个 CPU 完成的速度快得多。

有了这些属性,在某些情况下,定时承诺会成为一种有价值的工具; Boneh 和 Naor 主要讨论合同签订,以及诚实守信拍卖和其他一些应用。

除了 Boneh 和 Naor 的数学描述之外,我不知道有任何实际实现,甚至没有为定时承诺定义的协议。

【讨论】:

    【解决方案2】:

    您可以正常加密它,并释放足够的密钥信息,这样暴力攻击将花费 X 个 CPU 小时。

    【讨论】:

      【解决方案3】:

      不,你不能可靠地做到这一点,因为

      • 攻击者可以租用一台功能强大的计算机(例如计算云)并将其用于高度并行的更快攻击
      • 到目前为止,计算机随着时间的推移变得越来越快 - 昨天需要一天的时间可能在两年内需要一分钟

      【讨论】:

      • 我认为他知道这一点,这就是他说 CPU 小时数的原因。
      • @SLacks:嗯,也许吧,但你永远不知道一个 CPU 在一个 CPU 小时内有多强大。
      【解决方案4】:

      好吧,要知道任何类型的解密所需的 CPU 小时数,加密是如何进行的并不重要。相反,您必须确保

      • 解密器将使用什么解密算法(也许是迄今为止尚未发明的算法?)
      • 他将使用该算法的哪个实现
      • 他将使用哪个 CPU/硬件。

      这 3 个参数中的每一个都可以使速度产生至少 1000 倍或更多的差异。

      【讨论】:

        【解决方案5】:

        当有人找到一种比暴力攻击更快的方法(平均而言)获取密码时,加密算法被认为已破解。

        像 MD5 这样的算法就是这种情况,因此请确保选择一种尚未破解的算法(还)

        对于其他算法,即使它们没有被破解,它们仍然容易受到暴力攻击......这可能需要一段时间,但所有加密的东西都可能被解密......这只是时间和资源的问题。

        如果一个人在世界各地有一个巨大的僵尸计算机农场为他工作,可能需要几个小时才能破解一个只有一台笔记本电脑的人需要数年时间的东西。

        如果您想要最大程度的安全性,您可以将几个现有的加密算法与您自己的自定义算法混合使用。仍然有人可以尝试破解您的数据,但很可能,除非您处理的是国家最高机密数据,否则它可能永远不会附加。

        【讨论】:

          【解决方案6】:

          这是相对的,计算机将根据其计算能力快速解密,而选择的加密算法取决于您要保护的数据,因此对于普通计算机而言,良好的加密算法普通计算机需要时间解密因为好东西总是要付出代价的,但是我推荐你椭圆曲线密码学,因为它具有加密能力并且解密时间非常好,你可以看看它。

          这就是我能说的。-

          【讨论】:

            猜你喜欢
            • 2016-01-22
            • 2012-07-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-07-15
            • 1970-01-01
            相关资源
            最近更新 更多