SignedData / DigestAlgorithm和SignedData / SignerInfo / DigestAlgorithm:相同吗?

时间:2014-12-19 13:36:42

标签: digital-signature pkcs#7

RFC 6488指定Signed-Data内容类型的以下内容:

  SignedData ::= SEQUENCE {
    version CMSVersion,
    digestAlgorithms DigestAlgorithmIdentifiers,
    encapContentInfo EncapsulatedContentInfo,
    certificates [0] IMPLICIT CertificateSet OPTIONAL,
    crls [1] IMPLICIT RevocationInfoChoices OPTIONAL,
    signerInfos SignerInfos }

案文解释说:

The digestAlgorithms set contains the OIDs of the digest algorithm(s)
used in signing the encapsulated content.  This set MUST contain
exactly one digest algorithm OID [...]

然后,在SignerInfo内,还有另一个DigestAlgorithmIdentifier

 SignerInfo ::= SEQUENCE {
    version CMSVersion,
    sid SignerIdentifier,
    digestAlgorithm DigestAlgorithmIdentifier,
    signedAttrs [0] IMPLICIT SignedAttributes OPTIONAL,
    signatureAlgorithm SignatureAlgorithmIdentifier,
    signature SignatureValue,
    unsignedAttrs [1] IMPLICIT UnsignedAttributes OPTIONAL }

解释是:

The digestAlgorithm MUST consist of the OID of a digest algorithm
that conforms to the RPKI Algorithms and Key Size Profile
specification [RFC6485].

在我偷看的几个PKCS#7文件中,这两个元素具有相同的价值。

这是同一属性的重复吗?如果没有,那么是什么意思?

1 个答案:

答案 0 :(得分:1)

  

这是同一属性的重复吗?如果没有,那么是什么意思?

如果RPKI是。

原因是该标准没有引入专门的新结构,而仅仅是现有结构的概况:

  
    

RPKI签名对象是CMS [RFC5652]签名数据对象

的配置文件   

与您的RPKI相比,CMS签名数据对象可能在其 signerInfos 集中包含多个 SignerInfo 对象,并且每个对象可能使用不同的<强> digestAlgorithm 即可。因此,在CMS签名数据对象中,初始摘要算法集可能明智地包含多个条目。

实际上,这个领域更为宽松:

  
    

digestAlgorithms是消息摘要算法的集合           身份标识。可能有任意数量的元素           集合,包括零。每个元素标识消息           摘要算法,以及使用的任何相关参数           一个或多个签名者。该集合旨在列出           任何签名者使用的消息摘要算法           订购,便于一次通过签名验证。