【问题标题】:OpenPGP tag 18/19 description confusionOpenPGP 标签 18/19 描述混乱
【发布时间】:2011-05-16 17:56:25
【问题描述】:

有人可以帮我清理一下 MDC 和数据加密吗?在 RFC 4880 中,它说:

待处理数据的明文 加密通过 SHA-1 哈希函数,结果 散列附加到明文中 修改检测码包。 哈希函数的输入 包括描述的前缀数据 多于;它包括所有 明文,然后还包括两个 值 0xD3、0x14 的八位字节。这些 表示一个编码 修改检测码包标签 和 20 个八位字节的长度字段。

起初,mdc(没有标头数据)似乎只是:sha1([data]) -> hash_value

然后直到分号的第二句使它看起来像sha1(OpenPGP_CFB_extra_data + [data]) -> hash_value

分号后面的内容看起来像是我应该做的sha1([data] + "\xd3\x14") -> hash_value。 (这完全没有意义,但似乎是这样写的)

发生了什么事?

在获得正确的 MDC 后,如何处理它?它是它自己的数据包,还是类似的东西(根据我的理解)?:

tag18_header + encrypt(plaintext + "\xd3\x14" + 20 byte hash)

【问题讨论】:

    标签: encryption pgp openpgp


    【解决方案1】:

    看完RFC 4880GnuPG的部分源码(g10/cipher.c好像是处理这个的地方),我是这样理解的:

    • 0xd3 是 MDC 数据包标签。
    • 0x14 是 MDC 数据包长度(20 字节)。

    MDC 哈希计算如下:

    MCD_hash = SHA-1(OpenPGP_CFB_extra_data + [plaintext] + "\xd3\x14")
    

    然后将其附加到明文消息并加密:

    encrypt(OpenPGP_CFB_extra_data + [plaintext] + "\xd3\x14" + MDC_hash)
    

    解密时,通过计算除最后 20 个字节之外的所有内容的 SHA-1 并将结果与​​最后 20 个字节进行比较来验证此哈希,正如 RFC 4880 所写 (page 50):

    在解密过程中,明文数据应使用SHA-1进行哈希处理,包括前缀数据以及数据包标签长度字段 修改检测码数据包。 MDC 数据包的主体在解密后与 SHA-1 哈希的结果进行比较。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多