我正在开发一个客户端<!> lt; <!> gt;服务器多人游戏。身份验证在与所有游戏逻辑等相同的服务器上完成。这意味着我的身份验证密码加密算法不会花费太多的计算时间,因为它会延迟所有其他所需的操作。如果许多人同时登录,那么在使用非常强大的加密算法时会导致明显的延迟,这需要花费大量时间来处理。

这就是我寻找平衡的原因:加密算法仍然可靠且不易破解但速度足以在同一台服务器上执行。你推荐什么?

有帮助吗?

解决方案

首先,要执行身份验证,您不需要<!> quot; encrypted <!>;密码;存储加密密码会使您的用户面临风险,我强烈反对。由于用户无知,他们可能会为自己的银行帐户和游戏使用相同的密码。通过妥善保管密码帮助他们保持安全。

相反,存储不可逆的<!>“hash <!>”;密码和随机<!>“salt <!>”;关于如何在StackOverflow上执行此操作有很多问题,他们的几个答案几乎是正确的。

您问题的一个独特之处在于您特别关注身份验证过程的性能。这是一个有趣的问题,因为一个好的密码保护方案实际上设计得有点慢。这是为了打败试图在<!>“离线<!>”中猜测密码的攻击者。攻击,他可以测试数十亿的密码。算法越慢,他的尝试次数就越少。

我建议用于保护密码的算法实际上是一种称为PBKDF2的密钥派生算法(PBKDF1也可以使用),这在PKCS#5中有描述。这些算法的调整参数之一是多次迭代。您可以在服务器上分析算法,并调整迭代次数,直到找到满足性能要求的数字。即便我的笔记本电脑也可以每秒执行数千次迭代,所以我可能从大约2000年开始,然后在那里工作。

如果您实际上在谈论加密客户端和服务器之间的所有流量,请使用AES。它被选中是因为它的速度,即使竞争中的其他一些密码可能更安全。具体而言,在SSL连接中使用AES密码套件。

安全连接的费用是在建立会话时发生的密钥协议(或密钥传输)。正在进行的加密(和消息完整性计算)增加了很少的开销。

其他提示

实际上,正确使用的任何AES强度都可能适合您的需求。 您还可以购买硬盘卡来大幅加速AES。

热门加密算法的速度比较

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top