ssh - 通过不安全的连接发送加密 key 的方法?

标签 ssh public-key-encryption inetd botan

我正在使用 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/

相关文章:

ssh - 无需再次登录即可复制 SSH 终端窗口

linux - 如何使用 nohup 通过 ssh 在远程服务器上执行本地 bash 脚本

cryptography - 如何从 OpenSSL 中的 ECDSA 私钥获取公钥?

java - 如何通过xinetd从java服务器获取客户端IP?

network-programming - 使用inetd 还是不使用inetd...我什么时候应该将inetd 用于我的网络服务器程序?

ssh - Ansible SSH 转发似乎不适用于 Vagrant

git - 使用 Ansible 进行 SSH 代理转发

python - 如何使用 Python 通过证书颁发机构验证公钥?

git - 通过 SSH git push 设置环境变量

c++ - 当正常方法失败时如何在 Linux 上找到可执行文件的位置?