Quali pro e contro ci sono per un salt casuale di una volta tra client e server?

3

Nella ricerca sulle migliori pratiche nelle password di hashing che utilizzano un salt mi sono imbattuto in presentation su slideshare. L'approccio delineato è il seguente

  1. Client requests login page
  2. Server-side code generates random SALT and sends the SALT back to client along with login form
  3. Client-side JavaScript generates a hash of the password entered by the user added to the salt (hashpwd + salt) called A and sends this to server along with the username
  4. Server-side code retrieves the hashed password for this user from the db and uses it to generate a new hash (hashpwd + salt), called B.
  5. Server-side code compares A and B and if they match the user is authenticated.
  6. Salt is destroyed on server-side.
  7. The next sign-in request generates a new SALT that only survives for that request.

In questo approccio le password vengono archiviate nel database con hash ma senza sale. Quindi se le password vengono rubate (come LinkedIn), ho ragione nel dire che questo approccio è inutile? Senza un hash la password può essere violata abbastanza facilmente. Quale protezione offre questo approccio? Penso che impedisca gli attacchi di replay generando un nuovo SALE e rende impossibile anche gli attacchi di forza bruta dal front-end. Sarei interessato a conoscere approfondimenti su questo approccio e una buona lista di pro e contro dell'approccio. Non sono un esperto di sicurezza con nessuno sforzo di immaginazione.

    
posta Peter Kelly 19.06.2012 - 16:42
fonte

3 risposte

4

In effetti, questo approccio non aiuta contro il furto del database delle password. È più facile capire perché: riguarda solo lo scambio di dati e non ha alcun impatto sul formato del database. Poiché il database memorizza gli hash diretti delle password, è vulnerabile a un attacco di una tabella arcobaleno, rendendo tutte le password tranne l'entropia più elevata.

Questo valore casuale una tantum è un nonce , e tali valori sono infatti comunemente usati nei protocolli di comunicazione per evitare la riproduzione attacchi. Senza un nonce, un utente malintenzionato potrebbe origliare una conversazione legittima e ripetere successivamente la fase di accesso con il server. Potresti trovare tali implementazioni perché è utile con le seguenti ipotesi:

  • la comunicazione utilizza HTTP;
  • l'utente malintenzionato può ascoltare passivamente tutte le comunicazioni TCP / IP ma non può parlare direttamente con qualsiasi client, solo al server.

Esistono vecchie applicazioni Web progettate in base a queste ipotesi. Aggiungere un nonce alla fase di accesso era un peso significativo per gli aggressori nei giorni in cui erano per lo più studenti universitari annoiati nei campus universitari. Nel mondo odierno di strumenti di rete e dispositivi informatici onnipresenti, supponendo che le connessioni TCP non possano essere dirottate non è realistico. Tale protocollo è vulnerabile a un attacco man-in-the-middle in cui l'attaccante fornisce una risposta DNS falsa al client o dirotta la connessione TCP. L'utilizzo di HTTPS (con l'autenticazione corretta del server, ovvero la corretta convalida del certificato) rende l'aggiunta di un nonce al protocollo di accesso stesso ridondante (HTTPS stesso contiene un nonce in modo che le connessioni non possano essere riprodotte).

    
risposta data 19.06.2012 - 17:45
fonte
2

Hai ragione nel dire che questo tipo di sale non ritarda il crack delle password se si ottiene un database di password. Le tabelle Rainbow possono essere utilizzate per decifrare facilmente le password.

Dalla mia esperienza (molto limitata), non ho visto alcuna implementazione di tale funzionalità.

Non vedo davvero come impedirebbe una bruteforce attaccata dal front-end dell'applicazione, in quanto un nuovo salt viene generato, aggiunto e confrontato ogni volta, mentre l'hash della password rimane lo stesso.

L'unica cosa che posso pensare è che un attaccante passi una sessione di accesso come un'altra (ogni volta sali diversi), sebbene tali cose possano essere tracciate facilmente attraverso i log.

Note : non ho effettivamente cliccato tra le diapositive e baso la mia risposta sullo schema che hai fornito.

Sarei interessato a sentire qualsiasi opinione contraria, perché non vedo davvero come sia utile.

    
risposta data 19.06.2012 - 17:18
fonte
2

In tali usi è un nonce, non un SALT, e ciò che stai descrivendo è una forma di protocollo di risposta alla sfida. Vedi CRAM-MD5 per un protocollo standardizzato simile a quello che stai suggerendo (è circa un passo diverso).

    
risposta data 19.06.2012 - 17:48
fonte

Leggi altre domande sui tag