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

Security 如何设计一个安全且“安全”的;“自毁”;电子邮件?,security,encryption,cryptography,self-destruction,Security,Encryption,Cryptography,Self Destruction,你们大多数人都知道,电子邮件是非常不安全的。即使在客户端和发送电子邮件的服务器之间使用SSL安全连接,消息本身也将以明文形式在Internet上的节点间跳跃,从而容易被窃听 另一个需要考虑的问题是,发送方可能不希望消息在一段时间后或被读取一次后可读(即使是预期的收件人)。原因有很多;例如,该消息可能包含可通过传票请求的敏感信息 一个解决方案(我认为是最常见的)是将消息发送给受信任的第三方,并将该消息的链接发送给收件人,然后收件人从第三方读取该消息。或者,发件人可以向收件人发送加密邮件(使用对称加

你们大多数人都知道,电子邮件是非常不安全的。即使在客户端和发送电子邮件的服务器之间使用SSL安全连接,消息本身也将以明文形式在Internet上的节点间跳跃,从而容易被窃听

另一个需要考虑的问题是,发送方可能不希望消息在一段时间后或被读取一次后可读(即使是预期的收件人)。原因有很多;例如,该消息可能包含可通过传票请求的敏感信息

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

无论哪种方式,这种方法都存在一个根本问题:如果第三方受到损害,您的所有努力都将付诸东流。对于这样一个事件的真实例子,请参考涉及与NSA勾结的崩溃

我见过的另一种解决方案是,它对消息进行加密,将密钥拆分为若干部分,并将这些部分“存储”在DHT(即Vuze DHT)中。只需查找哈希值(哈希值随消息一起发送),就可以轻松、可靠地访问这些值。8小时后,这些值将丢失,甚至预期的收件人也无法阅读邮件。由于有数百万个节点,因此不存在单点故障。但在DHT上安装Sybil攻击也打破了这一局面(有关更多信息,请参阅Vanish网页)

那么,有人对如何实现这一目标有想法吗

编辑:我想我没有说清楚。主要的问题不是接收者故意保留消息(我知道这是不可能控制的),而是消息在某处可用


例如,在安然破产案中,法院传唤了他们服务器上的所有电子邮件。如果邮件被加密,并且密钥永远丢失,那么拥有加密邮件而没有密钥对他们没有任何好处。

如果收件人知道邮件以后可能无法阅读,并且他们发现邮件很有价值,他们的目的是保存邮件,因此他们会试图破坏保护

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

其中一种方法可能是使用自毁硬件,就像在“不可能的任务”中一样——硬件会显示消息,然后将其销毁,但正如您所看到的那样,这也很不方便——收件人需要通过只查看一次来理解消息,但这并不总是可能的


因此,考虑到收件人可能有兴趣破坏保护,并且保护可能会被破坏,整个想法可能不会像预期的那样起作用,但肯定会降低处理邮件的便利性。

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

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

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

加密,在这个词的一般意义上,将难以理解的部分引入系统,因此难以验证。(想想每个人都在执行的典型openssl魔术,但99%的人真的理解;如果HOWTO上的某个步骤X会说“现在去站点X并上传*.cer*.pem和*.csr”来验证步骤1到X-1,我猜十分之一的人会这么做)

结合这两个观察结果,我对安全(*)和可理解系统的建议如下:

假设您有一条10KB的消息。从
/dev/(u)random
中取N乘以10kb,可能是从基于硬件的随机源中取,称之为K(0)到K(N-1)。使用简单的异或运算来计算

K(N) = M^K(0)^K(1)^...^K(N-1)
现在,根据定义

M = K(0)^K(1)^...^K(N)
i、 要理解这个信息,你需要所有的K。使用您喜欢的任何协议,在随机256位名称下,与N个不同(或多或少受信任)方存储K

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

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

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


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

如果您的环境允许,您可以使用来确保使用受信任的引导加载程序来引导受信任的内核,它可以在发送电子邮件之前验证是否使用了受信任的电子邮件客户端来接收电子邮件。看

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


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

自毁部分确实很难,