Ne használj MD5 titkosítást

„Az egyirányú függvények úgy működnek, hogy az egyik irányban nagyon könnyű őket kiszámolni, a másik irányban pedig nehéz. Ez utóbbi arra hagyatkozik, hogy matematikailag meg lehet mondani, mekkora számítási kapacitás kell ahhoz, hogy kiszámoljuk. Ahogy nő a számítógépek képessége, úgy egy-egy hash függvény elavulttá válik. Pont ez a probléma az MD5-tel, hogy erre léteznek már algoritmusok, melyekkel vissza lehet fejteni az eredeti jelszót. Az általánosságban elmondható, hogy ha valaki MD5-öt használ, ismeri a titkosítási alapelvet, de nem a megfelelő függvényt, az aktuális szabványt használja.”
Miért problémás így titkosítani?

A hash egy egyirányú függvény, aminek ha megadunk egy tetszőleges hosszúságú szöveget, akkor abból egy fix hosszúságú, egyedi azonosítót generál. Az adott adatbázisokban ezt az egyedi hash-t és nem magát a jelszót tárolják sima szövegként.

Például: szormok = 7ac71ad56115c8fb73392549d3a78540

Modern rendszereknél a jelszavakat lassú, egyirányú függvényekkel kódolják (pl. Bcrypt, Scrypt vagy PBKDF2 10000+) Az MD5 viszont egy nagyon gyors függvény, így gyorsan végigpróbálható számos lehetőség. Példaképp a mai számítógépes kapacitások figyelembevételével, egy GTX980-as videókártyával MD5 esetén egy másodperc alatt 9745 millió hash-t tudnak végigpróbálni, míg Scryptnél másodpercenként csak 12 (!!) hash-t –azaz: egy másodperc alatt az A betűtől eljutnak az L-ig.

A brute force jelszótörő programok (pl. hashcat) mellett úgynevezett rainbow table-kkel is visszafejthetőek az egyszerűbb jelszavak. Ez lényegében egy óriási táblázat, ami az összes létező jelszókombinációt és a hozzá tartozó hash-t tartalmazza adott hosszúságig.

Így gyorsan visszafejthető, hogy ki használja az adatbázisban a “7ac71ad56115c8fb73392549d3a78540” jelszót, ami jelen esetben a “szormok”.

forrás: http://24.hu/tech/2017/07/25/regisztralt-a-bkk-e-jegy-rendszereben-hozzaferhettek-az-adataihoz/

Blogbook : PHP | Javascript | Laravel | Corcel | CodeIgniter | VueJs | ReactJs | WordPress