问题是,如果signatureValue是基于散列的,它为什么这么大?假设签名算法是sha256RSA。按照以下步骤,它不应该更小吗?
tbsCertificate中计算SHA256哈希。输出=> 256位.但是如果你看到signatureValue的大小,它可能有2048年,4096,更大?比特。
发布于 2020-04-23 17:09:05
签名大小不取决于用于散列签名数据的散列算法。它只取决于键的大小。
RSA签名基于模幂,即sig = m ^ d mod N,其中:
m是signedd私有指数的消息(其大小为N / 2,即RSA 2048).N modulussig签名值的1024位)。
对于这样的计算,最终结果是剩余的m ^ d结果除以模数(粗略地说,RSA密钥大小)。m和d是相当大的值,当你一个接一个地加电时,这个值将是巨大的,并且不适合偶数长度,这就是为什么使用最后一个mod操作的原因。你可以看到,没有像“散列”这样的术语。有时(当使用非常小的值时),结果值大小可能小于模数大小。在这种情况下,填充签名值以匹配模数长度。
从原始签名中可以推断出RSA密钥大小,但不能推断嵌入在签名中的哈希算法,这就是为什么签名包含非对称算法和哈希名称(如sha256RSA ),否则,必须将哈希算法存储在消息的某个位置。由于组合(不对称算法和哈希算法)是有限的和相当小的,所以很好地为这种组合分配唯一的OID。
https://stackoverflow.com/questions/61391468
复制相似问题