Czy do twoich systemów można się łatwo włamać?
#1
Jak zwiększyć stopień bezpieczeństwa systemów przez „rozciąganie” haseł dostępu?
Kradzież haseł to nic nowego, ale ciągle o niej głośno. Każdy pamięta o niesławnym włamaniu do Ashley Madison, kiedy osobiste informacje użytkowników witryny dla niewiernych zostały odkryte przez hakerów, sprzedane w „ciemnej sieci” i opublikowane w internecie, gdzie każdy mógł się z nimi zapoznać.
[Obrazek: gettyimages-186867559.jpg?w=674&h=400&crop=1]
Mogłoby to jednak zdarzyć się każdej firmie, działającej w każdej branży – dane osobowe to jeden z kluczowych celów cyberataków. W rzeczywistości Twoje dane osobowe mogą być do kupienia w ciemnej sieci za zaledwie dolara.

Ostatnio hasła trafiają na nagłówki gazet również przez spór o iPhone’a – FBI pozwało Apple i próbuje zmusić firmę, aby pomogła złamać zabezpieczenia w telefonie terrorysty. Sprawa Apple’a rozpoczęła dyskusję o tym, czy firmy technologiczne powinny projektować algorytmy szyfrowania w taki sposób, aby można było je obejść na potrzeby służb publicznych.

Choć wielu uważa, że otwarcie tylnych drzwi przed FBI w niebudzącym wątpliwości przypadku terroryzmu jest uzasadnione, to sama możliwość istnienia takich tylnych drzwi jest mocno niepokojąca. A gdyby do telefonu nie próbowało dostać się FBI, ale haker? Tylne drzwi stanowią słaby punkt, który umożliwia hakerom uzyskanie dostępu do urządzeń i danych. A szyfrowanie jako takie nie pozwala przestępcom się ukryć.

W przypadku iPhone’a domyślna metoda szyfrowania okazało się wystarczająco skuteczna, aby powstrzymać FBI przed pełnym dostępem do danych przechowywanych w urządzeniu.

Jeśli wolałbyś, żeby Twoja firma nie trafiła na nagłówki gazet z powodu kradzieży haseł prowadzającej do ujawnienia tajemnic handlowych oraz osobistych danych pracowników, partnerów lub klientów, albo chcesz upewnić się, że masz rację, kiedy mówisz, że w Twoim systemie nie ma sposobu na złamanie poszczególnych haseł, musisz od samego początku robić wszystko tak, jak należy. „Od początku” to znaczy podczas przygotowywania dokumentacji ze specyfikacją wymagań. Tylko wtedy koderzy będą mogli odpowiednio zabezpieczyć Twoje systemy.

A zatem – jak podejść do haseł?

Ludzie mają tendencję do wymyślania haseł, które można dość łatwo złamać z wykorzystaniem odpowiednich narzędzi i wystarczającej mocy obliczeniowej. Aby zwiększyć stopień bezpieczeństwa, można użyć rozciągania kluczy w połączeniu z kryptograficzną funkcją skrótu. Użyteczność rozciągania kluczy wynika z faktu, że hasła użytkowników wystarczy weryfikować z taką szybkością, z jaką użytkownicy je wprowadzają.

[Obrazek: jarno-niemelc3a4.jpg?w=199&h=300]
Jarno Niemelä, Lead Researcher w F-Secure Labs, wyjaśnia:
Cytat:Napastnik, który atakuje metodą siłową (brute force), korzysta z faktu, że może wypróbować dziesiątki miliardów haseł na sekundę. Na przykład ten system demonstracyjny z 2012 r. podejmował 68 miliardów prób odgadnięcia skrótu SHA1 na sekundę, a nowoczesne karty pozwalają łatwo osiągnąć jeszcze większe prędkości. Ponadto dziś, zamiast budować klaster z kart graficznych, można po prostu wynająć go w chmurze Amazon i uzyskać taką prędkość, za jaką się zapłaciło.Używając rozciągania kluczy, ograniczasz liczbę prób z miliardów do dziesiątków tysięcy na sekundę. Na przykład klaster 25 kart graficznych z 2012 r. wykonywał 63 miliardy prób SHA1 na sekundę, ale w przypadku użycia Bcrypt był w stanie podjąć tylko 71 tysięcy prób.

Jarno napisał dwa artykuły poświęcone tworzeniu skrótów kryptograficznych i „soleniu” haseł, które możesz przeczytać sam albo polecić swoim administratorom z większym zacięciem technicznym: „Are you sure SHA-1+salt is enough for passwords?” oraz „No, Heavy Salting of Passwords is Not Enough, Use CUDA Accelerated PBKDF2”. Choć mają już kilka lat, wciąż pozostają aktualne.

W postach tych Jarno podkreśla, że samo tworzenie skrótów kryptograficznych i „solenie” to za mało. Trzeba ograniczać liczbę prób wprowadzenia hasła za pomocą zaawansowanych, matematycznych algorytmów, które zajmują komputerowi dużo czasu i których nie można obejść. Ograniczanie prób wyłącznie według zegara (na przykład jedna na sekundę) po prostu nie wystarczy. Warto też używać dwóch różnych algorytmów – jednego, który zapobiega obchodzeniu ograniczeń użycia pamięci, oraz drugiego, który zapobiega wykorzystaniu jeszcze bardziej efektywnych obliczeń.

Osobistym faworytem Jarno jest połączenie Bcrypt lub PBKDF2 z funkcjami Scrypt w taki sposób, że połowę przydzielonego czasu zużywa Bcrypt lub PBKDF2, a drugą połowę Scrypt. Scrypt oferuje bardzo skuteczną ochronę przed łamaniem haseł przyspieszanym przez procesor graficzny lub CUDA, a jeśli ktoś odkryje słaby punkt w funkcji Scrypt, hasło będzie nadal ściśle chronione przez Bcrypt lub PBKDF2.

Jarno podsumowuje:
Cytat:Inną kluczową sprawą jest wybór wystarczająco wielu iteracji dla funkcji rozciągających klucz. Należy zmierzyć liczbę iteracji odpowiadającą czasowi, który można przeznaczyć na weryfikację logowania jednego użytkownika. Na przykład 500 ms w przypadku urządzenia mobilnego lub komputera osobistego oraz 1-10 ms w przypadku serwera.

Źródło: F-Secure
Odpowiedz


Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości