Usa la forza bruta per mitigare la forza bruta

2

Solo un'idea che avevo, e sono sicuro che c'è molto materiale su questo argomento, quindi sto cercando un puntatore per trovare ulteriori informazioni.

La mia idea è questa ...

Quando si memorizza una password in un database, è normale archiviarla come hash. Questo è debole contro le tavole arcobaleno, che viene mitigato aggiungendo sale, ed è anche debole contro gli attacchi di forza bruta.

Penso che sia possibile memorizzare l'hash, modificato con una piccola stringa casuale ...

Usando md5

mypass -> 2b643a4d56186389d84dbb3a9a483e99

Se hai l'hash, la password può essere trovata semplicemente facendo un hashing di tutte le password possibili, e confrontando l'hash, quindi ...

// append a random 3 character string of a-z characters, we can use "xth" for this example
mypassxth -> 02a2247c788681af6ce1bb5fa66dd4c0

La stringa casuale non viene mai memorizzata, mai condivisa e si trova solo in memoria sul server al momento dell'archiviazione dell'hash.

Questo rende la ricerca delle password meno efficiente, perché il server deve controllare tutte le richieste in arrivo forzando brute l'input parzialmente completo contro l'hash memorizzato, che in questo caso significherebbe un limite superiore di 17576 (26 ^ 3) assegni per convalidare la password.

Anche in questo caso renderebbe l'attacco brute force molto più difficile, un limite superiore (supponendo solo a-z) di 5429503678976 (26 ^ 9) piuttosto che 308915776 (26 ^ 6).

Suppongo che sia come usare un sale molto piccolo, che non è memorizzato da nessuna parte, che richiede la forzatura bruta durante le operazioni di ricerca.

Supponendo che non mi manchi completamente qualcosa di ovvio che rende questo non funziona, qualcuno può dirmi come si chiama questo concetto o indicarmi un punto in cui posso leggerlo?

    
posta Billy Moon 01.04.2013 - 14:21
fonte

1 risposta

10

Seriamente, non essere un Dave e lanciare la tua crittografia.

Utilizza un KDF comprovato come PBKFD2 , bcrypt o scrypt per cancellare le tue password. Consulta questa ottima risposta per ulteriori informazioni su come utilizzare in modo sicuro le password hash.

Per il tuo schema, mypass non è essenzialmente la tua password. mypassxth è. Un utente malintenzionato non ha problemi a forzare la password con la sua piccola GPU mentre stai usando MD5 . Ciò non ha alcuna influenza sulla capacità degli hacker di utilizzare la tua password come bruteforce, e rende solo l'hashing delle password molto più costoso dal punto di vista computazionale per i tuoi server.

Se utilizzi un buon KDF come bcrypt invece di MD5 per l'hashing della password, questo schema aggiungerà molto di carico aggiuntivo sui tuoi server con un guadagno minimo.

    
risposta data 01.04.2013 - 14:27
fonte

Leggi altre domande sui tag