我正在使用 Botan 实用程序来执行加密。当我使用 SSH 初始化与远程机器的连接时,我能够通过安全的 SSH 连接交换 key 。但是,有时我使用inetd建立连接,在这种情况下,inetd连接没有安全性,但我需要使用它与远程机器交换 key 。
我想这有一些标准,我通过不安全的 channel 发送公钥,远程端使用它来加密 key 以通过不安全的 channel 发送回我,然后我可以解密以获得 key 。
Botan 支持的这种协议(protocol)的示例是什么?
最佳答案
如果没有以前的信任,或者没有通过辅助 channel 进行沟通,就没有办法做到这一点。 Diffie-Hellman kex 允许您建立一个安全的 channel ,以防止其他不参与连接的人,但您无法验证您正在与预期的接收者进行通信。
经典 MITM例如:您连接到某个远程端点,它会接收您的公钥并向您发送使用该 key 签名的内容。但是,您无法验证您是否已将 key 发送到真正的目的地,或者响应是否来自攻击者 - 因此,您有一个安全的隧道,但您没有与谁进行安全通信的信息(攻击者甚至可以连接到您的预期目的地并代理流量,这些流量未经加密地通过他)。
为确保您确实在与预期的端点进行通信,您需要事先或通过安全 channel 交换某种主机标识。 SSH 使用“指纹”执行此操作 - 它会在第一次连接时询问您是否信任该主机,并且您应该通过独立 channel 验证指纹。
关于ssh - 通过不安全的连接发送加密 key 的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4239128/