我需要一个非常,非常快速的一对一的算法。算法并不需要牢不可破的。相当强劲是足够的,但它必须以闪电般的速度快。我将会实现它的硬件。区域是一个问题,因此它不应该使用太多的逻辑。

它应该是一个功能f_N(x)其输入一个N位的数量及其输出是一个N位的数量。N是恒定的,可能是之间的20-70.本功能,必须一对一的一个。(即可逆的,意味着解密是可能的。解密的速度是不相关的。)

我需要密在下3ns,这是关于333米投入。DES,例如,关于50Mbits每秒。我需要333米 输入 每秒。

到目前为止,我已经使用Feistel密码约6轮。这似乎需要大约3ns.

建议?

更多的笔记

已经有一些问题,所以我会解释的。我需要把钥匙进一散列表。标准方法是哈希输入密钥和使用的结果作为索引表。表中的每一行必须储存原来的关键。 信息理论 告诉我们,该行表实际上并不需要广泛的输入关键,而是尽可能广泛,因为输入键 位的数量在所述地址表。例如:

  • 输入:x(N位)
  • 哈希:x%128(8bits)
  • 验证程序:楼(x/128)(N-8bits)

这将是愚蠢的CPU在整数通常是相同的宽度,但我这样做是在硬件。

x%128是一个简单的散列打破。事实上,如果输入键的区别仅在最初的几位,你将有破碎的散列在事故。我想要一个值不断上事故和甚至可能难以打破目的。我也尝试了一个 .了快速但有两个了等长产生的散列结果相关的线性。(如果f(x)和g(x)得到相同的散列为两种不同的多项式、f(x+1)和g(x+1)很容易相关。)

因此,我需要一个功能N位的输入和五位,H位输出(V+H=N)在那里是很难找到两个投入的长N这样,双方将输出的相同H加符合该法案在它离开的输出同样长度的输入,这是难以逆转。比其他的东西加密可能会工作,也尽管它看起来像什么我想要的是几乎所定义的加密。

抱歉没有解释这一切的最前面。希望这一澄清的事情。

有帮助吗?

解决方案

当你说"快速"你只关心吞吐量,或是延迟本身的最高重要性?

如果延迟是不是很重要的,因为吞吐量,没有任何理由为什么你不能用一个标准的 Feistel密码 这被称为是安全的,而是具有充分的次数(例如16在河豚)输出组合逻辑,坚持一个登记册之间每一轮,所以你管线的加密算法?它将基本上需要同样数量的硬件(更多一点增加一些触发器的寄存器)作为一个已知安全的加密算法,但是传播延迟将只会是一个圆形的Feistel网络+传播延时的触发器。

其他提示

我想知道如果你都不关心关于加密强度,那么也许你不需要加密。的 大多数 重要的一部分加密算法是它的力量。如果加密软弱,那么你不做任何良好通过加密在第一位。

这里有一些基准的一些算法: http://gd.tuwien.ac.at/privacy/crypto/libs/cryptlib/benchmarks.html

注意,这些基准测试 实现 算法,所以它可能不是你所寻找的。

我会建议我的老朋友, 小小的加密算法

它既是快和非常低的足迹,你可能还必须考虑在实施中的硬件。

以下不会满足您的要求的一个一对一的功能,但或许它可能是有用的,如果速度是至关重要的。(如果它不会的工作,那么我建议一个分而治之路线:你是工作在硬件,所以理论上你应该能够进行加密和解密并行,除非一个输入的加密依赖于以前的投入'加密。)

只是最快的 硬件 算法为什么我会打电话给"处理",就是要享受你的投入的概念作为一个流,并异或他们与流输出的一个加密的安全和可重点发生器--可重,如果你的愿望来解密。一个例子是简单和快速,而是通过本身不安全,是一个 线性反馈移登记册 (J=).选择一个长期(2128 -1或2256 -1或类似的东西).维基百科页建议的修改,以加强安全。你也可以试着偶尔(例如一旦每M位在哪里M=4096,16384,65536,无论)异或国家的扰与输出的一个较慢但更安全的流(无论是流密码,或分组密码加密的规定设置的投入,例如一个递增的序列或一个延迟的快照扰国家)--虽然这个落入不创造你自己的密码技术,想法是,众所周知的密码技术有大量的能源投资在测试它们是否具有脆弱性。

什么是错的使用64位"关键"的价值和xor-ing每个字?你可以通过循环的关键需要多少倍以异或任何明文比特之后的第64.

64位的关键可能是一个8字符的密码或一个8字节的散列的一个密码。

由于关键的几乎具有许多位的消息,实际上将相当强大和极快。

如果你这样做是在硬件为什么你不只使用一个标准组密码在DSP?

如何以及是高端Dsp适用于AES算法?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top