Utilisation du protocole DTLS pour les jeux multijoueurs


8

J'envisage d'utiliser le protocole DTLS pour mon jeu multijoueur en ligne. Pour ceux qui ne le savent pas, il s'agit essentiellement d'un port de TLS vers les datagrammes UDP.

Selon cet article , le surdébit principal du protocole est dans la phase de prise de contact, qui a pris 950 ms dans leurs tests. Cependant, cette étude (lien brisé; voir copie sur archive.org ) indique que pendant le transport crypté réel, il y a souvent moins de 1 milliseconde de retard.

Cela ressemble à une aubaine pour les jeux en temps réel. Il s'agit d'un canal crypté à faible latence et hautement sécurisé qui fonctionne sur UDP. Il fournit fiabilité et protection pour la phase de prise de contact, puis s'éloigne. Pourtant, je n'ai jamais entendu parler de son utilisation dans un jeu auparavant, même si la spécification RFC a été écrite en 2006 et implémentée dans OpenSSL.

Pourquoi tous les jeux ne l'utilisent-ils pas?


1
Je ne sais pas, ça sonne bien ... Peut-être que ce n'est pas pris en charge dans de nombreuses langues populaires? Existe-t-il de bonnes bibliothèques qui fonctionnent? Je ne l'utilise pas simplement parce que je n'en ai pas entendu parler et je doute que node.js le supporte ...
jcora

gamedev.stackexchange.com/faq#dontask "Pourquoi chaque jeu ne l'utilise-t-il pas" ne résout pas le problème au fond: qu'il soit utile ou non à vos fins.
Tetrad

1
@Tetrad Le problème dans l'âme est qu'il sonne bien mais qu'il n'est pas largement utilisé. C'est le dernier mystère pour déterminer s'il est utile à mes fins.
Kai

1
@Tetrad Je suis d'accord. Cependant, connaître l'histoire des bibliothèques que je choisis est important pour moi. Certes, s'il est populaire, cela rend le développement beaucoup plus facile.
Kai

1
Par curiosité, comment savez-vous que les jeux ne l'utilisent pas?
Trevor Powell

Réponses:


4

Pourquoi tous les jeux ne l'utilisent-ils pas? Premièrement, je doute que la plupart des gens aient même entendu parler de ce protocole. La sécurité du réseau n'est pas bien connue des développeurs de jeux et c'est une variante assez obscure de toute façon. Deuxièmement, tous les jeux n'utilisent pas UDP. Troisièmement, la performance est une préoccupation. Un cinquième de milliseconde sur chaque paquet de 200 octets signifie évidemment que vous ne pouvez gérer que 5000 paquets par seconde, même si votre système ne fait absolument rien d'autre (ce qui est peu probable). Et il y a la comparaison des performances d'écriture - le chiffrement peut être plus cher que le déchiffrement.


2

Quels en seraient les avantages?

Ne confondez pas l'obfuscation comme méthode de sécurité dans les jeux multijoueurs. Être capable d'intercepter / injecter du trafic n'est normalement pas une préoccupation, car un client ne devrait pas être en mesure de modifier le gamestate au-delà des paramètres normaux (alias triche) de toute façon. Si vous cryptez le trafic comme un moyen d'éviter cela, vous écrivez probablement mal votre netcode et devez déplacer davantage le côté serveur de simulation.

Alors .. en réponse à votre question - la sécurité de ce type n'a généralement pas d'importance dans les jeux.

Désolé si j'ai peut-être mal compris. Peut-être pourriez-vous expliquer pourquoi vous pensez que les jeux devraient utiliser cela. Vous pourrez alors trouver une réponse à votre question (si ce n'est pas le cas)


5
Un cryptage comme celui-ci profite aux joueurs de la même manière que TLS sur un site Web - cela signifie que personne, à part l'opérateur de jeu, en qui vous avez confiance, ne soumet des demandes pour vous ou espionne ce que vous faites. Par exemple, personne n'intercepte vos paquets et vous fait échanger des objets. Personne ne simule les journaux de discussion en votre nom.

1
Surtout, il peut être utilisé pour des transactions sécurisées, telles que l'achat d'un article dans la boutique. En plus de cela, il empêche le reniflement de paquets et les attaques man-in-the-middle. Ce n'est pas un remplacement pour le terminal stupide, mais cela semble être un moyen facile et bon marché d'éliminer complètement un vecteur d'attaque.
Kai

2
Les deux points valides. Toutes mes excuses pour avoir omis cela: S Cependant, la question disait "tous les jeux" et se concentrait sur les jeux en temps réel à faible latence, alors que les 2 cas ci-dessus semblent limités aux mmorpgs. Donc, en réponse à "chaque jeu" je dirais quand même que dans la plupart des cas ce n'est pas nécessaire. (Je ne pense pas que les 2 ci-dessus seraient utiles dans un jeu de crysis, par exemple)
ProPuke

1
Pour des choses comme l'achat d'articles ou l'envoi de chat, il suffit d'avoir une API HTTPS régulière. Il n'y a aucune raison que tout le jeu doive fonctionner avec un protocole UDP optimisé et axé sur l'action, à moins que vous n'ayez des problèmes de bande passante fous (que DTLS va visser de toute façon; vous devez remplir les paquets pour éviter la taille du message) attaques basées).
Sean Middleditch
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.