Verwendung des DTLS-Protokolls für Multiplayer-Spiele

8

Ich denke darüber nach, das DTLS-Protokoll für mein Online-Multiplayer-Spiel zu verwenden. Für diejenigen, die es nicht wissen, ist es im Wesentlichen ein Port von TLS zu UDP-Datagrammen.

Nach diesem Papier ist das Hauptkopf des Protokolls in der Handshake - Phase, die in ihren Tests 950 ms haben. Diese Studie (defekter Link; siehe Kopie auf archive.org ) zeigt jedoch, dass während des tatsächlichen verschlüsselten Transports häufig weniger als 1 Millisekunde Verzögerung auftritt.

Das klingt nach einem Glücksfall für Echtzeitspiele. Es handelt sich um einen hochsicheren, verschlüsselten Kanal mit geringer Latenz, der über UDP betrieben wird. Es bietet Zuverlässigkeit und Schutz für die Handshake-Phase und tritt dann aus dem Weg. Ich habe noch nie davon gehört, dass es in einem Spiel verwendet wird, obwohl die RFC-Spezifikation 2006 geschrieben und in OpenSSL implementiert wurde.

Warum benutzt es nicht jedes Spiel?

Kai
quelle
1
Ich weiß nicht, es klingt großartig ... Vielleicht wird es in vielen gängigen Sprachen nicht unterstützt? Gibt es gute und funktionierende Bibliotheken dafür? Ich benutze es nicht einfach, weil ich nichts davon gehört habe und ich bezweifle, dass node.js es unterstützt ...
jcora
gamedev.stackexchange.com/faq#dontask "Warum nicht jedes Spiel es verwendet" geht nicht auf das Problem ein: ob es für Ihre Zwecke nützlich ist oder nicht .
Tetrad
1
@ Tetrad Das Problem im Herzen ist, dass es großartig klingt, aber nicht weit verbreitet ist. Das ist das letzte Rätsel, ob es für meine Zwecke nützlich ist.
Kai
1
@ Tetrad Ich stimme zu. Es ist mir jedoch wichtig, die Geschichte der von mir ausgewählten Bibliotheken zu kennen. Wenn es beliebt ist, erleichtert dies sicherlich die Entwicklung erheblich.
Kai
1
Woher weißt du aus Neugier, dass Spiele es nicht benutzen?
Trevor Powell

Antworten:

4

Warum benutzt es nicht jedes Spiel? Erstens bezweifle ich, dass die meisten Menschen überhaupt von diesem Protokoll gehört haben. Die Netzwerksicherheit ist unter Spieleentwicklern nicht bekannt, und dies ist ohnehin eine ziemlich dunkle Variante. Zweitens verwendet nicht jedes Spiel UDP. Drittens ist die Leistung ein Problem. Eine Fünftel-Millisekunden-Verzögerung pro 200-Byte-Paket bedeutet natürlich, dass Sie nur 5000 Pakete pro Sekunde verarbeiten können, selbst wenn Ihr System absolut nichts anderes tut (was unwahrscheinlich ist). Und es gibt einen Vergleich der Schreibleistung - Verschlüsselung kann teurer sein als Entschlüsselung.

Kylotan
quelle
2

Was wären die Vorteile?

Verwechseln Sie die Verschleierung nicht als Sicherheitsmethode in Multiplayer-Spielen. Das Abfangen / Injizieren von Datenverkehr ist normalerweise kein Problem, da ein Client ohnehin nicht in der Lage sein sollte, den Gamestate über normale Parameter (auch als Cheat bezeichnet) hinaus zu ändern. Wenn Sie den Datenverkehr verschlüsseln, um dies zu vermeiden, schreiben Sie wahrscheinlich Ihren Netcode falsch und müssen mehr von der Simulationsserverseite verschieben.

Also ... als Antwort auf Ihre Frage - Sicherheit dieser Art spielt in Spielen normalerweise keine Rolle.

Entschuldigung, wenn ich vielleicht falsch verstanden habe. Vielleicht könnten Sie skizzieren, warum Spiele dies Ihrer Meinung nach verwenden sollten . Möglicherweise finden Sie dann eine Antwort auf Ihre Frage (falls dies nicht der Fall ist).

ProPuke
quelle
5
Eine solche Verschlüsselung kommt den Spielern genauso zugute wie TLS auf einer Website - es bedeutet, dass niemand außer dem Spielbetreiber, dem Sie vertrauen, Anfragen für Sie sendet oder über Ihre Aktivitäten informiert. Zum Beispiel fängt niemand Ihre Pakete ab und bringt Sie dazu, Gegenstände zu handeln. Niemand fälscht Chat-Protokolle in Ihrem Namen.
1
Wichtig ist, dass es für sichere Transaktionen verwendet werden kann, z. B. für den Kauf eines Artikels im Shop. Abgesehen davon verhindert es Paket-Sniffing und Man-in-the-Middle-Angriffe. Es ist kein Ersatz für das dumme Terminal, aber es scheint eine einfache und kostengünstige Möglichkeit zu sein, einen Angriffsvektor vollständig zu eliminieren.
Kai
2
Beide gültigen Punkte. Entschuldigung für das Fehlen: S Die Frage lautete jedoch "jedes Spiel" und konzentrierte sich auf Echtzeitspiele mit geringer Latenz, bei denen die beiden oben genannten Fälle auf mmorpgs beschränkt zu sein scheinen. Als Antwort auf "jedes Spiel" würde ich immer noch sagen, dass es in den meisten Fällen nicht notwendig ist. (Ich glaube nicht, dass die obigen 2 zum Beispiel in einem Crysis-Spiel von Nutzen sind)
ProPuke
1
Verwenden Sie zum Kaufen von Artikeln oder zum Senden von Chats einfach eine reguläre HTTPS-API. Es gibt überhaupt keinen Grund, warum das ganze Spiel über ein aktionsorientiertes, optimiertes UDP-Protokoll laufen muss, es sei denn, Sie haben verrückte Bedenken hinsichtlich der Bandbreite (die DTLS sowieso vermasseln wird; Sie müssen Pakete ausfüllen, um die Größe von Nachrichten zu vermeiden). basierte Angriffe).
Sean Middleditch