首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSL认证的用户如何通过UDP数据包证明真实性?

SSL认证的用户如何通过UDP数据包证明真实性?
EN

Security用户
提问于 2014-02-15 20:10:52
回答 2查看 8.3K关注 0票数 6

我选择SSL在游戏客户端注册。客户端与游戏服务器进行通信,该服务器存储一个咸/散列密码。

如果我在登录时使用SSL对用户进行身份验证,但是游戏完成了与UDP数据包的所有通信,那么服务器如何知道它接收的UDP数据包来自经过身份验证的用户?

请注意,我最感兴趣的是确保对用户进行身份验证。我不关心UDP数据包的隐私。

EN

回答 2

Security用户

发布于 2014-02-16 05:11:48

安全的方法是使用DTLS:这是应用于UDP的SSL/TLS。

不太安全的方法是发明你自己的协议。在这种情况下,由于您只担心身份验证,所以情况会是这样的:

  • 客户端和服务器进行一些正常的SSL,并在该SSL中运行身份验证协议。
  • 客户机和服务器在该隧道内交换对称密钥K(例如,客户端随机生成K并将其发送到服务器)。
  • 客户端发送的每个UDP数据包都使用密钥K使用MAC (例如HMAC)进行身份验证。服务器使用K来验证包确实来自客户端,并且在传输过程中没有被更改。
  • 每个数据包都必须包含一个序列号,并且服务器必须保持对上一个接收到的数据包的一些了解(为无序数据包设置一个窗口),以便服务器能够注意到数据包何时被丢弃、复制、重排序或重放。

正确的包管理以避免重放攻击是一个微妙的问题;将该任务留给已经实现的DTLS库是明智的做法。

票数 10
EN

Security用户

发布于 2014-02-15 22:34:22

我不认为你有什么不清楚的地方。要进行SSL身份验证,谁是证书持有者、客户端还是服务器?看来持有证书的客户是合理的。在这种情况下,服务器必须拥有此证书的公钥。因此,实现身份验证的一个简单方法是对UDP包的序列号和一些带有私钥的随机字符串进行加密。因此,如果服务器能够解密UDP中的签名,它将确保包确实来自客户端。

票数 -1
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/51590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档