如何设计安全且“自毁”的电子邮件?

时间:2010-06-30 06:10:58

标签: security encryption cryptography self-destruction

正如大多数人所知,电子邮件非常不安全。即使客户端和发送电子邮件的服务器之间存在SSL安全连接,消息本身也会以纯文本形式发送,同时它会在Internet上的节点周围跳跃,从而容易被窃听。

另一个考虑因素是发件人可能不希望邮件在一段时间后或在阅读一次之后即使是预期的收件人也是可读的。有许多的原因;例如,消息可能包含可通过传票请求的敏感信息。

解决方案(我认为最常见的解决方案)是将消息发送给受信任的第三方,并将该消息的链接发送给收件人,然后收件人从第三方读取此消息。或者发件人可以向收件人发送加密邮件(使用对称加密)并将密钥发送给第三方。

无论哪种方式,这种方法都存在一个根本问题:如果第三方受到损害,您的所有努力都将变得毫无用处。有关此类事件的真实示例,请参阅涉及Crypto AG与NSA勾结的失败

我见过的另一个解决方案是Vanish,它对消息进行加密,将密钥分成几部分并将这些部分“存储”在DHT中(即Vuze DHT)。只需查看哈希值即可轻松且可靠地访问这些值(哈希值随消息一起发送)。 8小时后,这些值将丢失,即使是预期的收件人也无法阅读该邮件。拥有数百万个节点,没有单点故障。但是,这也是通过对DHT进行Sybil攻击而打破的(有关更多信息,请参阅Vanish网页)。

所有人都有关于如何实现这一目标的想法吗?

编辑:我想我没有说清楚。主要关注的不是收件人故意保留消息(我知道这个消息无法控制),但消息在某处可用。

例如,在安然公司的崩溃中,法院对他们服务器上的所有电子邮件进行了传唤。如果消息被加密并且密钥永远丢失,那么加密消息和没有密钥对他们没有好处。

8 个答案:

答案 0 :(得分:1)

(免责声明:我没有阅读关于Vanish或Sybil攻击的细节,这可能与下面的内容类似)

首先:电子邮件通常很小,尤其是。与50 MB的youtube vid相比,你可以每天下载10次或更多次。在此基础上我假设存储和带宽不是真正的问题。

在常识中,加密会在系统中引入难以理解的部分,因此难以验证。 (想想每个人都会表现出典型的openssl魔法,但99%的人真的明白;如果HOWTO上的某个步骤X会说“现在转到X站点并上传* .cer * .pem和* .csr”来验证步骤1到X-1,我猜十分之一的人会做到这一点)

结合这两个意见,我建议安全(*)和可理解的系统:

假设您的消息M为10 kb。从/dev/(u)random取N倍10 kb,可能来自基于硬件的随机源,称之为K(0)到K(N-1)。使用简单的xor运算来计算

K(N) = M^K(0)^K(1)^...^K(N-1)

现在,按照定义

M = K(0)^K(1)^...^K(N)

即。理解你需要所有K的信息。使用随机的256位名称,使用您喜欢的任何协议,将K存储为N个不同(或多或少可信)的各方。

要发送消息,请将N个链接发送给K.

要销毁消息,请确保至少删除一个K. (*)在安全方面,该系统将与托管K的最安全的一方一样安全。

不要采用固定的N,每个消息在单个节点上没有固定数量的K(即在同一节点上放置0-10 K的一条消息)以使蛮力攻击变得困难,甚至对于那些有权访问存储密钥的所有节点的人。

注意:这当然需要一些额外的软件,就像任何解决方案一样,但所需的插件/工具的复杂性很小。

答案 1 :(得分:1)

自毁部分真的很难,因为用户可以截取屏幕并将未加密的屏幕截图存储在他的磁盘上等等。所以我认为你没有机会强制执行(总会有办法,即使你链接到外部页面)。但是,您可以简单地要求收件人在之后将其删除。

另一方面,加密根本不是问题。我不会依赖TLS,因为即使发件人和客户端正在使用它,也可能有其他邮件依赖谁没有,他们可能会将邮件存储为纯文本。因此,最好的方法是简单地加密它。

例如,我正在使用GnuPG(几乎)我写的所有邮件,这是基于一些非对称加密方法。在这里,我知道只有我明确许可的人才能阅读邮件,因为几乎所有流行的MUA都有插件,所以收件人也很容易阅读邮件。 (因此,没有人必须手动加密邮件,可能忘记从磁盘中删除未加密的邮件...)。如果有人偷了你的私钥(通常也是加密的),也可以撤销密钥。

在我看来,GnuPG(或S / MIME)应该一直使用,因为这也有助于使垃圾邮件变得更加困难。但这可能只是我愚蠢的梦想之一;)

答案 2 :(得分:1)

有很多不同的方法可以解决这个问题,这些方法都有好处和坏点,你只需要为你的场景选择合适的方法。我认为实现这一目标的最佳方式与“最常见”解决方案相同。值得信赖的第三方应该是您 - 您创建自己的网站,并使用您自己的身份验证。然后,您不必向任何人提供假设的密钥。

您可以通过创建自己的客户端软件来使用双向认证方法,该软件可以读取电子邮件,用户拥有自己的证书。最好是安全而不是抱歉!

答案 3 :(得分:0)

如果收件人知道该邮件可能在以后变得不可读并且他们发现该邮件有价值,他们的意图是保留它,那么他们将尝试颠覆该保护。

一旦有人看到未加密的信息 - 这意味着以任何可感知的形式 - 无论是文本还是屏幕图像 - 他们都能以某种方式存储它并做任何他们想做的事情。所有带键的措施都只会使处理消息不方便,但不能阻止提取文本。

其中一种方法可能是使用像“不可能的任务”一样的自毁硬件 - 硬件会显示消息然后将其销毁,但正如您所看到的那样也很不方便 - 接收者需要理解消息仅查看一次并非总是可能。

因此,鉴于收件人可能有兴趣破坏保护并且保护可能被破坏,整个想法可能无法按预期工作,但肯定会使处理消息变得不方便。

答案 4 :(得分:0)

如果使用HTML格式,您可以拥有可以在以后删除的邮件参考资产。如果消息在以后打开,则用户应该看到损坏的链接..

答案 5 :(得分:0)

如果您的环境允许,您可以使用trusted boot environment确保已使用可信引导加载程序引导可信内核,这可以验证是否使用受信任的电子邮件客户端来接收电子邮件在发送之前。请参阅remote attestation

电子邮件客户端有责任及时负责地删除电子邮件 - 可能仅依赖于内存存储并请求无法交换到磁盘的内存。

当然,程序中可能会出现错误,但这种机制可以确保没有有意存储电子邮件的途径。

答案 6 :(得分:0)

正如你所描述的那样,问题确实听起来非常接近Vanish所解决的问题,并在他们的论文中详细讨论过。正如您所指出的,他们的第一个实现被发现存在弱点,但它似乎是一个实现弱点而不是基本的弱点,因此可能是可修复的。

消失也是众所周知的,它是攻击的明显目标,这意味着它的弱点很有可能被发现,公开和修复。

因此,您最好的选择可能是等待Vanish版本2.使用安全软件,滚动自己几乎不是一个好主意,从已建立的学术安全组获取更安全的东西。

答案 7 :(得分:0)

IMO,这种情况最实用的解决方案是将Pidgin IM客户端与Off-the-Record(无日志记录)和pidgin-encrypt(端到端不对称加密)结合使用。聊天窗口关闭后,该消息将被销毁,在紧急情况下,您只需拔下计算机即可关闭聊天窗口。