加密解密时间

信息安全 密码学 加密
2021-08-31 02:38:18

rsa算法的加密/解密时间是否会随着密钥长度的变化而显着变化?例如,512 位和 2048 位之间的加密/解密时间是否存在明显差异?

2个回答

在通常的实现中,将 RSA 密钥长度加倍意味着加密速度会慢四倍,而解密速度会慢八倍。RSA 加密比 RSA 解密快得多(在 RSA 签名的上下文中,验证类似于加密,生成类似于解密)。该理论认为,对于n位密钥,加密的计算量与n 2成正比,而解密的量与n 3成正比。在实践中,RSA 不仅仅是模幂运算,而且开销不会以相同的二次/三次方式扩展,因此,对于特定的实现,您不会得到准确的 8 倍系数。

另外,请注意,快速加密(及其二次行为)依赖于使用短的公共指数。这是RSA常用的方式;可能有一个具有长公共指数的 RSA 公钥,这将使加密和解密一样慢。长的公共指数似乎不会提高安全性,所以短的公共指数是规则。一些广泛使用的 RSA 实现无论如何都不支持长公共指数。

OpenSSL带有一个命令行工具,可以执行一些基准测试。尝试运行这个:

openssl speed rsa1024 rsa2048

在我的 PC 上,这会导致以下结果:

                  sign    verify    sign/s verify/s
rsa 1024 bits 0.000646s 0.000035s   1549.1  28408.6
rsa 2048 bits 0.004097s 0.000120s    244.1   8331.1

因此,当密钥大小从 1024 位增加到 2048 位时,我们分别得到 6.3 倍和 3.4 倍的解密和加密系数。

有一篇关于 Javamex 的好文章讨论RSA 密钥长度他们从分析中得出的规则是“RSA 密钥长度每增加一倍,解密速度就会慢 6-7 倍”。

密钥长度的 RSA 解密时间

阅读它似乎确实使用 RSA 解密通常比加密慢,这里有一个推理的解释我在我的机器上做了一些快速测试,将密钥长度加倍似乎使加密时间加倍。