security - 两方加密如何工作?

标签 security encryption

例如,使用 pidgin otr,我能够与任何人进行通信并且它是安全的。
我们没有交换 key 或其他任何东西,程序只是设置了加密,每个人都向我保证它是安全的。

所以我所拥有的是:

Person1 与 Person2 交谈(假设人们真的是他们所说的人)

由于 person1 和 person2 之间从未交换过任何信息,如何阻止 badperson3 拦截所有流量并解密所有消息?

我阅读了 PGP,了解每台机器如何拥有在两台计算机之间共享的私钥和公钥,但我不完全了解它是如何工作的。不像 person2 可以使用 person1 的私钥对消息进行编码,如果它使用公钥,任何人都可以解密。

我有点困惑。

最佳答案

在不涉及技术细节的情况下,像 RSA 这样的公钥加密的整个想法是,公钥可用于加密数据,但不能用于解密刚刚加密的内容(当然,在不破坏加密的情况下 - 在这种情况下RSA,通常意味着分解两个大素数的乘积)。

当然,仍然有一些数据交换:您仍然需要获得一个人的公钥,然后才能使用该公钥加密数据。还值得注意的是,公钥加密通常比对称加密慢很多。在这种情况下,大多数使用公钥加密的协议(protocol)都试图尽量减少使用公钥算法加密的数据量。通常,发送者会选择一个大小合适的随机数作为对称算法的 key ,用公钥算法对其进行加密,然后将其发送给接收者。其余数据使用该 key 通过对称算法进行加密。

因此,在典型情况下,您要检索公钥,然后生成、加密和发送私钥,然后发送使用该私钥加密的数据。

关于security - 两方加密如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2164341/

相关文章:

c# - 如何构建这个允许多个用户/对象的加密系统

java - 使用 RSA 和另一个 key 加密消息

PHP、x-cart、潜在的安全漏洞

security - 解决方案异常 : Error loading class 'solr.RunExecutableListener' + '/var/tmp/sustes' process

c# - 标记通过网站发送的诈骗电子邮件的算法

html - 如何加密表单中的 HTML 字段,然后在服务器上对其进行解密?

amazon-web-services - AWS S3 如何为之前存在的对象启用 S3 对象加密

java - IBM Domino 上是否有 Java API 可以加密/解密服务器上的 Notes 项目?

iOS 应用传输安全 : Allow certain IP addresses in Info. plist

security - 具有同源策略和 OAuth 的 REST API 身份验证