1

背景信息

我正在编写一个自定义 UDP 协议,该协议针对通用用途,但可能会在游戏开发环境中使用。我的协议处理了 UDP 的所有问题,可靠性、排序和分片都得到了处理。我使用 UDP 是因为它具有灵活性,因为我可以发送一些不可靠的数据包和其他可靠的数据包。

问题

我希望我的协议被加密,我也很关心 MITM。我已经阅读了一些人的一些问题,他们也想加密他们的 UDP 协议,大多数人推荐 DTLS。然而,DTLS 的问题在于似乎没有人使用它。我找不到关于如何为我选择的语言 (Java) 设置客户端/服务器程序的体面的指南或文档。看起来唯一的选择是bouncycastle,但考虑到他们的客户端/服务器测试程序不能相互配合,这可能不是一个好主意。

然后我决定用 C 编写底层的数据包接收和发送代码,并使用 OpenSSL 来实现 DTLS。然后我会使用 JNA 调用我的 C 代码。然而,我再一次找不到关于如何进行 DTLS 的体面的指南或教程。我只能找到两个有帮助的,第一个只是遍历了通用 C 函数以按顺序调用。我的印象是您的应用程序必须自己进行客户端验证,因为我不知道该怎么做,所以它不是很有帮助。第二个只是一个原始的客户端/服务器程序,它在运行时可以工作,但经过仔细检查,它似乎禁用了客户端验证。

实际问题

我将如何通过 UDP 创建自己的加密传输系统?我读了一些关于 DHKE 的信息,但我不知道如何使用 UDP 在 Java 中编写一个好的实现,并且仔细检查似乎它并没有阻止 MITM。对于我的特定应用程序,我实际上可能不需要密钥交换,客户端实际上可以将密钥对与预先安装的服务器一起安装。走这条路行得通吗?(我可能只是用这对加密每个数据包主体并将其发送到服务器/客户端)

4

0 回答 0