RSA加密/解密指数和RSA签名/检查指数之间是否存在差异?
答案 0 :(得分:4)
无。 RSA公共/私有对的公钥由指数和模数组成,无论它是用于签名还是加密。最常见的指数是0x100001。
答案 1 :(得分:2)
用于签名的RSA密钥对与用于加密解密的RSA密钥对之间没有结构差异。从理论上讲,你可以使用一对,但这为新的攻击开辟了方法,所以不建议这样做。
另一方面,私人和公共指数之间存在差异:
公共指数可以相对较小,这会缩短密钥大小并加快加密和签名验证。 正如查理·马丁所说,0x10001 = 2 ^ 16 + 1 = 65537是一种常见的选择。
另一方面,私有指数是从公钥和模数的分解导出的,通常是模数本身的大小顺序。因为它应该保持私密,它不能小(否则很容易猜到),它还需要实现与公共指数的算术关系,这使它自动变大。
这使得天真的签名/解密比相应的公共操作慢,但另一方面,
通过使用模数和分解,可以加快这一点
中国剩余定理,即单独计算模p
和q
而不是模m = p·q
和
然后结合结果。
请注意,我们区分公共(加密/验证)和私有(解密/签名)指数, 不在签名/验证和加密/解密指数之间。
答案 2 :(得分:0)
用于签名/验证的RSA密钥与用于加密/解密的RSA密钥在模数方面没有区别-但是X509证书中密钥使用扩展的值将有所不同。
总结Should RSA public exponent be only in {3, 5, 17, 257 or 65537} due to security considerations?上security.stackexchange.com)的详细答案:
理论上,所有常见的实现都应允许您使用任何质数> 2,但Fermat numbers-2 ^ n + 1形式的数字,例如3、5、17、257、65537-众所周知通常是首选的,因为它们可以加快操作一侧(加密/解密,签名/验证)的计算速度-65537可能是最常用的指数在这个时间点(2020/11)。
但是,您的特定实现可能会限制您可以在实践中使用的最大值。