In che modo gli utenti con autenticazione SSL provano l'autenticità tramite i pacchetti UDP?

3

Ho scelto SSL per la registrazione nel client di gioco. Il client comunica con il server di gioco che memorizza una password salata / hash.

Se utilizzo SSL per autenticare gli utenti all'accesso, ma il gioco fa tutta la comunicazione con i pacchetti UDP, come fa il server a sapere che i pacchetti UDP che sta ricevendo provengono dall'utente autenticato?

Nota che sono principalmente interessato a garantire che l'utente sia autenticato. Non mi interessa la privacy dei pacchetti UDP.

    
posta BahKoo 15.02.2014 - 21:10
fonte

2 risposte

5

Il metodo sicuro è utilizzare DTLS : questo è SSL / TLS applicato a UDP.

Il metodo meno sicuro è inventare il tuo protocollo. In questo caso, poiché ti preoccupi solo dell'autenticazione, le cose andrebbero in questo modo:

  • Client e server creano un normale SSL e eseguono un protocollo di autenticazione all'interno di tale SSL.
  • Client e server scambiano una chiave simmetrica K all'interno di quel tunnel (ad esempio il client genera K in modo casuale e lo invia al server).
  • Ogni pacchetto UDP inviato dal client viene autenticato con un MAC (es. HMAC) utilizzando il tasto K . Il server utilizza K per verificare che il pacchetto provenga realmente dal client e non sia stato alterato durante il transito.
  • Ogni pacchetto deve includere un numero di sequenza e il server deve mantenere una certa conoscenza degli ultimi pacchetti ricevuti (con una finestra per i pacchetti out-of-order), in modo che il server possa notare quando i pacchetti vengono rilasciati, duplicati, riordinati , o riprodotto.

Una corretta gestione dei pacchetti per evitare attacchi replay è una questione di sottigliezza; lasciare quel lavoro a una libreria DTLS già implementata è la cosa più intelligente da fare.

    
risposta data 16.02.2014 - 06:11
fonte
-1

Non penso che tu abbia qualcosa di poco chiaro. Per rendere l'autenticazione SSL, chi è il titolare del certificato, il client o il server? Sembra che il cliente che detiene il certificato sia ragionevole. In tal caso, il server deve avere la chiave pubblica di questo certificato. Quindi un modo semplice per avvicinarsi all'autenticazione è crittografare il numero di sequenza del pacchetto UDP e qualche stringa casuale con chiave privata. Pertanto, se il server può decifrare la firma nell'UDP, si assicura che il pacchetto provenga effettivamente dal client.

    
risposta data 15.02.2014 - 23:34
fonte

Leggi altre domande sui tag