* 澄清:我的问题涉及在双方之间建立一个“安全”的沟通渠道,其中一个密钥(阅读密码)已在现实世界中达成一致。只使用RSA允许MITM攻击(如果我没有被误解),所以我在考虑用AES(两者已经同意的密钥)加密公钥,然后再将它们发送给各方*
我目前正在尝试构建两个与彼此交谈的应用程序。为了保护交换的消息,我正在考虑使用RSA,其中每个应用程序都有自己的密钥集。
在两个应用程序之间开始通信之前,他们需要交换密钥。这不应该是一个问题,但我正在考虑使用AES加密公钥,然后再通过互联网发送。
我知道public(在公钥中)这个词意味着什么,但我认为这会让正确的应用程序/计算机获得密钥而不是其他人。
所以我想交换密钥并保护他们免受MITM攻击。
如果有人能提出更好的建议(我正在使用LibCrypto库),我全都听见了。
谢谢。
祝你好运 / Tomas Gustavsson
答案 0 :(得分:1)
这个问题表明了你的许多误解。
我知道公共(如公钥)中的含义是什么,但我是 认为这会看到正确的应用程序/计算机 获得钥匙而没有其他人。
我认为这是你遇到的真正问题 我认为:您如何知道您正在使用您实际想要与之通信的实体的公钥而不是声称是您想要与之通信的恶意实体的公钥?
此问题在典型安装中由受信任机构签署并颁发给特定实体即IP或DNS名称的证书解决。
在您的情况下,您没有提供证书的任何详细信息。
您也可以手动预先安装它们并将它们用于安全连接。
如果您遵循其他计划,例如对称加密然后你会开始问其他问题,例如你如何安全地分享密钥等