Utilizzo del protocollo DTLS per i giochi multiplayer


8

Sto pensando di utilizzare il protocollo DTLS per il mio gioco multiplayer online. Per chi non lo sapesse, si tratta essenzialmente di una porta di datagrammi TLS-UDP.

Secondo questo articolo , l'overhead principale del protocollo è nella fase di handshake, che ha richiesto 950 ms nei test. Tuttavia, questo studio (link non funzionante; vedi copia su archive.org ) indica che durante il trasporto crittografato effettivo, spesso c'è meno di 1 millisecondo di ritardo.

Sembra una manna dal cielo per i giochi in tempo reale. È un canale crittografato a bassa latenza e altamente sicuro che opera su UDP. Fornisce affidabilità e protezione per la fase di stretta di mano, quindi si allontana. Tuttavia, non ho mai sentito parlare del suo utilizzo in un gioco prima, anche se le specifiche RFC sono state scritte nel 2006 ed è implementata in OpenSSL.

Perché non tutti i giochi lo usano?


1
Non lo so, suona alla grande ... Forse non è supportato in molte lingue popolari? Ci sono librerie valide e funzionanti per questo? Non lo uso semplicemente perché non ne ho sentito parlare e dubito che node.js lo supporti ...
jcora,

gamedev.stackexchange.com/faq#dontask "Perché ogni gioco non lo usa" non risolve il problema: se è utile o meno per i tuoi scopi.
Tetrad

1
@Tetrad Il problema principale è che suona alla grande ma non è ampiamente usato. Questo è l'ultimo mistero nel determinare se è utile per i miei scopi.
Kai,

1
@Tetrad Sono d'accordo. Tuttavia, conoscere la storia delle biblioteche che scelgo è importante per me. Certamente, se è popolare, questo rende lo sviluppo molto più semplice.
Kai,

1
Per curiosità, come fai a sapere che i giochi non lo usano?
Trevor Powell,

Risposte:


4

Perché non tutti i giochi lo usano? In primo luogo, dubito che molte persone abbiano persino sentito parlare di questo protocollo. La sicurezza della rete non è ben nota tra gli sviluppatori di giochi e questa è comunque una variante abbastanza oscura. In secondo luogo, non tutti i giochi usano UDP. In terzo luogo, le prestazioni sono una preoccupazione. Un ritardo di un quinto di millisecondo su ogni pacchetto da 200 byte significa ovviamente che puoi gestire solo 5000 pacchetti al secondo anche se il tuo sistema non fa assolutamente nient'altro (il che è improbabile). E c'è il confronto delle prestazioni di scrittura: la crittografia può essere più costosa della decrittografia.


2

Quali sarebbero i benefici?

Non confondere l'offuscamento come metodo di sicurezza nei giochi multiplayer. Essere in grado di intercettare / iniettare il traffico non è normalmente un problema, in quanto un client non dovrebbe essere in grado di modificare il gamestato oltre i normali parametri (ad esempio cheat). Se stai crittografando il traffico come mezzo per evitarlo, probabilmente stai scrivendo il tuo netcode in modo errato e devi spostare più parte del server di simulazione.

Quindi ... in risposta alla tua domanda - la sicurezza di questo tipo di solito non ha importanza nei giochi.

Scusa se forse ho frainteso. Forse potresti delineare perché pensi che i giochi dovrebbero usarlo. Potresti quindi trovare una risposta alla tua domanda (se non lo è)


5
La crittografia come questa avvantaggia i giocatori allo stesso modo di TLS su un sito Web - significa che nessuno oltre all'operatore di gioco, di cui ti fidi, ti sta inviando richieste o ficcando il naso su ciò che stai facendo. Ad esempio, nessuno intercetta i tuoi pacchetti e ti fa scambiare oggetti. Nessuno sta falsificando i log delle chat a tuo nome.

1
È importante sottolineare che può essere utilizzato per transazioni sicure, come l'acquisto di un articolo dal negozio. A parte ciò, impedisce lo sniffing dei pacchetti e gli attacchi man-in-the-middle. Non è un sostituto del terminale stupido, ma sembra un modo semplice ed economico per eliminare completamente un vettore di attacco.
Kai,

2
Entrambi i punti validi. Ci scusiamo per il fatto che: S Tuttavia, la domanda diceva "tutti i giochi" e si concentrava sui giochi in tempo reale a bassa latenza, dove i precedenti 2 casi sembrano limitati ai mmorpg. Quindi, in risposta a "ogni gioco", vorrei ancora dire che nella maggior parte dei casi non è necessario. (Non credo che i precedenti 2 sarebbero utili in un gioco di crisi, per esempio)
ProPuke

1
Per cose come acquistare articoli o inviare chat, basta avere un'API HTTPS normale. Non c'è alcun motivo per cui l'intero gioco debba funzionare su un protocollo UDP ottimizzato incentrato sull'azione, a meno che tu non abbia alcune preoccupazioni pazzesche sulla larghezza di banda (che DTLS sta per rovinare in ogni caso; devi evitare i pacchetti per evitare la dimensione del messaggio- attacchi basati).
Sean Middleditch,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.