(tl;底部的博士)
此时加密基本上是免费的,即使在拨号连接上也是如此。几乎每一种主要语言都内置了它,或者有一个库,等等。不使用 TLS/SSL 的优势是第二次启动时间的一小部分,CPU 使用率的减少可以忽略不计(小百分之一),并且每个会话节省了大约 4kb 的带宽(TLS 在初始握手后对带宽没有明显影响)。所以,假设你在整个游戏中保持连接打开,你几乎没有节省任何东西。
但是,以明文形式发送数据可以让有兴趣玩游戏的人轻松查看它在做什么。一旦他们知道您的协议是什么,他们就可以利用它来发挥自己的优势。使用旨在完成某些任务的工具的人总是会胜过没有该工具的人。随便想想,我想出了机器人、高分操纵、虚假客户端更新、工具辅助游戏和会话劫持。
例如,Botting 就是让电脑为你玩。计算机非常擅长提前预测一百万个动作,因此它们几乎总能选择正确、可靠的动作,在任何情况下都比人类更快地做出动作。这意味着他们会赢,而真正的玩家会输,这最终意味着你的游戏最终会被放弃,或者只是充满了互相玩的机器人。
高分对人们来说意义重大。这是一个自我的事情。因此,当他们玩并获得 250 分时,看到排名靠前的玩家得分为 4,294,967,295,他们就不会费心去玩了。例如,如果高分代码具有易于破解的协议(是的,某些游戏实际上只是报告高分,而服务器只是接受它),则可能会发生这种情况。应该保护该部分不被篡改。
错误的客户端更新可能是也可能不是问题,但基本上归结为您是否可以对客户端“撒谎”,使其认为游戏处于与实际不同的状态。例如,人们可能出现在地图上的错误位置,人们可以“神奇地”传送,因为服务器在不验证输入的情况下接受坐标等等。即使使用加密也可以做到这一点,但这意味着你必须修改二进制而不是仅仅编写自己的客户端。
工具辅助游戏类似于下注:这个人仍在玩游戏,但他们在工具的指导下实时做出最佳决策,即使他们输了。有工具的人通常会比没有工具的人表现得更好(当然,假设有一些练习),所以这通常被认为是作弊,如果没有看门狗来保护客户,就不可能被发现。如果您能以任何您想要的方式修改数据包,那就更容易了。
如果他们能够找出代表他们会话的连接部分,则可能会发生会话劫持。你看,你不能只是将 TLS 连接降级回非加密状态(至少,我不能说)。因此,这意味着您必须断开连接并打开一个新连接。这个新连接需要向服务器识别它是谁。当然,您可以使用某种令牌,但最好是随机数(单一使用值),否则攻击者将知道会话信息,并可能通过重播连接来欺骗合法客户端继续服务器等
总而言之,您应该始终使用 TLS。即使是井字游戏或四连线游戏。某个地方的某个人想要在您的游戏中作弊,而您基本上可以通过启用安全通道来防止所有类型的作弊。除了很小的启动成本外,加密本质上是免费的,因此不使用它并没有真正的好处。如果您正在安全地进行身份验证,那么稍后切换到非安全通道是没有意义的,因为您已经付出了启动的代价。