客户端验证算法?

时间:2013-12-01 02:45:51

标签: c++ c algorithm security client-server

这是我想要做的。

我有游戏和服务器可执行文件。客户端连接到服务器以进行播放。

我目前担心的是有人可能会使用telnet或其他东西来模拟客户端。

目前,用户在连接后只发送一个简单的hello字符串,如果正确,我接受来自它们的数据。

我试图使用证书/ ssl但没有成功,所以我试图找出一种有效的方法来了解游戏客户端是否真的是一个客户端。

简单地说,验证客户端的有效方法是什么?

我不关心中间人攻击中的人,因为用户不登录也不提供密码,只是会话名称。

我想到了服务器发送固定长度随机字符串的可能性,然后客户端用算法修改了这个字符串,然后将其发回。

我想知道是否有比这更聪明的方法。

我确实为我的服务器提供了证书,如果有帮助的话,它是一个pfx。

由于

1 个答案:

答案 0 :(得分:1)

它本质上很难成为一个问题。当然,没有可以编写的软件,可以运行在foriegn机器上,这可以证明它是以未经篡改的形式编写的程序。

但是,你可以采取一些简单的挑战回应来改善事情。

让我们假设你的客户和你的服务器共享一个秘密(你写它,所以他们可以,虽然它是软件,但它不会非常秘密。)让我们假设你有一个很好的地穴或哈希库(对于像SHA-1这样的东西)哈希)然后:

  • 服务器发送质询,包括现时(例如时间+随机数)。
  • 客户端发送响应,其中包含(nonce + secret)
  • 的安全散列
  • 服务器知道nonce和secret,所以他们可以检查收到的hash是否正确,从而可以确认“client”也知道秘密。

这是一种基本的对称验证方案。