我一直在开发一个在大量文件中使用非对称加密的系统。我目前正在使用具有 4096 位密钥的 RSA 来加密每个文件的 256 位随机生成的 AES 密钥,但性能有些欠缺,因为一项所需的操作是扫描所有文件(系统处于运行状态时的估计数量)使用量约为 10,000)并确定哪些可以使用特定的私钥进行解密。虽然我不希望此操作是即时的,但目前花费的时间太长(每秒处理约 2 个文件)。我考虑过减少密钥长度,但即使将其减少到 2048 位也无法提供我所需的性能水平。512 位就可以了,但这样的密钥现在可以轻松破解,这是不可能的。

有人能给我指出一个更快但具有相似加密强度的系统吗?它需要通过 Java JCA 提供程序(例如类似 bouncycastle 的东西),以便巧妙地插入我现有的应用程序。我知道充气城堡支持 El Gamal,但我找不到任何有关该算法有多强大的详细信息,或者它是否可能比 RSA 更快。我还听说椭圆曲线系统只需要相对较短的密钥(384 位等),但不知道在哪里可以找到其中之一的实现。

有帮助吗?

解决方案

对于您提出的问题,请尝试椭圆曲线上的 Diffie-Hellman,也称为“ECDH”。一旦我们处理当前技术无法破解的规模,估计安全性就有点困难,因为这取决于我们如何押注未来的技术发展。然而,可以说 P-256 曲线上的 ECDH 提供了“128 位”的安全性,该级别类似于从 2048 位 RSA 获得的安全级别。该级别对于所有当前用途来说足够了,或者更恰当地说,如果 P-256 不足以满足您的需要,那么您的问题有非常特殊的需求,并且加密强度可能是您最不需要担心的。

在我的 PC(2.4 Ghz Intel Core2,64 位模式,运行 Linux)上,OpenSSL 声称使用单个内核每秒处理大约 900 个 ECDH 实例。

编辑: 对于密钥安全性的估计,取决于长度,对于几种算法,请参见 这个网站.

其他提示

你为什么不计算每个键的强加密散列,然后存储在清澈的每个文件名?然后,给定一个键,你需要来匹配所有的文件,你可以简单地散列键和表中查找。

我会去,需要较少的RSA运算的方法。 SSL / TLS,尽管他们使用RSA等加密AES等按键,请不要使用AES进行简单的数据,因为它是在足够大的密钥尺寸计算上昂贵的操作,对每个数据包,或在您的情况做安全,每个文件为基础。

另一公共密钥的系统是: http://en.wikipedia.org/wiki/ElGamal_encryption。安全明智的,我相信它尚未被打破,但会亲自把我在RSA信任现在。我不知道是否有现有的任何椭圆曲线加密算法 - 这是说我知道他们正在研究中,但了解他们可能没有准备好供生产使用,我听到有专利问题

scroll top