有一款老游戏只使用 UDP 进行通信,我想在游戏中添加密码验证,以方便经验值和排名之类的事情。为此,我决定使用现有游戏协议的扩展通过 UDP 通信的 SRP-6a 实现,我最终在游戏客户端使用cocagne/csrp,通过游戏服务器和mozilla/身份验证服务器端的node-srp,稍作修改以产生与csrp兼容HAMK
的后续响应。
到目前为止,它运行得相当好,但是我不喜欢验证器是如何存储在静止状态的,因为在计算x
输入的过程中,在变成验证器之前,它似乎只被散列一次v
,见这里。我建议我们更改这个库函数以满足我们的需要(因为它相当小并且已经在树中)并使用沿 PBKDF2 行的东西。然而,我从另一位开发人员那里得到了(可以理解的)关于触摸这种性质的代码、善意等等的回击。
相反,建议用户的密码本身可能会经过 PBKDF2 散列,然后作为密码传递给验证程序创建和用户质询功能。这样,我们就不必修改 csrp 库本身的任何代码。这是一种有效的方法吗?或者,如果我们这样做,是否还有另一个陷阱在等着诱捕我们?
对于它的价值,完整的协议文档在这里,所以如果我正在制造任何其他类型的混乱,很高兴知道。