在使用需要为其玩家提供帐户的游戏时,我试图了解安全问题。
使用自签名证书有什么问题?
如果我正确理解了这个问题,只是如果服务器私钥被泄露,用户仍然会信任证书,窃取密钥的人可能会窃取他们的密码。(直到游戏使用新证书更新。)
但这是唯一的问题吗?如果是这样,攻击者真的有可能从具有密集防火墙的服务器上窃取私钥(只打开尽可能少的端口吗?)。
当客户想要进行身份验证时,我对游戏的想法如下:
- 客户端使用自签名证书的公钥使用 RSA 加密其用户名和密码。
- 客户端将此加密消息发送到服务器。
- (所以这里技术上只有主服务器可以读取消息,除非自签名证书被泄露)
- 服务器使用自签名证书中的私钥读取消息
- 然后在这里服务器做经典的事情,检查数据库是否存在用户名,然后用 bcrypt 之类的东西对密码进行哈希处理并检查密码是否正确,然后他将客户端设置为经过身份验证的状态,现在可以访问其他功能,比如加入游戏服务器,访问服务器列表等...
基本上我需要让客户信任公钥!因为如果主服务器将它的公钥发送给客户端,那么中间的人可以拿走它,为自己生成一个公钥/私钥并发送它的公钥。所以现在客户可能认为他在与服务器交谈,但实际上他与中间的人交谈。我想错了吗?