2

我目前正在编写一个小型客户端/服务器软件,服务器在 PC/Mac (Java) 上运行,客户端在 Android 上运行。客户端正在向服务器发送许多小数据包,其中低延迟很重要,单个数据包丢失并不重要,这就是我想使用 UDP 的原因。

问题是我想要一些身份验证,因为服务器应该只接受来自已知设备的数据包(第三方不应该能够发送有效的数据包,但是它是否可以读取这些数据包并不重要)。

所以我在想的是,身份验证可能发生在单独的 TCP(甚至 SSL)连接上,而主要流量发生在 UDP 上。仅接受来自与 TCP/SSL 连接相同 IP 地址的 UDP 数据包,并且只要连接有效。

这是一种(相对)安全的身份验证方法还是有简单的方法可以绕过它?如果是这样,您对我还有其他建议吗?

谢谢你。

4

1 回答 1

3

IP地址可以伪造。所以任何嗅探这些包的人,也可以发送伪造的 UDP 包。

您可以通过 SSL 连接交换密钥,并将密钥添加HMAC到您的 UDP 包中。

于 2013-03-18T08:19:30.810 回答