使用ASP.NET MVC 3创建SECURE高分服务

Tom*_*Tom 7 c# asp.net encryption windows-phone-7 asp.net-mvc-3

我已经对这些问题进行了大量研究,但似乎无法找到我正在寻找的东西.基本上我已经为WP7创建了一个游戏,我想让它连接到我创建的服务,以发送高分并获得排行榜.现在服务很简单,只需要一个玩家姓名和得分的字符串格式.

我已经看过很多关于如何加密和解密数据的教程,但它们似乎都是根据用户信息生成一个密钥,通常只是本地的例子.我不是必须使用我用来加密应用程序端数据的相同密钥,以便我可以在服务器端解密它吗?我是否在应用程序和服务器上创建自己的密钥?我如何保护该密钥?

我一直在搞乱使用这种方法将加密字符串发送到我的服务:http: //robtiffany.com/windows-phone-7/dont-forget-to-encrypt-your-windows-phone-7-data/

但由于密钥生成,我真的很困惑如何在应用程序端和服务器端同步该进程.

如果有人创建了高分服务并且有一些非常有用的提示.

Tom*_*cek 2

如果你想让它真正安全(这可能不需要),那么情况就很棘手 - 你必须假设玩家可以访问你的应用程序的源代码(因为他/她可以反编译它)并且还可以访问存储在应用程序或手机中任何位置的所有密钥。这意味着,如果您的应用程序使用手机上存储的密钥对分数进行加密,那么攻击者就可以使用虚假分数执行相同的操作。

为了使其真正安全,您可能需要将一些游戏日志发送到服务器,并且服务器必须验证该日志是否是完成游戏的合理方式(即游戏可以以这种方式进行) )。为了在这个系统中伪造分数,攻击者必须生成游戏日志——这意味着创建一个可以比人类更好地玩游戏的人工智能(以获得更好的分数)。这可能仍然是可能的(如果游戏对计算机来说很容易的话),但我想不太可能有人会打扰。

在实践中,我认为您可以在分数编码方式中添加一些混淆(例如,在服务器和客户端上使用具有相同密钥的对称加密)。如果有人查看通过网络发送的数据,他们将无法轻易伪造更好的分数。如果他们反编译应用程序,那么他们仍然可能会这样做,但这可能不太可能(并且您可以偶尔手动检查分数以查看是否有可疑的内容)。

[编辑:我不是WP7专家,所以WP7可能提供了一些特殊的东西,但原则上它仍然会遇到同样的问题]