gpt4 book ai didi

c - 使用哈希的 Shell 安全性

转载 作者:太空宇宙 更新时间:2023-11-04 04:01:41 25 4
gpt4 key购买 nike

出于教育目的 我正在实现一个简单的远程 shell 程序,并且我正在努力思考如何使其安全一些。我的第一个想法是只需要一个密码。如果客户端发送密码,它运行,如果没有,它退出。然后,我对密码应用了一个简单的散列函数,但我认为这并没有真正提高密码的安全性。在任何一种情况下,如果数据包被拦截,攻击者就可以提取密码或散列密码。 我该怎么做才能使它更安全 有没有一种方法可以使用安全的密码/散列来防止基本数据包拦截?我知道 ssh 使用公钥/私钥来加密和解密,但这比我需要的更高级。

最佳答案

使用摘要进行挑战/响应怎么样?假设服务器知道密码是 "blah"

客户端连接并验证:

  • 客户:让我进去!
  • 服务器:我给你挑战“12345”,一个我刚刚生成的数字!

    服务器记得他们给了客户端“12345”

  • 客户端想要使用"blah" 进行身份验证,因此他们将其添加到服务器质询的末尾,然后计算结果的 SHA-1 “12345blah”

    客户:我的回复是"6910972fb3148a63df7fda34bd6fccf3013d8d93"!

  • 服务器知道密码是 "blah",并向此客户端发出挑战 "12345" — 因此它计算 SHA-1 “12345blah”,并生成 “6910972fb3148a63df7fda34bd6fccf3013d8d93”。这与客户的响应相匹配,所以……

    服务器:访问已获准!

重要提示:

  • 服务器必须是选择挑战的人。如果客户端可以选择,那么攻击者可以只拦截一次身份验证尝试,并重复与该有效用户相同的质询和响应。

    服务器每次都选择不同的质询这一事实意味着攻击者无法重播身份验证。这意味着服务器需要以某种方式存储针对客户端连接或 session 的质询,因为当他们响应时您将需要它。

  • 您可能想要使用比 SHA-1 更强大的东西(它有点损坏 IIRC)。您可能还想做一些事情,而不仅仅是将密码附加到质询中,因为安全属性取决于底层的摘要函数。

  • 我用密码 "blah" 进行了演示,但现在的好处是,您可以将 "blah" 替换为 的哈希值“废话”。服务器永远不需要存储比散列更多的东西,然后客户端只需先散列他们的密码,然后再结合质询和计算摘要。

关于c - 使用哈希的 Shell 安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10892595/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com