2

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

它可能没有多大用处,但是如何调用这种加密方案并且有工具吗?

编辑:

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

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

第1轮

创建一个零块
创建一个随机块 1
加密值:带密钥的零块:random-block1 => 给出 lock-output-1

第二轮

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

等等

与 random-block-1 的 xor 操作将在那里,因此解锁例程必须先找到 random-block-1,然后才能开始对 lock-output-2 进行暴力破解。

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

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

我想那里一定存在一个类似的算法。

4

6 回答 6

1

您可以正常加密它,并发布有关密钥的足够信息,以便暴力攻击将花费X CPU 小时。

于 2011-04-29T13:59:56.960 回答
1

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

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

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

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

  • 可验证的恢复:发送者能够说服接收者他确实提交了一个适当的值,接收者将能够通过对其应用大量但可行的 CPU 肌肉来恢复该值。

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

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

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

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

于 2011-04-29T16:00:23.297 回答
0

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

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

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

于 2011-04-29T14:02:08.363 回答
0

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

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

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

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

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

于 2011-04-29T14:31:11.960 回答
0

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

这就是我能说的。-

于 2011-04-29T14:52:34.947 回答