【问题标题】:What are common RSA sign exponent?什么是常见的 RSA 符号指数?
【发布时间】:2011-05-23 14:13:00
【问题描述】:

RSA加密/解密指数和RSA签名/校验指数有什么区别吗?

【问题讨论】:

  • “签名/检查”是什么意思?如果是任何形式的授权或数字签名,那都是通过加密和解密来完成的。如果我用我的私钥加密一条消息,而你用我的公钥解密,你就知道这条消息是由使用我的私钥的人发送的,大概是我。
  • 嗯,是的,但是在签名时,您正在确认一段密文,在加密时,您创建了一段新的密文。

标签: encryption cryptography rsa digital-signature


【解决方案1】:

没有。 RSA 公钥/私钥对的公钥由指数和模数组成,无论是用于签名还是加密。最常见的指数是 0x10001。

Wikipedia article on RSA 很不错。

【讨论】:

  • 你的意思是 0x10001 (65537) 吗?
【解决方案2】:

用于签名的 RSA 密钥对和用于加密解密的密钥对在结构上没有区别。理论上,您可以同时使用一对,但这会为新的攻击开辟道路,因此不建议这样做。

另一方面,私有指数和公共指数之间存在差异:

  • 公共指数可以比较小,这样可以缩短密钥大小,加快加密和签名验证。 正如查理马丁所说,0x10001 = 2^16 + 1 = 65537 是常见的选择。

  • 另一方面,私有指数是从公钥和模数分解中导出的,并且通常按照模数本身的大小顺序。由于要保持私有,所以不能小(否则容易猜到),还需要满足与公有指数的算术关系,自动变大。

    这使得天真的签名/解密比相应的公共操作慢,但另一方面, 通过使用模数的分解和 中国剩余定理,即分别计算模pq而不是模m = p·q和 然后合并结果。

请注意,我们区分公共(加密/验证)和私有(解密/签名)指数, 不在签名/验证和加密/解密指数之间。

【讨论】:

    【解决方案3】:

    在模数方面,用于签名/验证的 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)。

    但是,您的具体实现可能会限制您在实践中可以使用的最大值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-18
      • 2011-11-24
      • 2012-03-09
      相关资源
      最近更新 更多