电子邮件是否可以使用非正式的加密方式?


13

即时通讯世界有加密记录 - 这意味着您可以获得身份验证,加密和转发拒绝。关键材料在会话结束后发布,以便窃听者可以伪造消息,从而即使私钥丢失也可以进行拒绝。

但是,对于电子邮件,我们只有GPG/PGP,它提供身份验证和加密功能,但没有前向拒绝功能。如果私钥被泄露,攻击者可以证明该消息是你的。此外,与使用会话密钥的HTTPS的PFS实现不同,破坏一个私钥会危及与该密钥一起发送的所有消息。

是否有可能在SMTP的异步多服务器环境中使用非记录式加密功能?这样的协议是否存在?

如果不是,如果它支持当前的方法来转发可否认性和正向保密性,那么下一代SMTP的替代方案如何不同?

  0

OTR相当“健谈”(因为会话密钥已建立等) - 这对电子邮件来说效果不佳。 12 8月. 132013-08-12 12:24:33

9

简单的前向拒绝很容易与PGP实现:只需不要签署您发送的电子邮件! 任何人都可以发送带有任意内容和所谓发件人的电子邮件;签名意指特别是以取消前向可否认性。

但是,如果你不签字你也会失去诚信。你想做些什么是能够发送电子邮件这样的:

  • 收件人可以确信的是,电子邮件是从他相信谁发件人是,并没有在传输过程中被改变;
  • 没有外部攻击者或接收者本身获得任何证明可能被显示给第三方指称的发送者真的发送的电子邮件。

连协议类似即时消息可以通过使用与像Diffie-Hellman一个协议建立一个共享秘密实现这些性质。当Alice和Bob共享秘密K(并且使用认证来建立共享知识),并且Bob收到具有使用K的正确值的消息时,则Bob知道该消息来自Alice,因为只有Alice他自己也知道K,而鲍勃自己也没有发送。然而,Bob没有什么“令人信服”的表现,因为他知道K,他可以伪造所有的消息。

由于电子邮件没有连接,所以没有半瞬时共享密钥:发件人和收件人共享的秘密值,从未存储在文件中,但仍保留多个连续的消息。但是,OpenPGP, section 5.13中有一种“加密与MAC”格式。格式也很灵活,所以一个可以建立包含的OpenPGP消息:

  • 其中包含了随机ķ用接收者的公钥加密的public-key encrypted session key packet;它包括一个在前一个分组上计算出来的签名(并且该分组上的只有,而不是明文数据)。
  • 明文数据,作为“MAC加密”数据包。

这样一封电子邮件会体现出诚信的前瞻性:从外部可以证明,被指控的发件人一天至少向收件人发送至少一封邮件;并且收件人可以显示K并且证明告诉K也是发送者已知的。然而,没有人能证明的内容是用K加密的。

不幸的是,尽管OpenPGP格式可以支持很多组合,但现有实现(例如GnuPG)不一定是这种情况。此外,“使用MAC加密”数据包使用便宜的自制MAC(它简单地附加数据的SHA-1散列并加密全部),这对我来说看起来不太安全。我没有意识到对这种MAC结构的广泛研究,但我不会对我最后一件衬衫的稳健性打赌。

所以可以潜在有在PGP认证和完整性前进推诿,但只只要相关的软件支持这一特定组合,其中,因为据我所知,他们没有。然而。


在密码学的研究,也有另一种类型的算法叫ring signatures的将可能被应用到主题:与环签名,发件人(爱丽丝)计算涉及她的私钥和公众一种特殊类型的签名(Bob)的密钥,从而可以从外部证明Alice或Bob计算了签名,但是实际上哪一个是未知的。

目前在OpenPGP中尚未定义对环签名的支持。


1

当您特意要求提供“SMTP替代方案”时,您还可以从完全的其他方向处理此问题。

正如@Thomas Pornin如此雄辩地描述的那样,邮件的OTR不起作用,因为邮件是一种异步通信形式,而Diffie-Hellman协议需要双方在可以进行任何加密之前直接相互通话。

如果你不想改变加密的方式,那么你必须改变邮件的工作方式。有两种选择:

  1. 对于需要发送的每个通信数据包使用正常的异步电子邮件。正如@Ross Dargan所说的那样,OTR非常“健谈”,所以在真正的数据可以发送之前需要交换几条消息。根据发件人/收件人在线的情况,这可能需要一些时间。
  2. 只通过邮件发送种类的邀请,然后直接连接到接收器,并继续沿着正常的OTR-for-IM协议。

为了您的方便,这两种情况都可以被电子邮件客户端隐藏起来。 (Gmail已在其收件箱中混合了聊天内容和邮件(但没有加密)。)

两者都违反了电子邮件的原始目的,因为终端之间的异步通信仅在活动或连接到网络时出现未知和短时间。 但是,如果你看看今天的基础设施,这件事情已经不再适合了。通常,发送者和接收者(或者至少他们的客户机)都是24小时在线和在线的。即使没有,额外的等待时间也只是造成不便的一个小原因。

好消息?两种版本都不依赖SMTP或OTR上的更改协议。您可以轻松地在客户端实施所有必要的更改。快乐的编码!


1

它已经被提及,但OTR的作者提供他们的paper非常好的解释:

然而,有一个解决方案Alice能够在这种情况下使用,称为环 签名。数字签名可以证明Alice发送了一个 消息。一个环签名扩展了这个概念,并且可以用来证明,给定一组人员后,该组中的一些成员发送了消息,但是不可能确定哪一个。因此Alice可以用 发送她的消息,签名时带有{Alice,Bob} (并且加密到Bob)的环签名。在这种情况下,Bob将能够验证它确实来自Alice(因为他知道他没有发送它自己), ,但将无法证明这一点给任何人,因为他可以只是 自己很容易生成环签名。环签名 已作为PGP的扩展实现。