Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Authentication 如何以安全的方式对客户端连接进行身份验证?_Authentication_Ssh_Client Server - Fatal编程技术网

Authentication 如何以安全的方式对客户端连接进行身份验证?

Authentication 如何以安全的方式对客户端连接进行身份验证?,authentication,ssh,client-server,Authentication,Ssh,Client Server,假设我有一台服务器在端口1234上侦听。我有一些客户端软件需要能够连接到此端口。但是我想防止恶意用户绕过客户端软件,通过其他方式连接到端口,例如在控制台或其他软件中 如有必要,受信任的客户端软件和服务器可以共享密钥。我不希望以明文形式发送这样的密钥,但身份验证后的数据可以以明文形式发送。具体来说,我正试图找出如何击败中间人攻击,恶意用户正在使用受信任的客户端软件计算对服务器挑战的正确响应 我能从这里到那里吗 我可以让服务器的侦听端口仅绑定到localhost,并要求客户端首先通过ssh访问机器。

假设我有一台服务器在端口1234上侦听。我有一些客户端软件需要能够连接到此端口。但是我想防止恶意用户绕过客户端软件,通过其他方式连接到端口,例如在控制台或其他软件中

如有必要,受信任的客户端软件和服务器可以共享密钥。我不希望以明文形式发送这样的密钥,但身份验证后的数据可以以明文形式发送。具体来说,我正试图找出如何击败中间人攻击,恶意用户正在使用受信任的客户端软件计算对服务器挑战的正确响应

我能从这里到那里吗

我可以让服务器的侦听端口仅绑定到localhost,并要求客户端首先通过ssh访问机器。然后客户端软件可以使用ssh库在连接到本地端口的服务器上运行命令。在这种情况下,恶意用户将无法使用ssh访问计算机,因为他没有密码。但是我所有的流量都被加密了,这是额外的开销。也许有一个类似于ssh的程序,它只进行身份验证,然后以明文形式离开通道

更新: 我运行了一个测试来确定与加密所有流量相关的开销

rb输出1000万行100个字符

控制:

fantius@machine> time /home/fantius/spew.rb > /dev/null

real    0m35.015s
user    0m34.934s
sys     0m0.084s
顶部显示25%的cpu使用率一个完整的内核,共四个内核

测试:

顶部显示了45%的cpu使用率几乎两个完整的内核


所以我很难接受加密所有东西的成本都很低的观点。诚然,这是一个数据量非常大的测试。

您为保护链接所做的任何事情都可能/将被破坏。你可以使用SSL来防止链接被嗅探,你可以在应用程序中嵌入密钥。但是,这些密钥在用户手中,无论您如何努力隐藏它们,它们都可以被提取出来。你最多可以让恶意用户很难模拟/替换/绕过你的远程应用程序。你永远不能让它不可能

SSL开销最小-初始握手的开销通常比以后实际传输数据的开销更高。如果您保持链接打开,握手开销将成为一次性的事情,并且在长会话中是无关紧要的。如果重新协商密钥,偶尔会出现突发开销,但在长期链接上,这是最小的


至于中间人,你几乎无能为力。银行已经有足够多的麻烦了,就像特洛伊木马把人们的账户榨干一样。如果有人在中间,他们可以做任何他们想做的事。有了足够的监控,他们就可以复制你的整个通信协议,复制你的应用程序。

如果你能从二进制文件中提取密钥,你就可以获得完全访问权——我同意。据我所知,ssh在某种程度上抵抗中间人攻击,至少比要求客户端解决服务器发出的挑战的简单系统更能抵抗中间人攻击。但我不知道这种额外阻力的性质。如果入侵者在用户的系统上,他们可以将自己插入TCP堆栈并在数据流到达SSL层之前捕获数据流。中间并不意味着确切的中间,它只是指两个端点之间的任何地方。服务器上的入侵者也是如此。他们可以捕获来自SSL层的数据。表示旧SSH比新SSH更容易受到MITM的攻击。我试图理解的正是这种对MITM的新抵制。请参阅我的问题更新,以回应您关于SSL开销最小的评论。我刚刚意识到您说的是SSL,我的测试是SSH。我不确定如何使用SSL进行上述测试。我怀疑结果会有很大不同。
fantius@machine> time ssh localhost /home/fantius/spew.rb > /dev/null

real    0m40.704s
user    0m19.981s
sys     0m1.400s