Tom*_*Tom 0 authentication encryption algorithm performance client-server
我正在开发一个客户端<>服务器多人游戏.身份验证在与所有游戏逻辑等相同的服务器上完成.这意味着我的身份验证密码加密算法不会花费太多的计算时间,因为它会延迟所有其他所需的操作.如果许多人同时登录,那么当使用非常强大的加密算法时会导致明显的延迟,这需要花费大量时间来处理.
这就是为什么我在寻找一种平衡:一种加密算法,它仍然可靠,不易破解但速度足以在同一台服务器上执行.您有什么推荐的吗?
首先,要执行身份验证,您不需要"加密"密码; 存储加密密码会使您的用户面临风险,我强烈反对.由于用户无知,他们可能会为自己的银行帐户和游戏使用相同的密码.通过妥善保管密码帮助他们保持安全.
相反,存储密码的不可逆"哈希"和随机的"盐".关于如何在StackOverflow上执行此操作有很多问题,他们的几个答案几乎是正确的.
您唯一的问题部分是您特别关注身份验证过程的性能.这是一个有趣的问题,因为一个好的密码保护方案实际上设计得有点慢.这是为了打败一个试图在"离线"攻击中猜测密码的攻击者,他可以在那里测试数十亿个密码.算法越慢,他可以做的尝试越少.
我推荐用于保护密码的算法实际上是一种称为PBKDF2的密钥派生算法(PBKDF1也可以使用),这在PKCS#5中有描述.这些算法的调整参数之一是多次迭代.您可以在服务器上分析算法,并调整迭代次数,直到找到满足性能要求的数字.即使我的笔记本电脑每秒可以执行数千次迭代,所以我可能从大约2000年开始并从那里开始工作.
如果您实际上在谈论加密客户端和服务器之间的所有流量,请使用AES.它被选中是因为它的速度,即使竞争中的其他一些密码可能更安全.具体而言,在SSL连接中使用AES密码套件.
安全连接的费用是在建立会话时发生的密钥协议(或密钥传输).正在进行的加密(和消息完整性计算)增加了很少的开销.
| 归档时间: |
|
| 查看次数: |
813 次 |
| 最近记录: |