Come si ottengono i nomi utente / password su un server STUN o TURN per l'autenticazione delle credenziali a lungo termine?

5

Le specifiche STUN e TURN consentono l'autenticazione del client utilizzando nomi utente e password e chiamano questa autenticazione tramite credenziali a lungo termine. In effetti, TURN richiede che i client eseguano l'autenticazione in questo modo.

Tuttavia, suppongo che quasi tutte le distribuzioni eseguano i loro server STUN o TURN separatamente dal loro server di database. Ad esempio, per un'applicazione VOIP che utilizza server TURN, presumibilmente tutti i dati dell'utente verrebbero archiviati in un database, la gestione degli account utente potrebbe essere gestita principalmente da un server Web, mentre i client dovrebbero comunque essere in grado di autenticarsi in un server TURN separato.

Qual è la migliore pratica per il server STUN / TURN per accedere ai nomi utente e alle password dal database per autenticare i client? Se la maggior parte delle implementazioni o la soluzione si basa su una particolare implementazione del server STUN / TURN che supporta funzionalità specifiche, anche le raccomandazioni sui server STUN / TURN saranno apprezzate.

    
posta Mike Liu 01.08.2012 - 16:06
fonte

1 risposta

4

Dato questo:

  1. Entrambi gli schemi di autenticazione STUN originali (cioè credenziali a breve e a lungo termine) coinvolgono il server che conosce la password in chiaro di ogni utente;
  2. Gli stessi schemi di autenticazione sono suscettibili all'attacco del dizionario offline, a meno che non venga utilizzato TLS / DTLS; e
  3. Esiste un principio generale secondo cui le password devono essere gestite con riservatezza, anche se ciò causa notevoli disagi agli implementatori e agli operatori di sistema:

Quindi è preferibile mantenere le password a lungo termine fuori dal server STUN / TURN (anche se DTLS è usato per proteggerle sul filo), per minimizzare la superficie di attacco per il database di tutte le password.

Gli schemi di autenticazione fattibili sono quindi:

  • Autenticazione tramite credenziali a breve termine, consentita da RFC-5766 sezione 4 perché è almeno così strong come lo schema delle credenziali a lungo termine.
  • DTLS e autenticazione con credenziali a lungo termine, in cui il server STUN effettuerà chiamate remote a un archivio di password centrale per eseguire tutte le operazioni MESSAGE-INTEGRITY che richiedono la conoscenza delle password. L'archivio password centrale deve essere uno dei pochi sistemi soggetti a controllo e controllo della sicurezza dettagliati; avrebbe bisogno di nuove interfacce speciali per poter essere utilizzato dai server STUN.
  • Protocolli generali per ottenere le credenziali di autorizzazione, ad esempio API REST per l'accesso ai servizi TURN , SAML, diametro o anche leggermente usato in modo improprio OAuth.
  • DTLS e autenticazione con credenziali a lungo termine, in cui le password vengono assegnate esclusivamente per il servizio STUN e presumibilmente non correlate alle password reali degli utenti.

Di questi quattro, l'idea delle password specifiche per STUN è la più probabile causa di problemi perché ispirerà la rivolta tra gli utenti che hanno abbastanza problemi a ricordare una buona password.

L'idea di credenziali a lungo termine, con delega speciale a un server centrale, non è auspicabile perché aumenta inutilmente la superficie di attacco su quel server centrale.

Il sistema di credenziali a breve termine non è completamente specificato; le specifiche STUN / TURN non discutono sul modo in cui le credenziali vengono generate o trasportate. Dal momento che sarebbe necessario progettare un protocollo per generare tali credenziali e trasportarle sul client STUN e sul server STUN, sarebbe molto meno da ignorare lo schema di credenziali a breve termine e utilizzare invece uno dei nuovi protocolli federati. / p>

La scelta del protocollo generale non è molto importante, ma ovviamente sarebbe più semplice implementarne una che sarebbe condivisa con altri servizi. Al momento della stesura, tuttavia, L'API REST per accedere ai servizi TURN è la specifica più completa.

Pertanto, raccomando l'uso dell'API REST per ottenere nomi utente e password temporanei da un server HTTPS. Il server STUN / TURN convaliderà i nomi utente e le password utilizzando un segreto che condivide con il server HTTPS.

    
risposta data 01.09.2014 - 22:10
fonte

Leggi altre domande sui tag