Argon

https://xpil.eu/QRpKV

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.

https://xpil.eu/QRpKV

Leave a Comment

Komentarze mile widziane.

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.