如何在两方之间安全地交换 RSA 公钥?

信息安全 密码学 密钥交换
2021-08-21 08:25:29

如何通过互联网在两方之间安全地交换 RSA 公钥

3个回答

给自己一个可信的密钥。两个最简单的选择是 SSL 证书(50..100 美元)和 GPG 密钥(免费)。

使用该密钥对您发送的数据进行加密或签名。使用 SSL,您可以通过 https 提供您的数据,但也可以对其进行签名。使用 GPG,您必须为您的密钥建立足够的信任,以便接收端确定是您而不是冒名顶替者。

另一种选择是为你的 SSH 服务器创建一个公钥,发布它,然后让人们从那里 SCP 你的数据。通过普通邮件向他们发送您的 SSH 密钥指纹或通过 Skype/电话口头告知。冒名顶替者必须伪造您的密钥、已知域名上的服务器以及您的电话/Skype/SIP 联系人;这应该足以阻止这种尝试。

有几个简单的选择。

  1. 将密钥或其他数据放在 Internet 上的任何位置,通过 SHA-256 或其他一些像样的哈希计算指纹,并与对方进行带外指纹通信:通过电话、短信或电子邮件如果您不太担心其他人拦截电子邮件。

  2. 让双方都信任的第三方为密钥或其他数据提供担保。他们可以通过密钥上的 PGP 签名(经典的信任网络)或 X.509 证书中的密钥上的 CA 签名,或者通过在 SSL 站点上为密钥提供指纹来做到这一点。如果您走 CA 路线,请注意已部署的浏览器隐式信任数百个 CA,并且很难知道或指定您真正信任哪一个。如果您需要高安全性,请参阅此以获得更多讨论:如何CA被黑客入侵可行吗?我应该删除哪些默认的受信任根证书?”。

当然,您的偏好将取决于它是什么类型的密钥、您将其发送给谁、您打算如何使用它、您的威胁是什么样的、您使用它来保护什么等等。

电子邮件,在论坛上留言,真的是你想要的任何方式。这个想法是任何人都可以知道公钥,这并不重要。

编辑:请注意,这假设您只希望他们能够向您发送加密消息,而其他人无法阅读。如果你想保证发件人,而不是试图保持公钥私有(这违背了目的,你也可能不使用 RSA),让他们使用例如他们自己的 RSA 密钥对消息进行签名。

或者失败了,使用他们的 RSA 公钥之类的东西加密密钥,这样他们就可以解密它。