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

谁能指出我的方向,那就是速度更快但密码强度相似的系统?它需要通过Java JCA提供程序(例如bouncycastle之类)来实现,以便整齐地插入到我现有的应用程序中。我知道有弹性的城堡支持El Gamal,但我找不到有关此算法有多强大的详细信息,或者它是否有可能比RSA更快。我还听说过椭圆曲线系统只需要相对较短的键(384位或类似的键),却不知道在哪里可以找到其中一种的实现。

最佳答案

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

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

编辑:对于密钥安全性(取决于长度)的估计,对于几种算法,请参见this site

关于java - 比RSA更快的非对称密码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2186836/

10-14 07:30