Si può trovare il valore di un "sale costante" se possono impostare la password e ottenere l'hash?

3

Dicendo che abbiamo un oracolo che un utente malintenzionato può usare tutto il tempo che vuole. L'utente malintenzionato può inviare un% nonpassword vuoto a questo Oracle. L'Oracle esegue l'hashing della password utilizzando sha256(password + pepper) e lo invia all'attaccante.

Il valore del pepe non cambia mai (è una cattiva costante costante)

C'è un modo in cui un attaccante può indovinare il pepe? Come potrebbe l'aggressore chiamare l'oracolo per ottenere quel pepe?

Si applica lo stesso attacco se Oracle utilizza un metodo hash_hmac('sha256', password, pepper) invece di sha256(password + pepper) semplice? Questo vale per sha256(pepper + password) anziché sha256(password + pepper) ?

Ho visto la domanda È possibile ottenere il sale se ho l'hash e la password originale? ma lì, abbiamo una condizione in più: l'attaccante può ottenere il maggior numero di coppie dihash; original password che vogliono per recuperare il pepe costante, quindi questa condizione potrebbe cambiare molto?

La mia ipotesi è che si possa recuperare il pepe, ma non sono sicuro di come sarebbe stato fatto. Il processo per recuperarlo non è molto importante, ma voglio avere una prova che tale processo esiste ed è fattibile.

    
posta Xenos 14.06.2018 - 15:37
fonte

3 risposte

1

Un utente malintenzionato che conosce la password e l'hash ma non il pepe si trova nella stessa posizione dell'aggressore che conosce il sale e l'hash, ma non la password.

Inserimento in un altro modo: hashedValue = hashFunction('thing attacker have', 'thing attacker does not have') .

Sul classico attacco del database trapelato, l'utente malintenzionato conosce il sale e l'hash, non la password. Nel tuo caso, conosce la password e l'hash. Sembra diverso, ma è lo stesso. Niente di diverso.

di difficoltà? Dipende dalla lunghezza del peperone. Se è una stringa casuale di 128 byte, è difficile quanto bruteforcing di una password casuale di 128 byte.

    
risposta data 14.06.2018 - 16:16
fonte
0

Il modo più semplice è attraverso la forza bruta che dipende dalla dimensione del pepe. Altrimenti ci vorrebbe un attacco crittografico contro SHA-256 stesso. Al momento non sono noti attacchi di questo tipo.

Is there a way an attacker can guess the pepper? How would the attacker call the Oracle to get that pepper?

Se l'input sconosciuto è sufficientemente piccolo, una ricerca esaustiva regolare può essere in grado di trovarlo. Altrimenti, sarebbe necessaria una grave vulnerabilità crittografica nello stesso SHA-256.

Do the same attack applies if the Oracle uses a hash_hmac('sha256', password, pepper) method instead of simple sha256(password + pepper)?

Un HMAC attenua gli attacchi di estensione della lunghezza, che non sono utili all'attaccante qui. Ci sono alcuni attacchi che un HMAC può rendere più difficile, come gli attacchi di collisione (MD5 è vulnerabile alle collisioni con 2 18 difficoltà, ma HMAC-MD5 non è con il previsto 2 64 difficoltà, per esempio). Anche qui questi attacchi non sono rilevanti. In teoria, HMAC può rendere più difficili alcuni attacchi, ma supponendo che SHA-256 sia un PRF ideale, un HMAC non fornisce alcun vantaggio.

Do this applies for sha256(pepper + password) instead of sha256(password + pepper)?

Il primo è più sicuro in teoria. Questo perché potresti calcolare quale H (a || b) sarebbe, anche se ti viene dato solo H (a) sfruttando un attacco con estensione di lunghezza. In quanto tale, H (a || b) è probabilmente non meno sicuro di H (a) . Al contrario, potrebbe essere meno sicuro (in teoria). Questo perché H (b || a) è equivalente a H '(a) , dove H' è SHA-256 con H (b) come IV. Una preimage che consente a b controllata dall'aggressore di risolversi in una IV debole può rendere H '(a) più debole.

    
risposta data 15.06.2018 - 05:26
fonte
-1

Ci sono tre potenziali modi in cui l'attaccante può determinare il pepe.

  1. Bug di implementazione in Oracle. Se l'Oracle ha un bug, tale da far trapelare informazioni sul pepe (overflow del buffer, ecc.), L'hacker potrebbe essere in grado di determinare il pepe.

  2. Pepe di bassa entropia. Se il pepe ha un'entropia molto bassa di dire 32 bit, è banale dare all'Oracle una password conosciuta, quindi sul proprio computer fare semplicemente sha256 (known_password + n), per tutti i 32 bit di n fino a quando non si ottiene il valore dell'Oracolo ti ho dato Se il pepe è sufficientemente grande, questo non è fattibile.

  3. Un difetto di progettazione appena scoperto in SHA256 che perde informazioni su ciò che è stato sottoposto a hash. (Non ci sono difetti di progettazione noti come questo a partire da giugno 2018).

risposta data 14.06.2018 - 16:58
fonte

Leggi altre domande sui tag