Je偶eli kto艣 jeszcze pami臋ta m贸j niedawny artyku艂 na temat solenia hase艂, by膰 mo偶e zainteresuje go (lub j膮) dzisiejszy wpis. B臋dzie kr贸tko i zwi臋藕le, obiecuj臋.
Istnieje wiele r贸偶nych zastosowa艅 dla funkcji skr贸tu (zwanej te偶 funkcj膮 haszuj膮c膮 - hashing function). Na przyk艂ad mo偶na wygenerowa膰 skr贸t (hasz) danych w pojedynczym rekordzie w bazie danych i wykorzysta膰 go potem do wydajnego sprawdzania, czy dane uleg艂y zmianie (pami臋taj膮c o potencjalnych kolizjach, ma si臋 rozumie膰). W takiej sytuacji oczywi艣cie zale偶e膰 nam b臋dzie na jak najkr贸tszym czasie haszowania danych - je偶eli chcemy wyliczy膰 hasze dla miliona rekord贸w, a czas wyliczenia pojedynczego hasza zajmie milisekund臋, to ca艂a operacja zajmie nam nieca艂e 20 minut. Przy miliardzie rekord贸w to ju偶 oko艂o dw贸ch tygodni. I tak dalej.
Jednak w przypadku haszowania hase艂 sytuacja wygl膮da dok艂adnie na odwr贸t: zale偶y nam na tym, 偶eby wygenerowanie skr贸tu by艂o WOLNE. Nie ZA wolne, w ko艅cu nie chcemy, 偶eby u偶ytkownik siedzia艂 wgapiony w ekran przez pi臋膰 minut przy ka偶dym logowaniu si臋 do systemu, ale na tyle wolne, 偶eby atak metod膮 brute-force (czyli "zgadywania") by艂 nieop艂acalny czasowo.
Wszystko pi臋knie, ale jest tu jeszcze jeden haczyk: wsp贸艂czesne komputery cz臋sto wyposa偶one s膮 w wysokowydajne karty graficzne z setkami albo i tysi膮cami r贸wnoleg艂ych potok贸w przetwarzaj膮cych. Je偶eli czas na wyliczenie jednego hasza wynosi tysi膮c milisekund (czyli sekund臋 - bardzo d艂ugo), to zapuszczaj膮c algorytm brute-force na karcie z tysi膮cem potok贸w przetwarzaj膮cych przyspieszamy proces 艂amania has艂a tysi膮ckrotnie i takie zabezpieczenie niewiele zmienia.
Trzeba doda膰 drugi element, kt贸ry spowoduje, 偶e atak metod膮 brute-force b臋dzie nieop艂acalny: pami臋膰. Wyliczenie hasza musi zu偶ywa膰 du偶o pami臋ci operacyjnej. Na tyle du偶o, 偶eby nie da艂o si臋 uruchomi膰 r贸wnocze艣nie wielkiej ilo艣ci proces贸w haszuj膮cych, ale jednocze艣nie na tyle niedu偶o, 偶eby komputery z ka偶dej p贸艂ki mog艂y bez problemu wyliczy膰 pojedynczego hasza. Czyli na przyk艂ad sto megabajt贸w. Albo p贸艂 gigabajta. W takiej sytuacji "w艂amywaczowi" nie pomo偶e ani ogromna ilo艣膰 potok贸w r贸wnoleg艂ych, ani du偶o RAM-u. Algorytm haszuj膮cy bardzo szybko zu偶yje zasoby systemu w艂amywacza sprawiaj膮c, 偶e szukanie hase艂 metod膮 brute-force stanie si臋 nieop艂acalne.
Do niedawna w dziedzinie takiego w艂a艣nie bezpiecznego haszowania hase艂 kr贸lowa艂y algorytmy scrypt i bcrypt (zainteresowanych odsy艂am do Google), jednak od niedawna na horyzoncie pojawi艂 si臋 nowy gracz, 艂膮cz膮cy w sobie wszystkie mo偶liwe zalety oraz eliminuj膮cy wady dotychczasowych rozwi膮za艅: Argon.
Niewykluczone, 偶e w kr贸tkim czasie Argon stanie si臋 og贸lno艣wiatowym standardem do haszowania hase艂 - na dzie艅 dzisiejszy istniej膮 ju偶 implementacje we wszystkich popularnych j臋zykach programowania oraz na wszystkie popularne platformy systemowe.
S膮dz臋, 偶e warto t臋 nazw臋 zapami臋ta膰.
Ot, co.
Je偶eli chcesz do komentarza wstawi膰 kod, u偶yj sk艂adni:
[code]
tutaj wstaw sw贸j kod
[/code]
Je偶eli zrobisz liter贸wk臋 lub zmienisz zdanie, mo偶esz edytowa膰 komentarz po jego zatwierdzeniu.