单独的TCP / SSL连接用于身份验证,而UDP用于主要流量?

时间:2013-03-18 08:10:40

标签: java android tcp udp

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

问题在于我需要一些身份验证,因为服务器应该只接受来自已知设备的数据包(第三方不应该能够发送有效数据包,但是如果能够读取此类数据包则无关紧要)。

所以我想的是,身份验证可能发生在单独的TCP(甚至SSL)连接上,而主流量则通过UDP发生。只接受来自与TCP / SSL连接相同IP地址的UDP数据包,并且只有连接处于活动状态时才会被接收。

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

谢谢。

1 个答案:

答案 0 :(得分:3)

可以伪造IP地址。所以任何嗅探包的人都可以发送伪造的UDP包。

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