sql >> Database >  >> RDS >> Mysql

Verbeter wachtwoord-hashing met een willekeurige salt

Een aanvaller is "toegestaan" om het zout te kennen - uw beveiliging moet zo zijn ontworpen dat het, zelfs met kennis van het zout, nog steeds veilig is.

Wat doet het zout?

Zout helpt bij de verdediging tegen brute-force-aanvallen met behulp van vooraf berekende "regenboogtabellen".
Zout maakt brute-force veel duurder (in termen van tijd/geheugen) voor de aanvaller.
Het berekenen van zo'n tabel is duur en wordt meestal alleen gedaan als het voor meer dan één aanval/wachtwoord kan worden gebruikt.
Als u hetzelfde zout voor alle wachtwoorden gebruikt, kan een aanvaller zo'n tabel vooraf berekenen en uw wachtwoorden bruut forceren in leesbare tekst ...
Zolang je een nieuwe (beste cryptografisch sterke) willekeurige salt genereert voor elk wachtwoord waarvan je de hash wilt opslaan, is er geen probleem.

ALS u de beveiliging verder wilt versterken
Je zou de hash meerdere keren kunnen berekenen (hash de hash enz.) - dit kost je niet veel, maar het maakt een aanval met brute kracht / het berekenen van "regenboogtabellen" nog duurder... vind jezelf niet uit - er zijn beproefde standaardmethoden om dit te doen, zie bijvoorbeeld http://en. wikipedia.org/wiki/PBKDF2 en http://www.itnewb.com/tutorial/Encrypting-Passwords-with-PHP-for-Storage-Using-the-RSA-PBKDF2-Standard

OPMERKING:

Het gebruik van een dergelijk mechanisme is tegenwoordig verplicht aangezien "CPU-tijd" (bruikbaar voor aanvallen zoals regenboogtafels/brute force enz.) steeds breder beschikbaar wordt (zie bijvoorbeeld het feit dat Amazon's Cloud-service tot de top 50 van snelste supercomputers wereldwijd behoort en door iedereen kan worden gebruikt voor een relatief klein bedrag)!



  1. Enige reden voor een GROUP BY-clausule zonder aggregatiefunctie?

  2. Mysql Selecteer rijen Waar twee kolommen niet dezelfde waarde hebben

  3. Hoe automatisch verhogen binnen een subset van de tabel MYSQL

  4. SQL-code programmatisch genereren