Vantaggi di TLS-SRP quando il segreto deve essere scambiato online?

1

Ho alcune domande pratiche su SRP quando il segreto condiviso deve essere stabilito online.

  1. C'è un modo per stabilire il segreto condiviso online senza l'uso di HTTPS?
  2. Se hai già utilizzato HTTPS per stabilire il segreto condiviso, perché preoccuparti di TLS-SRP? Significato, qual è il vantaggio del passaggio a TLS-SRP se già ti fidi di HTTPS?
  3. Il link afferma che "SRP memorizza la password sul server in un modo non recuperabile." Che cosa impedisce a un utente malintenzionato di individuare la password dell'utente utilizzando un attacco a forza bruta nello stesso modo in cui attacchi i database che memorizzano gli hash delle password?
posta Gili 26.05.2014 - 04:33
fonte

1 risposta

5

SRP è per situazioni in cui già hanno un segreto condiviso tra client e server, ad es. come parte di una procedura di "accoppiamento" che si verificherebbe naturalmente nel tuo contesto (ad esempio, SRP è stato proposto per le periferiche Bluetooth: un dispositivo ha uno schermo e visualizza un codice, l'altro dispositivo ha una tastiera su cui è inserito il codice) . Per una situazione "completamente online" dove non c'è mai l'occasione di ottenere un tale segreto condiviso, SRP ha un piccolo vantaggio. La sicurezza deve iniziare da qualche parte.

In SRP, ciò che il server memorizza è in effetti una sorta di hash della password - solo "ordinamento" perché il valore memorizzato deve anche soddisfare alcune strutture matematiche in modo che possa essere utilizzato nel protocollo. Quel valore non può essere immediatamente usato per l'autenticazione come client, ma, come ogni password con hash, è effettivamente suscettibile alla forza bruta. La magia di SRP è che l'osservazione dei pacchetti di dati sul filo non è sufficiente per applicare un attacco di dizionario sulla password; tuttavia, ciò che il server memorizza permette un tale attacco (e, in un modo molto generale, questo è inevitabile).

In TLS / SRP come attualmente specificato, il valore memorizzato sul server è calcolato come:

    x = SHA1(s | SHA1(I | ":" | P))
    v = g^x % N

dove s è il sale, I il nome utente, P la password e v è quello che è memorizzato ( x non è memorizzato). g e N sono parametri SRP (pubblici). Se l'autore dell'attacco può ottenere il valore v , allora può "provare le password" eseguendo il calcolo sopra.

Questo è un hash salato (va bene), ma è anche un hash abbastanza veloce (che è cattivo). SRP potrebbe essere abbinato a una buona funzione hashing password (ad esempio bcrypt), con i seguenti avvertimenti:

  • Non esiste uno standard specificato o di fatto per quello. Ma sia il client che il server devono essere d'accordo sul particolare.
  • Se viene utilizzato l'hashing lento, quindi, quando viene eseguita una connessione, deve avvenire sul client, non sul server. Quindi questo funzionerà alla velocità del client.
risposta data 26.05.2014 - 12:53
fonte

Leggi altre domande sui tag