뉴스

2023년 11월 16일

기술 블로그: 음성 신고 빌드 방법 세부사항

2025년 3월부터 Rocket League와 폴가이즈에서 음성 신고를 이용할 수 있습니다. 본 게시물의 기술적 세부 사항은 포트나이트뿐만 아니라 Rocket League와 폴가이즈에도 적용됩니다.

오늘은 포트나이트의 음성 신고 기능을 소개해보겠습니다. 이제 다른 플레이어를 차단하고 음소거하고 신고할 수 있을 뿐 아니라 커뮤니티 규정 위반이 의심되는 플레이어를 신고할 때 음성 신고를 사용하여 오디오 증거를 제출할 수도 있게 됩니다. 자세한 내용은 포트나이트 블로그를 확인해 주세요.

음성 신고 기능을 개발한 이유와 방법을 설명하기 위해 기술적 접근 방식에 대해 자세히 알려드리겠습니다.


암호화 키를 통한 오디오 서명 및 귀속

에픽게임즈는 음성 신고 시스템을 빌드할 때, 플레이어가 신고한 오디오가 음성 채팅의 각 참여자에게 정확하게 귀속된다는 확신이 필요하다고 판단했습니다. 이러한 확신이 중요한 까닭은 커뮤니티 규정을 위반한 것으로 의심되는 플레이어가 있는 경우, 그룹 채팅에서 정확히 해당 플레이어에 대해 조치를 취해야 하기 때문입니다.

이러한 목표를 달성하기 위해 에픽은 공개 키 암호화를 사용하여 디지털 서명을 생성함으로써 보이스 패킷이 올바른 참여자에게 귀속될 수 있게 합니다. 패킷은 참여자의 비공개 키로 서명되고 다른 모든 사용자는 발신자의 공개 키를 사용하여 이 패킷을 검증할 수 있으므로, 플레이어의 시스템 스푸핑을 방지할 수 있습니다.

이제 음성 신고가 적용되었으므로 플레이어가 디바이스에서 포트나이트를 실행하면 포트나이트 클라이언트가 OpenSSL을 사용하여 서명 작업에 사용하기 위한 Ed25519 타원 커브 키 쌍을 생성합니다. 그런 다음 클라이언트는 플레이어의 사용자 인증 토큰을 사용하여 플레이어의 공개 키 사본(및 공개 키만)을 에픽의 백엔드 시스템으로 전송하고 이에 대한 응답으로 서명된 토큰을 받습니다. 서명된 토큰을 통해 공개 키가 에픽 시스템에 등록되었고 해당 플레이어의 에픽 계정과 연결되었음을 에픽이 증명하는 것입니다.

에픽은 몇 가지 이유로 디지털 서명에 Ed25519 알고리즘을 사용하기로 했습니다. Ed25519는 특히 모바일 디바이스에서 보이스 패킷에 서명하고 검증하는 데 RSA와 같은 기존 알고리즘보다 훨씬 더 나은 퍼포먼스를 보입니다. 또한, 보호 기능은 똑같으면서도 키의 크기와 서명 블록이 더 짧아 데이터 전송 요구 사항이 적은데, 이는 각 클라이언트에서 전송되는 데이터를 최소화해야 하는 멀티플레이어 게임에서 중요합니다.


보이스 시스템 통합

플레이어가 사이닝 키 쌍을 생성하면 포트나이트 클라이언트는 백엔드에서 생성된 키 쌍과 서명된 토큰을 사용하여 에픽 온라인 서비스(EOS) 보이스 서브시스템을 초기화합니다. 그런 다음 서명된 토큰은 백엔드 RTCP 시그널링 서버에 리플리케이트되고, 이 서버에서 토큰 유효성을 검사하고 에픽에서 서명했는지 확인하고 참여자가 음성 채널에 참여할 수 있도록 허용합니다.

플레이어가 음성 채널에 참여하면 에픽 시그널링 서버에서 서명된 토큰을 채널의 다른 모든 참여자에게 리플리케이트하고 참여 플레이어는 다른 모든 참여자의 서명된 토큰의 사본을 받습니다. 이를 통해 해당 음성 채널의 모든 참여자가 서로의 공개 키를 교환하고 에픽의 백엔드 시스템이 각 플레이어에게 키를 올바르게 귀속시켰음을 확인할 수 있습니다.

플레이어가 음성 채팅에서 대화를 시작하면 EOS 보이스 서브시스템은 포트나이트 클라이언트에서 약 60밀리초 간격으로 보이스 패킷을 에픽의 보이스 백엔드 시스템으로 전송하며, 이러한 각 패킷은 플레이어가 포트나이트를 실행할 때 생성된 Ed25519 비공개 키를 사용하여 디지털 서명되므로 에픽은 플레이어가 해당 오디오 패킷에 대해 책임이 있다는 것을 확신할 수 있으며 부인 방지가 가능해집니다.

포트나이트 클라이언트가 EOS 보이스 서비스로부터 인바운드 보이스 패킷을 수신하면, 발신자의 공개 키로 Ed25519 디지털 서명 검증 작업을 수행하여 수신된 보이스 패킷이 해당 플레이어의 비공개 키로 올바르게 서명되었는지 확인함으로써 각 플레이어가 채널의 다른 참여자에게 암호로 귀속될 수 있는 오디오만 들을 수 있도록 보장합니다.


음성 신고: 오디오 캡처 및 사용자 선택

암호화 키 생성을 통한 오디오 서명 및 귀속 외에도, 에픽은 오디오가 캡처된 것이 에픽게임즈 서버가 아닌 참여자의 디바이스라는 것을 확인하고 참여자가 에픽에 검토용으로 오디오 증거를 제출할지 여부를 확실하게 선택할 수 있도록 음성 신고 시스템을 빌드하고자 했습니다. 에픽은 플레이어의 개인정보와 선택권을 존중하는 의미에서 모든 음성 트래픽을 캡처하거나 모니터링하지 않는 시스템을 빌드하기 위해 심사숙고하여 디자인을 선택했습니다.

즉, 에픽의 백엔드 서비스는 어떠한 오디오 트래픽도 시스템의 일부로 저장하지 않으며, 오디오는 에픽의 백엔드 서비스에서 전송 중에만 처리된 다음, 해당 음성 채널 내 각 참여자의 런타임 메모리에 있는 참여자의 디바이스에서 캡처됩니다. 따라서, 플레이어가 포트나이트 사본을 종료했다가 다시 열면, 버퍼링된 오디오가 더는 존재하지 않으며 이전 대화를 신고할 수 없습니다. 에픽에서 오디오 클립의 사본을 수신하는 유일한 방법은 음성 신고가 켜져 있을 때 참여자가 게임 내 음성 신고 기능을 사용하여 음성 채팅을 확실하게 신고하는 경우뿐입니다.

음성 신고가 켜져 있을 때 EOS SDK는 모든 음성 채팅 참여자의 디지털 서명된 오디오 패킷을 프로세스 메모리의 별도 영역에 버퍼링하기 시작합니다. 퍼포먼스상의 이유로 메모리 버퍼 크기가 제한되어 있지만, 마지막 5분 정도의 음성 채팅 오디오가 버퍼에 보관됩니다. 에픽은 퍼포먼스를 유지하면서도 참여자가 모더레이션에 효과적인 충분한 증거를 제출할 수 있도록 버퍼 크기를 10MB로 선택했습니다.

참여자가 음성 신고를 제출하면 해당 포트나이트 클라이언트는 오디오 버퍼를 업로드하기 위해 에픽의 백엔드 서비스의 다른 클라이언트에 티켓을 요청합니다. 이 오디오 버퍼에는 대화에 참여한 다른 참여자의 오디오를 포함하여 마지막 5분 동안 캡처된 모든 오디오가 포함되어 있습니다. 그런 다음, 신고자의 포트나이트 클라이언트는 서명된 오디오 청크를 신고자의 오디오 버퍼에서 암호화된 S3 버킷으로 업로드합니다. 인증된 시스템만 업로드된 오디오와 상호작용할 수 있도록 이 버킷에 대한 모든 작업이 추적되고 모니터링됩니다. 업로드가 완료되면 포트나이트 클라이언트는 업로드 ID를 플레이어 리포트에 첨부하고 해당 데이터를 에픽의 백엔드에 전송합니다.

에픽 백엔드 시스템은 업로드된 오디오를 수집하며, 업로드된 오디오는 60밀리초 간격으로 디지털 서명된 멀티 트랙 오디오로 구성됩니다. 그런 다음, 백엔드 시스템에서 모든 오디오의 디지털 서명을 검증하여 사용자가 포트나이트를 시작할 때 각 오디오 청크를 담당하는 계정이 에픽의 백엔드 서비스에서 서명한 키로 올바르게 서명했는지 확인합니다. 그런 다음, 해당 오디오는 참여자별 개별 Opus 오디오 트랙으로 트랜스코딩되어 검토를 위해 에픽의 내부 모더레이션 팀에 전달됩니다.
 
음성 신고 디테일 모더레이션 V3
음성 신고 검토를 위한 모더레이터 인터페이스

에픽은 Contex.ai에서 빌드한 자동화 툴을 활용하여 사람의 모더레이션 작업을 보완합니다. Contex.ai는 머신 러닝을 사용하여 부적절한 오디오, 텍스트 및 이미지를 탐지하는 모더레이션 툴을 개발하는 업체로, 올해 초 에픽게임즈에 합류했습니다. Contex.ai의 기술은 커뮤니티에 퍼블리시되기 전에 이미 포트나이트 언리얼 에디터(UEFN)에서 가이드라인을 위반하는 콘텐츠 플래그에 사용되고 있습니다.
 
검토 프로세스 중에 커뮤니티 규정을 위반한 것으로 의심되거나 새로운 위반 사항이 발견되면, 신고된 오디오는 에픽의 제재 관리 시스템이 관리하는 별도의 위치에 복사됩니다.

업로드된 오디오 원본을 비롯한 모든 사본은 14일 또는 제재 기간 중에서 더 긴 기간이 지나면 삭제됩니다. 제재에 이의를 제기하는 경우, 해당 제재 결정을 검토할 수 있도록 최대 14일간 오디오 보유 기간이 연장될 수 있습니다. 에픽게임즈가 법적 의무를 준수하기 위해 오디오 클립을 보관해야 하는 경우, 법적으로 요구되는 동안 보관됩니다.

자세한 내용은 음성 신고 FAQ나 safety.epicgames.com에서 확인할 수 있습니다.