1

我一直在研究一个在大量文件中使用非对称加密的系统。我目前正在使用带有 4096 位密钥的 RSA 来为每个文件加密一个 256 位随机生成的 AES 密钥,但性能有些欠缺,因为一项必需的操作是扫描所有文件(系统在使用大约 10,000)并确定哪些可以使用特定的私钥解密。虽然我不希望这个操作是即时的,但目前花费的时间太长(每秒处理约 2 个文件)。我考虑减少密钥长度,但即使将其降低到 2048 位也无法提供我需要的性能水平。512 位几乎可以削减它,但是现在可以轻松破解这样的密钥,这是不可能的。

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

4

3 回答 3

4

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

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

编辑:对于密钥安全性的估计,取决于长度,对于几种算法,请参阅此站点

于 2010-02-02T19:27:36.463 回答
2

为什么不计算每个密钥的加密强哈希,然后将其与每个文件名一起明文存储?然后,给定一个您需要与所有文件匹配的键,您可以简单地散列该键并在表中查找它。

于 2010-02-02T19:11:18.740 回答
0

我会选择一种需要较少 RSA 操作的方法。SSL/TLS,虽然他们使用 RSA 等来加密 AES 等密钥,但不要仅仅因为它是一个计算上昂贵的操作,并且密钥大小足够大,以便在每个数据包上完成安全性,或者在你的情况下,每个文件的基础。

另一个公钥系统是:http ://en.wikipedia.org/wiki/ElGamal_encryption 。安全方面我相信它还没有被打破,但我个人现在相信 RSA。我不知道目前是否有任何椭圆曲线加密算法可用——也就是说我知道它们正在研究中,但知道它们可能还没有准备好用于生产,而且我听说存在专利问题。

于 2010-02-02T19:16:57.860 回答