Stripping / caratteri aggiunti dalla password utente prima dell'hash per nasconderlo per sempre?

1

Ho avuto questa idea di nascondere permanentemente la password dell'utente richiedendo una lunghezza minima, quindi eliminando alcuni caratteri. Ad esempio, se la password dell'utente è secret123 , il sistema lo ridurrà a ecrt12 , aggiungerà caratteri casuali ad esso come ecrt12!@#$%^&* prima dell'hashing, aggiungendo salt, ecc., Quindi memorizzandolo su DB.

Sono state utilizzate anche tutte le pratiche comuni come:

  • sale unico per utente
  • pepe del sistema
  • bcrypt / scrypt o qualsiasi altra migliore cripta algo disponibile

Per riepilogare nel codice:

$hash = hash($modifiedpassword.$uniquesalt.$systempepper) // iterato a 1000 s.

Nel caso in cui un utente malintenzionato riesca a invertire tutti gli hash, le migliori informazioni che potrebbero mai recuperare sono ecrt12!@#$%^&* e non l'originale secret123 . Anche se hanno hackerato il codice di sistema, non sapranno mai quali caratteri sono stati spogliati.

La mia domanda ora è come esperti di sicurezza, consiglieresti questa pratica di rimuovere / aggiungere la password dell'utente originale?

    
posta IMB 29.04.2012 - 11:57
fonte

1 risposta

5

Come garantiresti che gli "stessi" caratteri casuali vengano utilizzati ogni volta che lo stesso utente immette la loro password? Puoi solo garantire che se li scrivi (o in altro modo deterministicamente li genera), quindi "! @ # $% ^ & *" nella tua "password" è in realtà solo un'altra parte del sale.

Questo ti lascia in una situazione in cui hai convertito la password dell'utente da "secret123" all'espressione regolare "^ .ecret12. $", che riduce la complessità effettiva della password da 9 caratteri a 7 caratteri. Sarà consentito a un utente malintenzionato che tenta "pecret129".

Per rispondere direttamente alla domanda e prendere in prestito un preventivo da ewanm89 di seguito: no. Non consiglio di farlo.

    
risposta data 29.04.2012 - 12:16
fonte

Leggi altre domande sui tag