比RSA更快的非对称密码

时间:2010-02-02 19:07:21

标签: java encryption-asymmetric

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

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

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

编辑用于估算关键安全性,具体取决于多种算法的长度,请参阅this site

答案 2 :(得分:0)

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

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