首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RSA签名验证:RSASSA-PKCS1-V1_5中的“整数太大”错误是如何实现的?

RSA签名验证:RSASSA-PKCS1-V1_5中的“整数太大”错误是如何实现的?
EN

Cryptography用户
提问于 2023-01-05 18:36:39
回答 1查看 119关注 0票数 3

RFC 8017第8.2.2节中描述的PKCS #1 v1.5签名验证操作的步骤2如下:

代码语言:javascript
运行
复制
2.  RSA verification:

          a.  Convert the signature S to an integer signature
              representative s (see Section 4.2):

                 s = OS2IP (S).

          b.  Apply the RSAVP1 verification primitive (Section 5.2.2) to
              the RSA public key (n, e) and the signature representative
              s to produce an integer message representative m:

                 m = RSAVP1 ((n, e), s).

              If RSAVP1 outputs "signature representative out of range",
              output "invalid signature" and stop.

          c.  Convert the message representative m to an encoded message
              EM of length k octets (see Section 4.1):

                 EM = I2OSP (m, k).

              If I2OSP outputs "integer too large", output "invalid
              signature" and stop.

步骤2c中提到的“整数太大”错误发生的当且仅当m \geq 256^k (参见4.1部分),其中k是RSA模数n的八进制长度。

但是,通过构造RSAVP1原语(请参阅5.2.2部分)、0 \leq m \leq n - 1或等效的0 \leq m < n

因为n < 256^k,所以我们有m < 256^k

在我看来,I2OSP不可能输出“太大的整数”。但是,如果是的话,为什么这个条件包括在规范中呢?

EN

回答 1

Cryptography用户

回答已采纳

发布于 2023-01-05 20:37:10

事实上,如果k同意n 也就是说,如果2^{8k-8}\le n<2^{8k}#qcStackCode#,而RSAVP1正确工作并且没有产生错误条件,那么由于问题的原因,条件I2OSP输出的“整数太大”就不会发生。

为什么这个条件包括在规范中?

我能想到:

  1. I2OSP是一个适用于各种上下文的通用原语。因此,它有一个错误条件“整数太大”,发生在某些上下文中。这是一种激励,包括如何处理这种情况。我已经看到编码规则是“显式测试返回的错误,即使它们不能发生”,还有更多的规则很难被证明是正确的。
  2. 如果没有指定在错误情况下该做什么,就会有人问,不应该发生错误。
  3. 如果km由于某些软件故障而无法正确计算,或者由于硬件故障(宇宙射线、故意故障攻击)而改变其值(或软件或其他数据),则可能会发生错误。
  4. 在签名核查方面,大量的支票不太可能造成损害。我能看出的唯一原因是代码有点臃肿,速度损失很小,当签名消息或签名是秘密的时候,可能会出现侧通道泄漏(但是PKCS#1 v2.2并没有解决这个问题)。
票数 3
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/103601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档