客户端 - 服务器游戏安全架构

时间:2013-08-18 11:22:36

标签: iphone security client-server

我目前正在设计分布式iOs游戏。它必须包含一种身份验证(我认为用户名,密码对,但如果你有,请告诉我其他想法)。我计划通过一个用Perl编写的简单RESTful API来实现。

我知道这是一个经典问题。我在网上看到很多帖子都在谈论如何安全地做到这一点。但是,过多的信息会破坏其信息目标。所以,我有点迷茫。尽管如此,我还是试图指出基本概念,即:

  • 使用SSL(因此使用https url),它允许您不考虑加密
  • 使用服务器和客户端之间共享的嵌入式私钥,但如何嵌入它们是个问题!它允许使用HMAC并进行某种身份验证。
  • 忘记绝对的安全性(因为你通过默默无闻来使用安全性):如果有人可以通过反编译你的应用来破坏你的安全性,你就会遇到问题!

以下是问题:

  • 如何分享私钥?
  • 要发送到服务器的内容?用户名/密码已加密?一些api键?
  • 我是否有正确的方法(确保个人安静的api)?

谢谢!

1 个答案:

答案 0 :(得分:1)

首先,这是一个相当广泛的问题。所以它可能会因此而关闭。

尝试将您的问题细分为子问题/子注释

1)正如你所指出的,首先也是最重要的。没有绝对的安全。你应该定义什么是有价值的(你想要保护什么)以及你想要保护谁:

  • 未经授权的用户
  • 具有应用程序内在知识的未经授权的用户(逆向工程)
  • 具有应用程序内在知识的授权用户(逆向工程)

1)https是“必须”。正如您所知,您不必担心隐私和诚信。

2)在大多数情况下,应用应发送用户名和普通密码。该密码应该由服务器进行散列(不要忘记添加一些盐),并与数据库中存储的散列进行比较。

3)我认为您不需要在客户端和服务器之间共享任何私钥,原因如下:

  • SSL确保隐私(因此没有人可以窃听)
  • 使用硬编码的共享密钥加密任何参数都无济于事(可以从您的应用程序进行逆向工程和提取)