Lo stretching di un hash aumenta il rischio DoS (denial-of-service) e la protezione brute-force lo attenua?

0

Disclaimer: ho notato diverse domande su questo sito, ma nessuna risponde direttamente a queste due domande. Perciò non considero questo duplicato.

Personalmente mi piace molto l'articolo chiamato Alcune parole sull'uso della password, salatura e stretching da Michael Anders che spiega perché lo stretching è importante.

For the legitimate user it doesn't make a difference whether the program needs a microsecond to verify the password or a tenth of a second. He will not notice the difference. For the attacker it may be the difference between 1 day for an exhaustive search or the 100 thousand fold time of 300 years.

Mi chiedo se lo stretching esteso accresca il rischio di un denial-of-service (DoS) causato dall'esaurimento delle risorse. È probabile che sia più facile utilizzare più risorse del server quando si eseguono più tentativi di accesso (non allo scopo di accedere, forzare brute ma allo scopo di provocare un DoS).

In secondo luogo, una semplice protezione a forza bruta che impedisce alla password di raggiungere la funzione di controllo della password (compresi hashing e stretching) dopo una quantità X di tentativi di accesso non riusciti, probabilmente previene questo tipo di DoS (per esaurimento delle risorse)?

    
posta Bob Ortiz 28.07.2016 - 11:52
fonte

1 risposta

2

1) In un certo senso, sì, dal momento che il controllo della password su un hash allungato richiederà più tempo della CPU. Ma in ogni caso dovresti avere dei limiti di velocità per prevenire le password indovinare la forza bruta, e mentre lo fai, puoi prendere in considerazione il potenziale del DoS. Inoltre, i tentativi di accesso non saranno l'unico modo per (provare e) fare qualcosa, si potrebbe anche sovraccaricare il carico da altre richieste o semplicemente ricevere una quantità eccessiva di traffico di rete, evitando che richieste legittime ti raggiungano.

Penso che rendere più difficile decifrare le password in caso di perdita di un database di password valga il costo, ma ovviamente è un compromesso. Devi tenere conto della quantità prevista di accessi (validi) e che il sistema può gestirli. Con milioni di utenti, lo stretching potrebbe iniziare a prendere il suo pedaggio.

2) Sì, se si tenta di limitare la connessione e iniziare a negarli a priori, sarebbe inutile lavorare per eseguire l'hash completamente per un accesso che verrà negato. Tuttavia, restituire immediatamente un errore rivelerà attraverso la tempistica il fatto che la password non è stata nemmeno controllata.

    
risposta data 28.07.2016 - 12:30
fonte