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

我正在使用 Botan 实用程序来执行加密。当我使用 SSH 初始化与远程机器的连接时,我能够通过安全的 SSH 连接交换 key 。但是,有时我使用inetd建立连接,在这种情况下,inetd连接没有安全性,但我需要使用它与远程机器交换 key 。

我想这有一些标准,我通过不安全的 channel 发送公钥,远程端使用它来加密 key 以通过不安全的 channel 发送回我,然后我可以解密以获得 key 。

Botan 支持的这种协议(protocol)的示例是什么?

最佳答案

如果没有以前的信任,或者没有通过辅助 channel 进行沟通,就没有办法做到这一点。 Diffie-Hellman kex 允许您建立一个安全的 channel ,以防止其他不参与连接的人,但您无法验证您正在与预期的接收者进行通信。

经典 MITM例如:您连接到某个远程端点,它会接收您的公钥并向您发送使用该 key 签名的内容。但是,您无法验证您是否已将 key 发送到真正的目的地,或者响应是否来自攻击者 - 因此,您有一个安全的隧道,但您没有与谁进行安全通信的信息(攻击者甚至可以连接到您的预期目的地并代理流量,这些流量未经加密地通过他)。

为确保您确实在与预期的端点进行通信,您需要事先或通过安全 channel 交换某种主机标识。 SSH 使用“指纹”执行此操作 - 它会在第一次连接时询问您是否信任该主机,并且您应该通过独立 channel 验证指纹。

https://stackoverflow.com/questions/4239128/

相关文章:

haskell - 关于Cygwin中Haskell程序的stdout缓冲区的问题

exception - 如何在事务中从 Grails 中的数据库错误中恢复

grails - 在Grails应用程序的主页中更改用户的语言环境

angularjs - AngularJS 模板中的 Grails Assets 图像

ssh - 如何为集群创建自动 "ssh"

shell - 自动输入shell密码的方法?

android - 无法将android中的POST请求发送到Grails后端

grails - Grails错误:表或​​ View 不存在

security - SSH key 交换

git - 如何设置对 ssh git 服务器的只读访问权限?