X509 signatureValue size

问题描述 投票:0回答:1

问题是,如果signatureValue是基于哈希值的,为什么这么大?假设签名算法为sha256RSA。它不应该按照以下步骤缩小:

  1. 根据tbsCertificate计算SHA256哈希。输出=> 256位。
  2. 使用RSA私钥对256位哈希进行签名。输出=> 256位?

但是如果您看到signatureValue的大小,则可能有2048、4096,[更大?]位。

x509certificate
1个回答
0
投票

签名大小不取决于用于对签名数据进行哈希处理的哈希算法。它仅取决于密钥大小。

RSA签名基于模幂,即sig = m ^ d mod N,其中:

  • m是要签名的消息
  • d私有指数(其大小为N / 2,即RSA 2048为1024位)。
  • N模数
  • sig签名值

对于这样的计算,最终结果是m ^ d结果的其余部分除以模数(大致为RSA密钥大小)。 md是相当大的值,当您一次加电时,该值将很大,甚至不适合模数长度,这就是为什么要使用最后的mod操作。您会看到,没有诸如“哈希”之类的术语。有时(使用非常小的值时),结果值的大小可能小于模数大小。在这种情况下,将填充签名值以匹配模数长度。

从原始签名可以推断出RSA密钥的大小,但不能推断嵌入在签名中的哈希算法,这就是为什么签名包含非对称算法和哈希名称(例如sha256RSA)的原因,否则,您将必须存储哈希算法消息中的某处。由于组合(非对称算法和哈希算法)是有限的并且很小,因此足以为这些组合分配唯一的OID。

© www.soinside.com 2019 - 2024. All rights reserved.