我能够以pidgin otr为例,能够与任何人沟通,而且是安全的。 我们还没有交换秘密密码或其他任何东西,该程序只是设置加密,每个人都向我保证它是安全的。
所以我拥有的是:
Person1与Person2交谈(假设人们真的是他们所说的人)
由于在person1和person2之间没有交换任何信息,是什么阻止badperson3拦截所有流量并解密所有消息?
我读到了PGP,关于每台机器如何拥有私钥和两台计算机之间共享的公钥,但我不完全了解它是如何工作的。这并不像person2可以使用person1的私钥对邮件进行编码,如果它使用公钥,任何人都可以解密。
我有点困惑。
答案 0 :(得分:12)
在没有深入了解技术细节的情况下,RSA等公钥加密的整体思路是公钥可用于加密数据,但不能用于解密它刚加密了什么(当然没有破解加密 - 在RSA的情况下通常意味着将两个大素数的乘积分解)。
当然,仍有一些数据交换过:在使用该公钥加密数据之前,您仍然需要获取一个人的公钥。值得注意的是,公钥加密通常比对称加密慢 lot 。在这种情况下,使用公钥加密的大多数协议尝试最小化使用公钥算法加密的数据量。通常,发送方将选择正确大小的随机数作为具有对称算法的密钥,使用公钥算法对其进行加密,然后将其发送给接收方。其余数据使用对称算法加密,使用该密钥。
因此,在典型情况下,您正在检索公钥,然后生成,加密和发送私钥,然后发送使用该私钥加密的数据。
答案 1 :(得分:4)
维基百科上写了一篇很好的描述:http://en.wikipedia.org/wiki/Public-key_cryptography
答案 2 :(得分:2)
使用某人的私钥编码的邮件只能使用匹配的公钥进行解码。同样,用某人的公钥编码的消息只能用该人的私钥解码。
如果我使用我的私钥和您的公钥对邮件进行编码,那么您就知道该邮件是保证来自我的,只有您可以阅读它。您可以使用我的公钥解密它(以证明消息来自我)和您的私钥(证明只有您可以阅读它)。
答案 3 :(得分:2)
以下是公钥加密的规则:
所以,它有两种方式。公开的公钥不是问题。
它起作用的原因要复杂得多,并涉及一些有趣的数学。
现在,OTR并没有完全使用标准的公钥加密。他们的算法基于公钥加密,但它们有一个小的转折,允许任何一方令人信服地否认曾经发生的对话。
此外,如果您实际上没有与该人交谈,则OTR并不安全。它容易受到中间人攻击。这不是因为加密可能被破坏或类似的东西。不,中间人攻击是指你和你想和之交谈的一方介入的人。
如果你是A而且你正试图和B人交谈并且中间有一个男人,M,那么攻击就像这样。
你开始和B说话,但是你不知道,你开始和M假装是B说话。当你开始和M说话时,M发起与B假装是你的对话。你将所有东西加密到M(你认为是B)。 M对其进行解密,并将其重新加密为B(谁认为M就是你)。
如果M总能保持在中间位置,那么与B的对话都不会是安全的。如果你可以在没有M的情况下与B交谈,OTR会抱怨Bs公钥已经改变(这主要是因为你真的使用Ms公钥而且现在正在获得Bs真正的公钥)。当然,OTR也可能会抱怨,因为M试图设置(他/她)自己,而你认为正确的关键是。
击败中间人攻击的方法是让你和B以某种方式交谈你可以肯定的其他原因,你正在与B谈话。然后你可以分享你的公众信息使用B键,B可以与您共享有关h(is / er)公钥的信息。您可以在咖啡店或通过电话进行此操作。如果有人无意中听到细节,那就没关系了,只要你知道那是你期望给他们的人。
还有一种更为高效的方式来处理只有你和B知道的秘密。 OTR有一种模式,可以让问题设计引出一个秘密,使得M无法为你提供正确的答案,只有B可以。 M将能够听到B提供的答案,但无法将其提供给你。
答案 4 :(得分:1)
OTR 交换信息。您必须接受其他人的密钥并验证其是否可信。然后它就会恢复正常的非对称加密。其中......归结为验证给你钥匙的人和你想要谈话的人是同一个人。这里没有什么神奇的事情发生。
答案 5 :(得分:1)
您可以使用公钥进行编码,但必须使用私钥进行解码。
因此,如果两个人拥有公钥并彼此共享,那么他们可以共享只能使用接收者的私钥解码的信息。
答案 6 :(得分:1)
公钥加密的工作原理如下:您可以自由地提供公钥。人们使用您的公钥来加密只能使用您的私钥(您不共享)解密的邮件。您的私钥就像解密信息时使用的“缺失部分”,因为它是实际上可以解密任何内容的等式的唯一部分。如果有人使用您的公钥加密某些内容,则您之后无法使用公钥来解密数据。这是通过使用非常大的素数和一些非常具体的方程来实现的。
答案 7 :(得分:1)
你问过两个问题:
有多种方法可以安全地交换密钥,例如使用Diffie Hellman protocol。即使攻击者正在收听所有消息,它也是安全的。
使用公钥加密,每个密钥都有一个公共密钥和一个秘密组件。使用公共组件,您可以加密或验证签名,使用秘密组件,您可以解密或创建签名。有很多数论可以看出它的工作原理,但值得学习。