技术博客:我们构建语音举报功能的详细过程
2023年11月16日
截至2025年3月,《火箭联盟》和《糖豆人》已提供语音举报功能。本文中提到的技术细节适用于《火箭联盟》、《糖豆人》和《Fortnite》
现在,我们在《Fortnite》中添加了语音举报功能。除了将其他玩家设为静音,或屏蔽、举报他们外,目前,在举报涉嫌违反我们
社区规则
的行为时,人们还可以使用语音举报功能提交音频证据。你可以在
《Fortnite》的博客
中了解更多信息。
我们将详细分享我们所采用的技术方法,阐明我们如何以及为何选择这种方式构建此项功能。
通过加密密钥对音频签名和溯源
在构建语音举报系统时,我们知道,必须将玩家的举报音频准确地溯源至语音聊天中的每一位参与者。这一点至关重要,因为如果有玩家涉嫌违反我们的
社区规则
,我们就必须准确地对群聊中的特定参与者采取行动。
为此,我们采用了
公钥加密技术
生成
数字签名
,确保语音数据包可准确地溯源至对应的参与者。数据包由参与者的私钥签名,而其他所有用户可以使用发送者的公钥进行验证,这有效地阻止了玩家对系统进行欺诈。
现在,语音举报功能已上线,当玩家在设备上启动《Fortnite》时,《Fortnite》客户端会使用OpenSSL生成一个用于签名的Ed25519椭圆曲线密钥对。随后,客户端会利用玩家的用户认证令牌,将玩家的公钥(只有公钥)副本发送给我们的后端系统。作为响应,后端系统会传回一个签名的令牌,Epic通过该令牌证明公钥已在我们的系统中注册,并与玩家的Epic账户相关联。
我们之所以为数字签名选择Ed25519算法,是考虑到了几个方面的原因。与RSA等传统算法相比,在对语音数据包进行签名和验证时,
Ed25519
表现出了更卓越的性能,在移动设备上尤其显著。此外,在提供同等保护的前提下,它的密钥长度更短,签名数据块更小,降低了对数据传输的要求。这对多人游戏非常重要,因为我们希望尽可能减少从各个客户端发送的数据。
语音系统整合
玩家生成签名密钥对后,《Fortnite》客户端会使用该密钥对以及来自我们后端系统的签名令牌,初始化
Epic在线服务(EOS)语音
子系统。接下来,签名的令牌会被复制到后端RTCP信令服务器,该服务器将验证令牌,确保它由Epic签名,然后允许参与者加入语音频道。
当玩家加入语音频道时,我们的信令服务器会将签名令牌复制给频道中的其他所有参与者,加入的玩家也会收到其他人签名令牌的副本。这样一来,语音频道中的所有参与者都能互相交换公钥,并确保Epic后端系统已正确地将密钥对应至每一位玩家。
当玩家开始在语音聊天中交谈时,EOS语音子系统会以大约60毫秒的间隔,从《Fortnite》客户端向我们的语音后端系统发送语音数据包,每个数据包都将使用玩家启动《Fortnite》时生成的Ed25519私钥进行数字签名,这样就能确保玩家对该音频数据包负责,
不可抵赖
。
当《Fortnite》客户端收到来自EOS语音服务的入站语音数据包时,它会使用发送者的公钥执行Ed25519数字签名验证操作,确保收到的语音数据包由该玩家的私钥正确签名。因此,我们能够确保,每位玩家听到的所有音频都可通过密码技术溯源至频道中的其他参与者。
语音举报:音频捕捉与用户选择
除了使用加密密钥生成技术对音频签名和溯源外,在构建语音举报系统时,我们还希望确保捕捉的音频来自参与者的设备(而非Epic Games服务器),并且允许参与者明确选择是否将音频证据提交给Epic审查。出于对玩家隐私和选择的尊重,在构建系统时,我们经过深思熟虑,决定不捕捉或监控所有语音流量。
这意味着,我们的后端服务
不会
在系统中存储任何音频流量;Epic后端服务仅在传输过程中处理音频,随后,音频将由语音频道中每位参与者的设备捕捉到运行时内存中。因此,如果关闭《Fortnite》的副本并重新打开,缓冲的音频将不复存在,玩家也无法举报之前的对话。Epic收到音频片段副本的唯一途径是:参与者开启了游戏内的语音举报功能,并使用它明确地举报了语音聊天内容。
开启语音举报功能后,EOS SDK会开始将所有语音参与者经过数字签名的音频数据包缓冲到进程内存中的单独区域。考虑到性能,内存缓冲区的大小有限,但应该能容纳大约最后五分钟的语音聊天音频。为了维持平衡,我们选择了10MB的缓冲区大小,在保障性能的同时,确保参与者能够提交足够的证据,让我们有效地进行审查。
参与者提交语音举报时,其《Fortnite》客户端会向Epic的另一个后端服务发送票据请求,以便上传音频缓冲数据。该音频缓冲数据包含过去五分钟内所有捕捉到的音频,包括对话中其他参与者的音频。然后,举报者的《Fortnite》客户端会将音频缓冲数据中已签名的音频数据块上传到加密的S3存储桶中。对存储桶的所有操作都会受到跟踪和监控,确保只有经过授权的系统有权与上传的音频交互。上传完成后,《Fortnite》客户端会将上传ID附加到玩家的举报中,并将数据发送至我们的后端。
Epic后端系统会收取上传的音频,这些音频由经过数字签名的60毫秒多轨音频组成。Epic后端系统会收取上传的音频,这些音频由经过数字签名的60毫秒多轨音频组成。系统随后会验证所有音频的数字签名,确保在用户启动《Fortnite》时,每个音频数据块所对应的账户都使用Epic后端服务会签的密钥正确地完成了签名。接下来,音频会被转码成每位参与者的单独Opus音轨,并转发给Epic的内部审核团队进行审查。
用于审查语音举报的审核者界面
我们使用了Contex.ai构建的自动化工具,作为对我们人工审核工作的补充。Contex.ai是一家开发审核工具的公司,这些工具使用机器学习技术检测不适当的音频、文本和图像。该公司已于今年早些时候加入了Epic Games。Contex.ai的技术已在
Unreal Editor Fortnite特别版(UEFN)
中得到应用,帮助我们标记违反我们
规则
的内容,阻止它们被发布到社区。
如果在审查过程中发现疑似违规的行为或新的违规行为,举报的音频将被复制到由制裁管理系统控制的一个单独位置。
上传音频的所有副本(包括原件)将在14天或制裁期满后删除,以时间较长者为准。如果用户对制裁进行上诉,保留期限最多可能会延长14天,以便我们对制裁决定进行复审。如果Epic Games出于履行法律义务的原因,需要保留音频片段,我们会在法律要求的期限内保留该片段。
请阅读语音举报常见问题以了解更多信息,或访问
safety.epicgames.com
。
准备好开始了吗?
进一步了解Epic在线服务的语音功能,并下载SDK。
立即开始