为MMO登录服务生成安全令牌的算法

时间:2010-10-19 04:48:03

标签: c++ security authentication encryption

我正在为开源MMO游戏构建登录服务。我不太了解安全/加密方面的问题,我正在寻找能够提供良好保护以防黑客攻击的解决方案,并且不能太昂贵而无法生成。

我们的旧系统使用一个非常简单的身份验证系统,将密码存储为数据库中的SHA1。对于我们的新服务,我们希望通过在用户首次登录时生成并在整个会话期间生成的身份验证令牌对此进行身份验证。一个简单的随机生成的字符串是否足以满足这一要求,或者我应该考虑一些更复杂的东西来保证它的安全性?

3 个答案:

答案 0 :(得分:4)

不要重新发明轮子。现代密码术的最大问题是人们想要自己动手,使用SSL / TLS或HTTPS。如果您对自签名证书进行硬编码,则无需购买证书即可安全地完成此操作。虽然每个服务器都应该有自己的证书,否则您将面临MITM的风险。

您正在寻找的是会话处理程序,理想情况下您将使用witty library。但是这个库可能适合也可能不适合。简而言之,会话处理程序使用Cryptographic Nonce作为键,此键用于在持久数据存储中查找会话状态。每次用户进行身份验证时,都会为其提供一个新的加密随机数,并且该值在设定的不活动时间后过期。对于nonce生成,我会使用openssl library,并且256字节的大小应该足够。超时取决于您的应用程序,但不应超过1天。

答案 1 :(得分:2)

  • 规则1:不要试图建立自己的单点登录。
  • 规则2:如果受到诱惑,请参阅规则1.

有许多免费提供的系统。考虑使用OpenID。它很简单,非常强大,而且是免费的。

PS。请查看Wiki文章。

答案 2 :(得分:1)

系统中存在如此多的攻击媒介。正确解决这些问题非常复杂。第一步肯定是确保你没有重新发明轮子,它会节省你的时间,并可能防止一系列错误。

我最近建立了一个系统。在我的情况下,我不需要保密,我只需要真实性。我在openssl的加密库之上构建了我的系统。我主要使用DSA algorthim。通信已通过附加到所有通信的签名进行验证。这样做并不是特别有效但是为了我的目的,沟通是不规则的,因此它很好。相关密钥随软件一起分发,用于生成DSA签名的通信。