Usando o protocolo DTLS para jogos com vários jogadores

8

Estou pensando em usar o protocolo DTLS para o meu jogo multiplayer online. Para quem não sabe, é essencialmente uma porta de datagramas TLS para UDP.

De acordo com este artigo , a principal sobrecarga do protocolo está na fase de handshake, que levou 950 ms em seus testes. No entanto, este estudo (link quebrado; veja a cópia em archive.org ) indica que, durante o transporte criptografado real, geralmente há menos de 1 milissegundo de atraso.

Isso soa como uma dádiva de Deus para jogos em tempo real. É um canal criptografado de baixa latência e altamente seguro que opera sobre UDP. Ele fornece confiabilidade e proteção para a fase do aperto de mão e sai do caminho. No entanto, nunca ouvi falar dele sendo usado em um jogo antes, embora a especificação RFC tenha sido escrita em 2006 e implementada no OpenSSL.

Por que nem todos os jogos o usam?

Kai
fonte
11
Não sei, parece ótimo ... Talvez não seja suportado em muitos idiomas populares? Existem bibliotecas boas e úteis para isso? Eu não usá-lo simplesmente porque eu não tenha ouvido falar dele e eu dúvida Node.js suporta ...
jcora
gamedev.stackexchange.com/faq#dontask "Por que nem todos os jogos o usam" não abordam o problema: se é útil ou não para seus propósitos.
Tetrad
11
@Tetrad O problema principal é que parece ótimo, mas não é amplamente usado. Esse é o último mistério para determinar se é útil para meus propósitos.
Kai
11
@ Tetrad eu concordo. No entanto, conhecer a história das bibliotecas que escolho é importante para mim. Certamente, se é popular, isso facilita muito o desenvolvimento.
Kai
11
Por curiosidade, como você sabe que os jogos não o usam?
Trevor Powell

Respostas:

4

Por que nem todos os jogos o usam? Em primeiro lugar, duvido que a maioria das pessoas tenha ouvido falar desse protocolo. A segurança da rede não é bem conhecida entre os desenvolvedores de jogos e, de qualquer maneira, essa é uma variante bastante obscura. Em segundo lugar, nem todo jogo usa UDP. Em terceiro lugar, o desempenho é uma preocupação. Um atraso de um quinto de milissegundo em cada pacote de 200 bytes obviamente significa que você só pode manipular 5000 pacotes por segundo, mesmo que o sistema não faça mais nada (o que é improvável). E há a comparação do desempenho de gravação - a criptografia pode ser mais cara que a descriptografia.

Kylotan
fonte
2

Quais seriam os benefícios?

Não confunda a ofuscação como um método de segurança em jogos multiplayer. Ser capaz de interceptar / injetar tráfego normalmente não é uma preocupação, pois um cliente não deve modificar o estado do jogo além dos parâmetros normais (também conhecido como trapaça). Se você está criptografando o tráfego como forma de evitar isso, provavelmente está escrevendo seu código de rede errado e precisa mover mais servidores de simulação.

Então .. em resposta à sua pergunta - segurança desse tipo geralmente não importa em jogos.

Desculpe se eu talvez tenha entendido errado. Talvez você possa descrever por que você acha que os jogos devem usar isso. Você poderá encontrar uma resposta para sua pergunta (se não for esse o caso)

ProPuke
fonte
5
Criptografia como essa beneficia os jogadores da mesma forma que o TLS em um site - significa que ninguém além do operador do jogo, em quem você confia, está enviando solicitações para você ou bisbilhotando o que está fazendo. Por exemplo, ninguém está interceptando seus pacotes e fazendo com que você troque itens. Ninguém está fingindo logs de bate-papo em seu nome.
11
É importante ressaltar que ele pode ser usado para transações seguras, como a compra de um item na loja. Além disso, evita o farejamento de pacotes e os ataques man-in-the-middle. Não é um substituto para o terminal burro, mas parece uma maneira fácil e barata de eliminar completamente um vetor de ataque.
Kai
2
Ambos os pontos válidos. Desculpas por ter perdido isso: S No entanto, a pergunta dizia "todos os jogos" e focada em jogos em tempo real de baixa latência, onde os dois casos acima parecem limitados a mmorpgs. Então, em resposta a "todos os jogos", ainda diria que na maioria dos casos não é necessário. (Eu não acho que o acima de 2 seria de uso em um jogo de Crysis, por exemplo)
ProPuke
11
Para coisas como comprar itens ou enviar bate-papo, basta ter uma API HTTPS comum. Não há nenhuma razão para que todo o jogo tenha que passar por algum protocolo UDP otimizado e focado em ação, a menos que você tenha algumas preocupações loucas sobre largura de banda (que o DTLS vai atrapalhar de qualquer maneira; você precisa preencher pacotes para evitar o tamanho da mensagem) ataques baseados em
Sean Middleditch