Vale la pena riempire le password?

4

Sto usando phpass (bcrypt) per hash la password e SSL quando è trasmessa, e usando PDO (con PHP) per fermare le iniezioni, vale la pena riempire la password, in modo che se l'utente immette "123456" come la password prima che l'hash sia preceduta da un prefisso e / o da un suffisso, ad esempio

123456 

diventa

abcZYX123456£%$£@&$%

(prefisso "abcZYX" e suffisso "£% $ £ @ & $%")

che viene poi salato e hash.

il prefisso e il suffisso potrebbero essere uguali o diversi per ogni password

o potrebbe essere meglio richiedere lunghezze e combinazioni minime

Ad esempio:

Must be at least 10 characters, and have a capital letter, number and symbol

O è meglio solo hash e salare la password?

    
posta Ray Britton 03.06.2013 - 16:54
fonte

3 risposte

2

È meglio imporre un requisito di lunghezza, dal momento che si sta già utilizzando un algoritmo di hash delle password complesse. Poiché il "padding" è aggiunto nel codice del tuo sito, non è strongmente protetto. Anche nel migliore dei casi, quando un utente malintenzionato non conosce il padding, se un utente è autorizzato a scegliere una password abbastanza breve, è ipotizzabile che venga violato, rivelando lo schema di riempimento.

Per i requisiti di complessità, è probabilmente meglio dare un feedback immediato (JavaScript) sulla forza della password all'utente quando scelgono la password. Gli utenti saranno contrapposti a policy rigorosamente applicate (diverse dalla lunghezza, entro limiti ragionevoli) e la scelta dell'algoritmo dovrebbe fornire una resistenza sufficiente per crackare le password di una lunghezza ragionevole.

    
risposta data 03.06.2013 - 17:03
fonte
1

Non vedo molto lo schema di padding che descrivi.

Se l'attaccante sta eseguendo una bruteforce online, i suoi tentativi passeranno comunque attraverso lo schema di riempimento, quindi non c'è un punto.

Se l'attaccante ha ottenuto un hash dump e sta tentando un attacco offline contro gli hash, lo schema di padding potrebbe rallentare un attaccante alquanto se non ha anche compromesso il tuo codice sorgente nel processo. Naturalmente, poiché lo schema di padding è stato risolto, probabilmente non ci vorrà molto tempo prima che un attacker calcoli il tuo schema di padding e lo aggiunga al suo processo di cracking della password.

I requisiti di complessità della password possono essere una buona idea, purché non esagerare. Ci sono molte domande esistenti sul sito che affrontano proprio questo problema, fai una ricerca per loro.

Nel complesso, sei sulla strada giusta per l'archiviazione delle password. bcrypt con un grande numero di iterazioni dovrebbe essere sufficiente. Non penso che lo schema di padding sia necessario o utile.

    
risposta data 03.06.2013 - 17:00
fonte
1

L'aggiunta di un prefisso ha valore in alcuni scenari specifici , tuttavia in generale ciò che stai proponendo aggiunge sicurezza. Un utente malintenzionato non in linea conoscerà il prefisso o lo scoprirà molto rapidamente, a quel punto il padding ha un effetto pari a zero sulla velocità con cui può eseguire il crack degli hash.

Stai già facendo la cosa giusta usando bcrypt, mettendoti chilometri avanti rispetto alla curva, quindi ottimo lavoro.

    
risposta data 03.06.2013 - 17:03
fonte

Leggi altre domande sui tag