Autentica un utente attraverso un socket UDP

1

quindi diciamo che avevo un socket di base, non fornisco informazioni sull'utente oltre all'indirizzo IP, quali sarebbero le mie opzioni Se volessi autenticare un utente nel modo più ottimale possibile (come in performant ),

Ho pensato di avere una piccola chiave con cui ho hash il pacchetto, che potrebbe essere de-hashato abbastanza velocemente (credo) - ma non so come potrei spedire in modo sicuro quella chiave iniziale. (Anche se forse con un server SSL secondario, che avrò per le richieste HTTPS)

Modifica: più informazioni, l'utente si autentica prima con il server HTTPS, quindi una chiave può essere effettivamente condivisa in modo sicuro (con SSL) tra il client e il server

Pensieri?

    
posta Whiteclaws 03.06.2017 - 21:08
fonte

2 risposte

2
  1. Fornire ai client una chiave casuale (di lunga durata o temporanea) nelle sessioni https. Includere l'id utente nei datagrammi (se non ce l'hai ancora). Firma i datagrammi con un algoritmo HMAC, verifica i datagrammi HMAC sul server.

  2. Utilizza DTLS.

risposta data 03.06.2017 - 23:27
fonte
0

Se hai già un accordo su un segreto condiviso, non è troppo lungo per utilizzarlo per la crittografia piuttosto che per la firma e ottenere il vantaggio aggiuntivo della riservatezza. Un avvertimento sull'uso di UDP è che, in assenza di una consegna affidabile, non è possibile utilizzare CBC o CFB tra i datagrammi (è possibile utilizzare una perturbazione per datagramma di un vettore di inizializzazione staic per evitare il sovraccarico di inviare una nuova IV per ciascun datagramma) .

Una piccola chiave è una che è facilmente reversibile.

C'è un rfc che copre ssl su udp (non guardato in dettaglio, sospetto che tu abbia bisogno di stare attento con la velocità del throttle). Un approccio comune per gestire la perdita di trasmissione su udp consiste nell'utilizzare la correzione degli errori su più pacchetti come RAID fa con i dischi.

L'uso di un canale ssl su TCP come meccanismo di controllo sembra un approccio ragionevole (ma le comunicazioni bidirezionali non sono adatte per http).

La domanda più importante è se hai davvero bisogno di usare udp.

    
risposta data 03.06.2017 - 21:29
fonte

Leggi altre domande sui tag