Come calcolare la quantità totale di combinazioni di password possibili con valori salt?

2

Sto leggendo questo libro su Computer Security per prepararmi meglio al mio ruolo, tuttavia, questa domanda non mi sta facendo clic. Ho capito a metà, ma non riesco a capire questa ultima parte. Se qualcuno può mostrarmi come, sarebbe fantastico.

La domanda:

Assume that passwords in a system are limited to the use of 95 printable ASCII characters and that all passwords are 10 characters in length. Assume the system is not using any salt values.

a. How many different passwords are possible? 95^10 possible passwords

b. Assume a password cracker with an encryption rate of 6.4 million encryptions per second. How long will it take to test all possible passwords? 296,653 years (based on my calculations)

Suppose that there are only 4 users in the system described in part (I) of the question, and each user has a different salt value (stored as plain text in the password file).

c. If the password cracker above is used, how long will it take to test all possible passwords?

Non riesco a capire la domanda C. La possibilità aggiunta di 4 utenti e diversi valori di sale mi sta davvero buttando fuori. Se potessi capire le diverse combinazioni, il tempo necessario per testare tutte le password sarebbe da calcolare. Se qualcuno può mostrarmi come scoprirlo, sarebbe fantastico!

    
posta user125642 26.09.2016 - 19:39
fonte

4 risposte

4

Il sale viene conservato in posizione normale, accanto all'hash, quindi non è necessario testare più combinazioni di sali quando è noto il sale corretto. Ciò renderà i tuoi calcoli semplici.

Se non c'è sale, si potrebbero crackare tutte le password in un unico lavoro a forza bruta.

Ma se ognuno dei 4 utenti ha un diverso Sali, allora ci vorranno 4 lavori di forza bruta separati.

Quindi 296,653 anni per un singolo sale × 4 sali unici = 1,186,612 anni per decifrare le password per tutti gli utenti.

    
risposta data 26.09.2016 - 19:57
fonte
2

Essendo nitpicky - per b., se usi anni come unità di tempo, assicurati di usare 365,25 giorni / anno invece di 365, dovresti tenere conto del bisestile.

c. è difficile La domanda iniziale ti chiede di presumere che il sistema non stia usando alcun valore di sale. Nella prefazione per la parte c, si dice che ogni utente ha un sale unico. Non lasciarti scoraggiare. Il testo precedente a questa domanda indica quale algoritmo di hashing è stato utilizzato per cancellare le password inizialmente? Se non viene menzionato il tempo impiegato per includere un sale definito e ogni sale è univoco per hash della password, il calcolo è immediato.

In questo esempio, il software impiegherebbe 296k anni per craccare una password senza sale e non ci sarà alcuna penalità di tempo per la salatura, quindi supponiamo che ogni sale unico richieda la stessa quantità di tempo per password. Non esiste inoltre alcuna specifica che il password cracker sia multi-thread. Il calcolo sarebbe:

  • (x (passwords) * rate (tempo / password)) / n (thread) = tempo
  • (4 password * 296 anni K) / 1 discussione = 1.185 anni M

Inoltre ... se i sali sono uguali per password, una risposta corretta sarebbe "meno di 1.185M anni", altrimenti la tua risposta sarebbe solo "1.185 M anni".

    
risposta data 26.09.2016 - 20:10
fonte
2

Ciò che i Sali per utente unici fanno è fare in modo che i calcoli eseguiti per attaccare la password di un utente siano inutili per attaccare qualsiasi altro utente. In alternativa, se non ci sono sali, quindi per ogni password che l'utente malintenzionato tenta, ottengono di testare la password con tutti e quattro gli hash degli utenti. Se ci sono sali unici, l'attaccante deve eseguire un attacco a forza bruta separato per ogni immissione di password.

Questo dovrebbe essere sufficiente per un suggerimento.

Devo aggiungere che sono preoccupato per la qualità del materiale didattico che stai utilizzando. Hai appena citato un minuscolo frammento, eppure vedo diverse bandiere:

  1. Si parla di "crittografia" delle password anziché di hashing .
  2. 6,4 milioni di "crittografie" al secondo non sono così veloci come potrebbe sembrare. Le GPU sono in grado di calcolare ordini di grandezza di più hash al secondo. Non influenza la risposta del problema, ma migliorarne il realismo andrebbe bene.
  3. Il numero di maggiore interesse non è il tempo necessario per testare tutte le password, ma piuttosto il tempo medio finché l'autore dell'attacco non riesce.
  4. La stima del tempo presuppone che gli utenti scelgano le loro password in modo uniforme a caso, il che non è il modo in cui la maggior parte degli utenti della vita reale lo fanno.

Per espandersi sul terzo punto, il cracker dovrebbe essere estremamente sfortunato per la loro ultima forza bruta che l'ipotesi sia quella giusta. Sarebbe il caso peggiore ; in media, hanno solo bisogno di testare metà delle possibili password per avere successo.

(E se stiamo parlando di quattro utenti con password non salate , e crediamo che l'obiettivo sia quello di forzare la una password, che trimestri ulteriormente il tempo previsto fino al successo.)

Al punto # 4, se l'attaccante può indovinare le password più probabili prima di quelle improbabili, ciò riduce il tempo previsto fino al successo. Nella vita reale, il cracking delle password utilizza una varietà di tecniche per tentare ciò (ad es. Dizionari di password comuni) e quelle tecniche hanno molto successo.

    
risposta data 26.09.2016 - 20:36
fonte
0

Spero sinceramente che le password siano (a senso unico, preferibilmente tramite una funzione lenta) hash, non (reversibilmente) crittografate . Ci sono pochissime situazioni in cui la crittografia delle password di accesso è una buona idea (soprattutto perché, se lo fai, un utente malintenzionato che è riuscito a rubare i tuoi verificatori di password probabilmente è anche riuscito a rubare la chiave di crittografia e impiegherà millisecondi per decifrare i verificatori e recuperare le password)

Supponendo che siano sottoposti a hash, non crittografati, l'aggiunta di un salt non richiede un tempo aggiuntivo per password , perché il sale è solo prefissato (o aggiunto) ad ogni valore di password indovinato prima di eliminarlo e controllare l'hash. Tuttavia, significa che ogni password deve essere forzata brutalmente indipendentemente; anche se si compete l'intero spazio di ricerca per la password 1, ciò non ti salverà affatto con la password 2 perché il sale è diverso. Non ho intenzione di darti la risposta qui, ma sai quanto tempo impiegheresti per forzare la password una in modo indipendente ...

    
risposta data 26.09.2016 - 19:58
fonte

Leggi altre domande sui tag