【问题标题】:X509 signatureValue sizeX509 签名值大小
【发布时间】:2020-04-23 15:50:34
【问题描述】:

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

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

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

【问题讨论】:

    标签: x509certificate


    【解决方案1】:

    签名大小不取决于用于散列签名数据的散列算法。这仅取决于密钥大小。

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-13
      • 1970-01-01
      • 2011-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多