希望这个问题属于stackoverflow的范围,它包含一些更接近讨论的问题,但其他问题可以回答。
对于我的最后一年项目,我想尝试设置一个端到端的安全电子邮件Web应用程序(无论语言数据库或服务器)。
我正在进行加密等工作,并陷入公钥加密。 引自HowStuffWorks
发送计算机使用对称密钥加密文档 使用接收的公钥加密对称密钥 电脑。接收计算机使用其私钥解码 对称密钥。然后使用对称密钥对文档进行解码。
因此,文本使用对称密钥加密,对称密钥使用接收comp的公钥加密?但接收comp使用其私钥解码对称密钥? Q1 :为什么不使用自己的公钥?
此外,虽然我没有完全理解使用它的公钥加密和服务,如PGP,我读到有关数字证书的内容,但我再也不明白它的可靠性如何, Q2 :不会更好继续使用用户使用/传递的身份验证登录到他的帐户? [放弃此问题这是我理解的错误]
Q3 :除了上述所有内容之外,我还想知道是否有任何好的步骤可用于证明系统的安全性。
这是我第一次接触加密方法,所以请对我的无知感到有点耐心。
谢谢。
P.S *有没有更好的方法而不是公钥加密?一直在想最近有关NSA计算机处理能力的事件和出版物有多好。
答案 0 :(得分:2)
Q1:为什么不使用自己的公钥?
公钥加密的语义是,您只能使用匹配的私钥解密使用公钥加密的内容。
在伪代码中,以下命题成立:
Dec(PrivateKey, Enc(PublicKey, Message)) == Message
但是,您无法使用Enc(PublicKey, Message)
解密PublicKey
。你需要私钥。
Q2:继续使用用户使用/传递的身份验证以登录其帐户不是更好吗?
我不明白这个问题(我可以猜测你的意思,但不会因为这会破坏对话)。如果你能澄清我会编辑答案。
问题3:除了上述所有内容之外,我想知道是否有任何好的步骤可用于证明系统的安全性。
是的,有许多工具可用来证明系统的安全性。从证明协议的高级别(例如:Proverif,strand space,easycrypt)一直到证明您运行的实际代码是正确的(例如:{m}定理证明3}},Coq和Isabelle或通过HOL4 S M自动履行证明义务,如T或fs2pv (例如:F7)。
甚至还有一种编程语言mitls,通过集成的SMT支持设计和实现,允许嵌入算法的正确性属性证明,并以更自然的方式实现某些功能(披露:我工作)为伽罗瓦)。
答案 1 :(得分:0)
这是一个非常棘手的主题。我尽我所能回答。让我们从一个例子开始。您想以安全的格式向朋友发送电子邮件。您编写电子邮件并使用其公钥对其进行签名。然后点击发送。将为您的电子邮件提供商打开加密的ssl隧道,并传输消息。您的邮件提供商将邮件转发给其邮件提供商。他收到它并用他的私钥解密,并可以阅读该消息。很简单吧。
Q1:如果您可以使用公钥解密,那么任何人都可以解密它。 Q2:如果邮件提供商遭到黑客攻击并且您的密码被盗,该怎么办? 问题3:安全性与最薄弱的环节一样强大。中间有很多步骤你无法控制。你拥有的唯一真正的控制是你身边和他们身边的加密。您可以做的最好的事情是使用已知良好的加密标准,并尽早和经常旋转您的密钥。
如果您的浏览器使用加密的SSL隧道表示https,请注意。它使两方之间的通信非常安全。您使用其公钥进行加密,并使用其私钥进行解密。众所周知,https的私钥是从所谓的根证书颁发机构发出的。它的浏览器如何知道正在使用的密钥不是伪造或篡改的。人们普遍认为,NSA已经获得了根CA发布的所有私钥,使得所有网页流量都可由他们解密。
您的电子邮件解决方案的最佳选择是使用私有生成的密钥。使用类似PGP或竞争标准的东西。不要使用已发行的任何内容。