- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
众所周知,电子邮件非常不安全。即使在客户端和发送电子邮件的服务器之间建立了 SSL 安全连接,当消息在 Internet 上的节点间跳跃时,它本身仍将是明文形式,使其容易受到窃听。
另一个考虑因素是发件人可能不希望消息在一段时间后或被阅读一次后可读 - 即使是预期的收件人也是如此。有许多的原因;例如,消息可能包含可以通过传票请求的敏感信息。
一种解决方案(我认为是最常见的一种)是将消息发送给受信任的第三方,并将该消息的链接发送给收件人,然后收件人从第三方读取该消息。或者发件人可以向收件人发送加密消息(使用对称加密)并将 key 发送给第三方。
无论哪种方式,这种方法都存在一个根本问题:如果这个第 3 方受到损害,您所有的努力都将变得毫无用处。有关此类事件的真实示例,请参阅涉及 Crypto AG 的崩溃。与国家安全局勾结
我见过的另一个解决方案是 Vanish ,它加密消息,将 key 分成几部分并将这些部分“存储”在 DHT(即 Vuze DHT)中。通过简单地查找散列(散列与消息一起发送),可以轻松且可靠地访问这些值。 8 小时后,这些值将丢失,甚至预期的收件人也将无法阅读邮件。拥有数百万个节点,没有单点故障。但这也因对 DHT 发起女巫攻击而被打破(有关更多信息,请参阅 Vanish 网页)。
那么有人知道如何实现这一点吗?
编辑:我想我没有说清楚。主要问题不是收件人有意保留消息(我知道这是无法控制的),而是消息在某处可用。
例如,在安然公司的崩溃中,法院就其服务器上的所有电子邮件向他们发出传票。如果消息被加密并且 key 永远丢失,那么拥有加密消息而没有 key 对他们没有好处。
最佳答案
(免责声明:我没有阅读有关 Vanish 或 Sybil 攻击的详细信息,这可能与下面的内容类似)
首先:电子邮件通常很小,尤其是。与 50 mb 的 youtube vid 相比,您每天可以下载 10 次或更多次。在此基础上,我假设存储和带宽在这里不是真正的问题。
加密,在这个词的常识中,将难以理解的部分引入到您的系统中,因此难以验证。 (想想每个人刚刚执行的典型 openssl 魔法,但 99% 的人真正理解;如果 HOWTO 上的某些步骤 X 会说“现在去站点 X 并上传 *.cer *.pem 和 *.csr”以验证步骤1 到 X-1,我估计十分之一的人会这样做)
结合这两个观察结果,我对安全 (*) 和易于理解的系统的建议:
假设您有一条 10 kb 的消息 M。从 /dev/(u)random
中取出 N 倍 10 kb,可能来自基于硬件的随机源,将其称为 K(0) 到 K(N-1)。使用简单的异或运算计算
K(N) = M^K(0)^K(1)^...^K(N-1)
现在,根据定义
M = K(0)^K(1)^...^K(N)
即要理解您需要所有 K 的消息。将 K 与 N 个不同的(或多或少受信任的)方一起存储,使用您喜欢的任何协议(protocol),随机 256 位名称。
要发送消息,请将 N 个链接发送到 K 个链接。
要销毁消息,请确保至少删除一个 K。
(*) 关于安全性,系统将与托管 K 的最安全方一样安全。
不要采用固定的 N,不要在每条消息的单个节点上使用固定数量的 K(即,将 0-10 K 的一条消息放在同一节点上)以使暴力攻击变得困难,甚至对于那些有权访问存储 key 的所有节点的人。
注意:这当然需要一些额外的软件,就像任何解决方案一样,但所需的插件/工具的复杂性是最小的。
关于security - 如何设计一个安全的 "self-destructing"电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3146847/
我正在学习 Spring 安全性,但我对它的灵活性感到困惑.. 我知道我可以通过在标签中定义规则来保护网址 然后我看到有一个@secure 注释可以保护方法。 然后还有其他注释来保护域(或 POJO)
假设有一个 key 加密 key 位于内存中并且未写入文件或数据库... byte[] kek = new byte[32]; secureRandom.nextBytes(kek); byte[]
我有 Spring Security 3.2.0 RC1 的问题 我正在使用标签来连接我 这表示“方法‘setF
我正在创建一个使用 Node Js 服务器 API 的 Flutter 应用程序。对于授权,我决定将 JWT 与私钥/公钥一起使用。服务器和移动客户端之间的通信使用 HTTPS。 Flutter 应用
在过去的几年里,我一直在使用范围从 Raphael.js 的 javascript 库。至 D3 ,我已经为自己的教育操纵了来自网络各地的动画。我已经从各种 git 存储库下载了 js 脚本,例如 s
在 python 中实现身份验证的好方法是什么?已经存在的东西也很好。我需要它通过不受信任的网络连接进行身份验证。它不需要太高级,只要足以安全地获取通用密码即可。我查看了 ssl 模块。但那个模块让我
我正在尝试学习“如何在 Hadoop 中实现 Kerberos?”我已经看过这个文档 https://issues.apache.org/jira/browse/HADOOP-4487我还了解了基本的
我有一个带有 apache2、php、mysql 的生产服务器。我现在只有一个站点 (mysite.com) 作为虚拟主机。我想把 phpmyadmin、webalizer 和 webmin 放在那里
前些天在网上看到防火墙软件OPNsense,对其有了兴趣,以前写过一个其前面的一个软件M0n0wall( 关于m0n0wa
我在 Spring Boot 和 oauth2(由 Google 提供)上编写了 rest 后端,在 "/login" 上自动重定向。除了 web 的 oauth 之外,我还想在移动后端进行 Fire
我想调用类 Foo,它的构造函数中有抽象类 Base。我希望能够从派生自 Base 的 Derived 调用 Foo 并使用 Derived覆盖方法而不是 Base 的方法。 我只能按照指示使用原始指
如何提高 session 的安全性? $this->session->userdata('userid') 我一直在为我的 ajax 调用扔掉这个小坏蛋。有些情况我没有。然后我想,使用 DOM 中的
我目前正在为某些人提供程序集编译服务。他们可以在在线编辑器中输入汇编代码并进行编译。然后编译它时,代码通过ajax请求发送到我的服务器,编译并返回程序的输出。 但是,我想知道我可以做些什么来防止对服务
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
目前,我通过将 session 中的 key 与 MySQl 数据库中的相同 key 相匹配来验证用户 session 。我使用随机数重新生成 session ,该随机数在每个页面加载时都受 MD5
Microsoft 模式与实践团队提供了一个很棒的 pdf,称为:“构建安全的 asp.net 应用程序”。 microsoft pdf 由于它是为 .Net 1.0 编写的,所以现在有点旧了。有谁知
在 Lua 中,通常会使用 math.random 生成随机值和/或字符串。 & math.randomseed , 其中 os.time用于 math.randomseed . 然而,这种方法有一个
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我们有一个严重依赖 Ajax 的应用程序。确保对服务器端脚本的请求不是通过独立程序而是通过坐在浏览器上的实际用户的好方法是什么 最佳答案 真的没有。 通过浏览器发送的任何请求都可以由独立程序伪造。 归
我正在寻找使用 WebSockets 与我们的服务器通信来实现 web (angular) 和 iPhone 应用程序。在过去使用 HTTP 请求时,我们使用请求数据、url、时间戳等的哈希值来验证和
我是一名优秀的程序员,十分优秀!