【问题标题】:PKCS#7 CMS - Message digest calculation processPKCS#7 CMS - 消息摘要计算过程
【发布时间】:2021-03-28 10:50:36
【问题描述】:

我正在研究 RFC 5652,以便准确了解如何编码/解码 PKCS#7 ASN.1 数据。

我不明白当存在“signedAttrs”字段时如何创建签名:

消息摘要计算过程的结果取决于 是否存在signedAttrs 字段。当场不在时, 结果只是所描述的内容的消息摘要 更多。但是,当该字段存在时,结果是消息 SignedAttrs 值的完整 DER 编码摘要 包含在 signedAttrs 字段中。由于 SignedAttrs 值, 如果存在,必须包含内容类型和消息摘要 属性,这些值间接包含在结果中。

通过阅读上面的文字,我感到困惑:SignedAttrs 字段包含消息摘要和内容类型值,但消息摘要可以在计算后出现,并且必须计算摘要:

eContent OCTET STRING + SignedAttrs 字段的完整 DER 编码(包含消息摘要字段)。

在下面的示例中,有一个 PKCS#7 已签名数据结构,其中正在对信封数据内容字段值 + 已签名属性进行签名。在哪里 messageDigest 值究竟来自哪里?

【问题讨论】:

    标签: asn.1 pkcs#7 der ber


    【解决方案1】:

    CMS 算法中有两种不同的消息摘要:

    • 第一个消息摘要是一个签名属性,它只包含被签名的封装内容的摘要。

    • 第二个是将由签名算法签名。此消息摘要包含由特定算法计算的摘要:

      消息摘要算法的输入是内容。在缺少签名属性的情况下,当前输入的摘要(当前输入 = 内容)将被创建并作为结果消息摘要返回。否则,如果存在签名属性,则计算内容的摘要并将其添加到签名属性列表(作为消息摘要签名属性),然后计算所有签名属性的摘要。所以内容间接包含在结果中

    【讨论】:

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