使用 S/MIME 或 PGP - 单个附件是不是经过散列/签名?

Posted

技术标签:

【中文标题】使用 S/MIME 或 PGP - 单个附件是不是经过散列/签名?【英文标题】:Using S/MIME or PGP - are the single attachments hashed/signed?使用 S/MIME 或 PGP - 单个附件是否经过散列/签名? 【发布时间】:2019-05-01 15:43:51 【问题描述】:

我刚刚讨论了 S/MIME 和 PGP 的完整性。我想知道不同的部分(例如附件和正文)是分别签名/散列/指纹还是仅适用于生成的容器?我检查了一些 RFC 和网站,看起来哈希/签名仅适用于整个消息,对吗?

例如:如果从 smime.p7m 文件中提取了多个附件中的一个,是否会检查此特定文件的完整性(例如哈希码)还是签名和哈希仅涵盖完整的消息?

这对于 S/MIME 和 PGP 有什么不同吗?

最后,是否有一个很好的资源(除了需要阅读的 RFC 之外)可以显示这一点?

谢谢!

【问题讨论】:

在电子邮件中,您显然是在说,通常是邮件正文(作为一个洞)被签名,而不是每个附件。尽管在技术上是可行的,但我从未遇到过其他变体。但是,当然可以在任何文件附加到邮件之前对其进行签名,但这可能不是您所要求的。 是的,我说的是电子邮件。可以肯定的是,标准并没有预见到内容的每个部分都有一些单独的签名或散列?你是对的,在撰写信息之前进行一些手动唱歌不是我想要的。是否有任何来源可以证明单个附件或部分未单独签名/散列? PGP 怎么样? 有 RFC 5751 for S/MIME 3.2 和 RFC 4880 for the OpenPGP message format,但这些是您不想阅读的 RFC - 我可以理解,它们很痛苦。 RFC 5751 谈到了已签名和/或加密的 MIME 实体,因此据我了解,理论上,消息的某些部分可以单独签名,但我从未见过这样的实现。也许这仅仅是因为它没有多大意义。你心目中的要求是什么? 感谢@not2savvy,这是我在 RFC 中没有找到的。真的很难读。你的回答已经在帮助我了。关键是我实现了一个类似的容器文件,它最终被散列和签名。一位客户提到的问题是里面的文件没有单独散列。从我的角度来看,这对于诚信来说是没有意义的。它只会防止您的加密/解密或压缩功能出现错误。但这是一项 QA 工作(自动输入/输出测试)。我需要在 S/MIME 或 PGP 等众所周知的标准中找到类似的处理方式。也是为了证明我的观点。 如果您对容器进行签名,则无需单独签名。你是对的,这样做没有意义。我很确定这通常是 S/MIME 和 PGP/MIME 客户端倾向于签署整个消息而不是单个部分的原因。对于内联 PGP,他们只对消息文本进行签名,因为他们无法对整个消息进行签名,否则会破坏 MIME。 【参考方案1】:

S/MIME 和 PGP(PGP/MIME 以及内联 PGP)规范不强制您签署或不签署哪些 MIME 部分,或者您是否签署*** MIME 部分或单个部分。

这完全由邮件客户端决定。

一般来说,根据我在野外看到的情况,支持 S/MIME 的邮件客户端倾向于签署*** MIME 部分,这意味着所有附件连同邮件正文都一起签署。

PGP/MIME 的使用方式非常相似。

对于使用 inline-PGP 的客户,他们会单独签名,通常只对邮件正文本身进行签名,而不是任何附件(尽管也有一些这样做 - 我认为蝙蝠!浮现在脑海中?)

【讨论】:

以上是关于使用 S/MIME 或 PGP - 单个附件是不是经过散列/签名?的主要内容,如果未能解决你的问题,请参考以下文章

pgp如何打开

PGP和SMIME之间的区别[关闭]

加密技术

我可以将 S/MIME 作为多部分/混合消息的一部分吗?

从 MIME 创建 S/MIME?

Windows 中的 S/MIME 时间戳