端到端电子邮件加密Web应用程序

时间:2013-09-13 17:20:21

标签: web-applications encryption cryptography public-key-encryption end-to-end

希望这个问题属于stackoverflow的范围,它包含一些更接近讨论的问题,但其他问题可以回答。

对于我的最后一年项目,我想尝试设置一个端到端的安全电子邮件Web应用程序(无论语言数据库或服务器)。

我正在进行加密等工作,并陷入公钥加密。 引自HowStuffWorks

  

发送计算机使用对称密钥加密文档   使用接收的公钥加密对称密钥   电脑。接收计算机使用其私钥解码   对称密钥。然后使用对称密钥对文档进行解码。

因此,文本使用对称密钥加密,对称密钥使用接收comp的公钥加密?但接收comp使用其私钥解码对称密钥? Q1 :为什么不使用自己的公钥?

此外,虽然我没有完全理解使用它的公钥加密和服务,如PGP,我读到有关数字证书的内容,但我再也不明白它的可靠性如何, Q2 :不会更好继续使用用户使用/传递的身份验证登录到他的帐户? [放弃此问题这是我理解的错误]

Q3 :除了上述所有内容之外,我还想知道是否有任何好的步骤可用于证明系统的安全性。

这是我第一次接触加密方法,所以请对我的无知感到有点耐心。

谢谢。

P.S *有没有更好的方法而不是公钥加密?一直在想最近有关NSA计算机处理能力的事件和出版物有多好。

2 个答案:

答案 0 :(得分:2)

  

Q1:为什么不使用自己的公钥?

公钥加密的语义是,您只能使用匹配的私钥解密使用公钥加密的内容。

在伪代码中,以下命题成立:

Dec(PrivateKey, Enc(PublicKey, Message)) == Message

但是,您无法使用Enc(PublicKey, Message)解密PublicKey。你需要私钥。

  

Q2:继续使用用户使用/传递的身份验证以登录其帐户不是更好吗?

我不明白这个问题(我可以猜测你的意思,但不会因为这会破坏对话)。如果你能澄清我会编辑答案。

  

问题3:除了上述所有内容之外,我想知道是否有任何好的步骤可用于证明系统的安全性。

是的,有许多工具可用来证明系统的安全性。从证明协议的高级别(例如:Proverifstrand spaceeasycrypt)一直到证明您运行的实际代码是正确的(例如:{m}定理证明3}},CoqIsabelle或通过HOL4 S M自动履行证明义务,如Tfs2pv (例如:F7)。

甚至还有一种编程语言mitls,通过集成的SMT支持设计和实现,允许嵌入算法的正确性属性证明,并以更自然的方式实现某些功能(披露:我工作)为伽罗瓦)。

答案 1 :(得分:0)

这是一个非常棘手的主题。我尽我所能回答。让我们从一个例子开始。您想以安全的格式向朋友发送电子邮件。您编写电子邮件并使用其公钥对其进行签名。然后点击发送。将为您的电子邮件提供商打开加密的ssl隧道,并传输消息。您的邮件提供商将邮件转发给其邮件提供商。他收到它并用他的私钥解密,并可以阅读该消息。很简单吧。

Q1:如果您可以使用公钥解密,那么任何人都可以解密它。 Q2:如果邮件提供商遭到黑客攻击并且您的密码被盗,该怎么办? 问题3:安全性与最薄弱的环节一样强大。中间有很多步骤你无法控制。你拥有的唯一真正的控制是你身边和他们身边的加密。您可以做的最好的事情是使用已知良好的加密标准,并尽早和经常旋转您的密钥。

如果您的浏览器使用加密的SSL隧道表示https,请注意。它使两方之间的通信非常安全。您使用其公钥进行加密,并使用其私钥进行解密。众所周知,https的私钥是从所谓的根证书颁发机构发出的。它的浏览器如何知道正在使用的密钥不是伪造或篡改的。人们普遍认为,NSA已经获得了根CA发布的所有私钥,使得所有网页流量都可由他们解密。

您的电子邮件解决方案的最佳选择是使用私有生成的密钥。使用类似PGP或竞争标准的东西。不要使用已发行的任何内容。