Algorithm 快速与安全之间的平衡:时间敏感密码加密算法

Algorithm 快速与安全之间的平衡:时间敏感密码加密算法,algorithm,authentication,encryption,performance,client-server,Algorithm,Authentication,Encryption,Performance,Client Server,我正在做一个clientserver多人游戏。身份验证与所有游戏逻辑等在同一台服务器上完成。这意味着我的身份验证密码加密算法不会占用太多计算时间,因为它会延迟所有其他必需的操作。如果许多人同时登录,当与需要大量时间处理的非常强大的加密算法一起使用时,会导致明显的延迟 这就是为什么我要寻找一种平衡:一种仍然可靠、不易破解但足够快的加密算法,可以在同一台服务器上执行。您推荐什么?事实上,只要使用得当,AES的任何强度都可能满足您的需要。 首先,要执行身份验证,不需要加密密码;存储加密密码会让您的用

我正在做一个clientserver多人游戏。身份验证与所有游戏逻辑等在同一台服务器上完成。这意味着我的身份验证密码加密算法不会占用太多计算时间,因为它会延迟所有其他必需的操作。如果许多人同时登录,当与需要大量时间处理的非常强大的加密算法一起使用时,会导致明显的延迟


这就是为什么我要寻找一种平衡:一种仍然可靠、不易破解但足够快的加密算法,可以在同一台服务器上执行。您推荐什么?

事实上,只要使用得当,AES的任何强度都可能满足您的需要。


首先,要执行身份验证,不需要加密密码;存储加密密码会让您的用户面临风险,我强烈建议不要这样做。因为用户是无知的,他们很可能会对他们的银行帐户和你的游戏使用相同的密码。通过妥善保管密码,帮助他们保持安全

相反,存储一个不可逆的密码散列和一个随机salt。关于如何在StackOverflow上实现这一点,有很多问题,其中一些答案几乎是正确的

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

我推荐的保护密码的算法实际上是一个名为PBKDF2 PBKDF1的密钥派生算法,它也可以工作,这在PKCS 5中有描述。这些算法的调整参数之一是迭代次数。您可以在服务器上分析算法,并调整迭代次数,直到找到满足性能要求的迭代次数。即使是我的笔记本电脑每秒也可以执行数千次迭代,所以我可能从2000次左右开始工作

如果您实际上谈论的是对客户端和服务器之间的所有通信进行加密,请使用AES。它之所以被选中是因为它的速度,尽管竞争中的其他一些密码可能更安全。具体来说,在SSL连接中使用AES密码套件


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

您应该弄清楚您是在寻找用于哈希密码的加密哈希算法,还是通用密码。此外,听起来您是从头开始编写身份验证。仔细地考虑并使用成熟的例子,使用众所周知的加密方法来避免许多微妙的陷阱。我所说的是客户端加密,然后是服务器端解密。我不知道如何与认证密码加密算法相匹配。您可能需要详细说明一下协议的工作原理。我认为您需要的可能是一个挑战-响应协议,这可能会加快进程,因为您不需要设置会话机密和/或设置密钥调度(如果适用)。不要从头开始设计。该名称表示它用于单向哈希?不是双向加密和解密吗?