Temat: Metody lamania hashy - tabele przegladowe/pogladowe, wyszukiwania wstecznego, teczowe. Kolizje hashujace. Zalecenia tworzenia 'soli'. Lista OWASP Top Ten najczesciej wystepujacych podatnosci. Odpowiedzi na najczescie zadawane pytania m.in. : 1)co zaleca sie spelnic, aby moc pisac (bezpieczne) aplikacje internetowe obslugujacej wrazliwe dane, 2) Co nalezy zrobic, jesli baza danych kont uzytkownikow ulegnie wyciekowi/shakowaniu? itp. Do opracowania ponizszych punktow wykorzystaj informacje z artykulu(przewodnika) "Doing it Right" oraz z opis uzupelniajacy znajdujacy sie w tym pliku tekstowym. https://crackstation.net : Salted Password Hashing - Doing it Right (https://crackstation.net/hashing-security.htm) (uwaga! Jesli potrzebujesz przetlumaczyc poradnik to zaleca sie uzycie tlumacza google np. przegladarki chrome) Pomimo wzglednie poprawnego tlumaczenia (z google) spotkasz sie z nastepujacymi nie do konca poprawnie przetlumaczonymi frazami: niepoprawne tlumaczenie: poprawne tlumaczenie: hash algorithms - algorytmy mieszajace -> - algorytmy hashujace hash - skrot -> - hash cryptographic hash functions - kryptograficzne funkcje skrotu -> - kryptograficzne funkcje hashowania hashed - szyfrowane -> - hashowane 1. Co stanowi najwazniejszy aspekt systemu kont uzytkownikow? 2. Co jest najlepszym sposobem ochrony hasel? 3. Jaki jest glowny cel tego przewodnika? 4. Co znaczy, ze algorytmy mieszajace (hash algorithms) sa funkcjami jednokierunkowymi? 5. Podaj w punktach ogolny przeplyw pracy przy rejestracji konta i uwierzytelnianiu w systemie kont. 6. Jakie jest zalecenie, gdy uzytkownik pomylil sie w nazwie uzytkownika lub hasle? 7. Podaj przykladowe kryptograficzne funkcje hashujace obecnie stosowane. 8. Jaki jest najprostszy sposob na zlamanie hasha? 9. Podaj dwa najczestsze sposoby odgadywania hasel. 10. Opisz jak jak przeprowadzany atak slownikowy. 11. Opisz jak jak przeprowadzany atak brute-force. 12. Zalety i wady ataku brute-force. 13. Czy mozna calkowicie zapobiec atakom slownikowym i brute-force? 14. W jaki sposob mozna zmniejszyc atak slownikowy i brute-force? 15. Jak tworzone sa tabele pogladowe (ang. Lookup Tables)? Zapoznaj sie z informacja na www i ponizszym opisem. Wyobraz sobie, ze tabela przegladowa to jak tablica z kluczami i odpowiadajacymi im wartosciami. To troche jak slownik, gdzie slowo (klucz) ma swoje znaczenie (wartosc). Na przyklad, pomysl o tabeli, ktora przypisuje numerom telefonow do imion ludzi. a) Przygotowanie Tabeli: Zacznijmy od pustej tabeli. Jest to jak arkusz papieru, na ktorym napiszemy nasze przypisane wartosci. b) Dodawanie Kluczy i Wartosci: Teraz, kiedy chcemy przypisac numer telefonu do osoby, wpisujemy jej imie (klucz) i jej numer telefonu (wartosc) w tabeli. Na przyklad: Klucz: "Anna", Wartosc: "555-1234" Klucz: "Jan", Wartosc: "555-5678" Klucz: "Maria", Wartosc: "555-9876" c) Znalezienie Numeru Telefonu: Teraz, jesli chcemy znalezc numer telefonu dla "Anna", patrzymy w tabeli pod kluczem "Anna" i widzimy wartosc "555-1234". To oznacza, ze numer telefonu Anny to "555-1234". Szybkie i Latwe: Ta tabela pozwala nam szybko znalezc numer telefonu dla dowolnej osoby, poniewaz wystarczy spojrzec na odpowiedni klucz (imie) i odczytac przypisana mu wartosc (numer telefonu). To jest wlasnie idea tabeli przegladowej - przypisanie kluczy do wartosci, dzieki czemu mozemy je szybko odnalezc. Tabela przegladowa dziala podobnie do ksiazki telefonicznej. Klucze to imiona, wartosci to numery telefonow, a tabela pozwala nam latwo odnalezc odpowiedni numer telefonu, znajac imie. 16. Jakie dane zawieraja tabele przegladowe? 17. Jak tworzone sa tabele wyszukiwania wstecznego (ang. Reverse Lookup Tables)? Zapoznaj sie z informacja na www i ponizszym opisem. W przypadku tabeli wyszukiwania wstecznego, mysl o tym jak o odwrotnym procesie do tabeli pogladowej. Zamiast szukac numeru telefonu znajac imie, bedziemy teraz szukac imienia znajac numer telefonu. Uzyjmy tego samego przykladu: a) Przygotowanie Tabeli wyszukiwania wstecznego: Zacznijmy od pustej tabeli wstecznej. b) Dodawanie Kluczy (Numerow Telefonow) i Wartosci (Imion): Teraz, kiedy chcemy przypisac imie (wartosc) do numeru telefonu (klucz), wpisujemy numer telefonu (klucz) i odpowiadajace mu imie (wartosc) w tabeli wstecznej. Na przyklad: Klucz: "555-1234", Wartosc: "Anna" Klucz: "555-5678", Wartosc: "Jan" Klucz: "555-9876", Wartosc: "Maria" c) Znalezienie Imienia na Podstawie Numeru Telefonu: Teraz, jesli mamy numer telefonu "555-1234" i chcemy dowiedziec sie, kto do niego nalezy, patrzymy w tabeli wstecznej pod numerem telefonu. Widzimy numer "555-1234" (nasz klucz) i odpowiadajace mu imie "Anna" (nasza wartosc). Tabela wyszukiwania wstecznej dziala jak odwrotny slownik: pozwala nam znalezc klucz, znajac jego wartosc. W tym przypadku, mozemy znalezc imie, znajac numer telefonu, uzywajac tej tabeli wstecznej. 18. Jak tworzone sa teczowe tabele (ang. Rainbow Tables)? Zapoznaj sie z informacja na www i ponizszym opisem. Teczowe tabele (ang. Rainbow Tables) sa specjalnym rodzajem tabeli haszujacej, ktora jest uzywana do przyspieszenia procesu zlamania hasel, stosujac technike ataku znana jako atak na podstawie tabeli. Teczowe tabele sa uzywane do odkrywania oryginalnych hasel na podstawie ich wartosci hasha. Oto jak dzialaja i jak sa budowane, nadal uzywajac tego samego prostego przykladu: Tworzenie Teczowych Tabel: Krok 1: Przygotowanie Hasel i Ich hashy: Wyobraz sobie, ze mamy liste hasel i chcemy stworzyc teczowe tabele dla tych hasel. Pierwszym krokiem jest wygenerowanie hashy dla kazdego hasla. Na przyklad, dla hasla "Anna123", mozemy uzyskac hash "cfefe02bb11395ee6aa8492b1a05d0f4d876082c0c89ecfca3a08963181142d8". Krok 2: Redukcja i Lancuchy Haszowane: Nastepnie stosujemy funkcje redukcji do hasha, co oznacza, ze przeksztalcamy dlugi skrot hasza na krotszy ciag znakow. Ten ciag staje sie naszym nowym "redukowanym" haszem. Tworzymy teraz lancuchy haszowane, gdzie zaczynamy od pewnego punktu (poczatkowego skrotu) i stosujemy nasza funkcje redukcji wiele razy, tworzac lancuch redukowanych hashy. Krok 3: Tworzenie Teczowych Tabel: Tworzymy teczowe tabele, ktore przechowuja poczatkowy hash i ostatni redukowany hash w kazdym lancuchu. Oznacza to, ze dla kazdego hasla mamy pare: (poczatkowy skrot, ostatni redukowany skrot). Te pary sa przechowywane w teczowych tabelach. Zlamanie Hasla za Pomoca Teczowych Tabel: Krok 1: Obliczanie Redukowanego Skrotu: Najpierw obliczamy redukowany skrot naszego hasla, ktore chcemy zlamac, uzywajac tej samej funkcji redukcji. Krok 2: Porownywanie z Teczowymi Tabelami: Nastepnie porownujemy obliczony redukowany skrot z ostatnimi redukowanymi skrotami w teczowych tabelach. Jesli znajdziemy pasujacy redukowany hash w tabelach, mozemy sprawdzic odpowiadajacy mu poczatkowy hash i odzyskac oryginalne haslo z poczatkowego hasha. To jest podstawowy sposob, w jaki dzialaja teczowe tabele. One pozwalaja na przyspieszenie procesu zlamania hasel, stosujac technike ataku oparta na juz obliczonych danych (poczatkowych i redukowanych hashach) zamiast obliczania hashy dla kazdego hasla podczas ataku. 19. Przeanalizuj przyklad "solenia" tego samego hasla - "hello" na kilka sposobow. 20. Co umozliwia dzialanie tabelom przegladowym i teczowym? 21. W jaki sposob mozna zapobiec atakom z wykorzystaniem tablic przegladowych i teczowych? 22. Jakie sa najczestsze bledy w implementacji soli? 23. Zapoznaj sie z informacjami na temat kolizji hashujacej: Kolizje hashujace wystepuja, gdy dwie rozne wartosci majace byc zahashowane do unikalnych skrotow (hashy) trafiaja do tego samego hasha. W idealnym przypadku, kazde rozne wejscie powinno generowac unikalny hash. Jednakze, ze wzgledu na ograniczona dlugosc hashy (na przyklad, hash SHA-256 ma 64 znaki szesnastkowe), istnieje ograniczona liczba mozliwych kombinacji hashy. Kiedy dwie rozne wartosci zahashuja sie do tego samego hasha, mowimy o kolizji hashujacej. Kolizje te sa niepozadane, poniewaz moga prowadzic do sytuacji, w ktorej atakujacy moze podac specjalnie spreparowane dane, ktore zhashuja sie do tego samego hasha co inne, bezpieczne dane. W takim przypadku, system traktuje te dane tak samo, co moze prowadzic do bledow w aplikacjach czy systemach komputerowych. Atakujacy mogacy wygenerowac kolizje hashujaca moze zastapic oryginalne dane spreparowanymi danymi, co moze prowadzic do powaznych problemow w bezpieczenstwie, na przyklad w przypadku systemow uwierzytelniania lub podpisow cyfrowych. Aby zminimalizowac ryzyko kolizji hashujacych, funkcje hashowania zostaly opracowane w taki sposob, aby byly bardzo trudne do zlamania i generowania kolizji. Przykladem takiej funkcji jest SHA-256, ktore jest obecnie jednym z bezpiecznych algorytmow haszujacych. Jednakze, ze wzgledu na ograniczenia matematyczne, teoretycznie mozliwe sa kolizje, choc sa one bardzo trudne do wygenerowania w praktyce. 24. W jaki sposob nalezy prawidlowo wygenerowac "sol"? 25. Podaj kolejne zalecenia tworzenia soli. 26. Jak wyglada zapisanie/wygenerowanie nowego hasla w bazie danych za pomoca CSPRNG? 27. Gdzie powinno zostac zahashowane haslo piszac aplikacje internetowa? 28. Hashowanie hasel w przegladarce jest dopuszczalne jesli haslo rowniez zostanie zahashowane na serwerze i zostana spelnione warunki. Podaj wymagane punkty implementacji. 29. Na czym polega technika "key stretching"? Zapoznaj sie z informacja na www i ponizszym opisem. Technika "key stretching" odnosi sie do procesu, w ktorym haslo, ktore jest zwykle stosunkowo krotkie i latwe do odgadniecia, jest przeksztalcane w dluzszy i bardziej skomplikowany klucz kryptograficzny. Jest to wazny krok w procesie hashowania hasel, ktorego celem jest zwiekszenie bezpieczenstwa hasel przechowywanych w systemach informatycznych. Tradycyjne funkcje skrotu (hash functions) sa szybkie i latwe do obliczen, co oznacza, ze ataki brute force (proby odgadniecia hasla przez probowanie wszystkich mozliwych kombinacji) sa skuteczne, zwlaszcza w przypadku prostych hasel. Key stretching opiera sie na tym, ze wykonuje wiele iteracji funkcji skrotu, co oznacza, ze proces tworzenia hasha jest bardziej czasochlonny. Popularne algorytmy do key stretching to na przyklad bcrypt, scrypt i Argon2. Te algorytmy sa zaprojektowane tak, aby byly wolniejsze i bardziej wymagajace obliczeniowo, co utrudnia atakujacym proby zlamania hasel poprzez brute force. Dzieki temu nawet slabe hasla moga stac sie znacznie bardziej odporne na tego typu ataki. W skrocie, key stretching jest technika uzywana w procesie hashowania hasel, ktora polega na wielokrotnym aplikowaniu funkcji hashowania, aby zwiekszyc ich dlugosc i utrudnic ataki brute force. 30. Jaki jest kolejny krok podniesienia bezpieczenstwa hashy? Wdrozenie tego zabezpieczenia umozliwia utworzenie hashy niemozliwych do zlamania. 31. Ktore punkty implementacji nalezy spelnic, aby uzyskac hashe niemozliwe do zlamania? 32. Dla jakiej liczby uzytkownikow (w bazie) zalecane jest stosowanie tego mechanizmu bezpieczenstwa? 33. Jak moze zostac wdrozony (w ramach kompromisu) ten mechanizm bezpieczenstwa gdy uslugodawce nie stac na wiele serwerow dedykowanych lub specjalnych urzadzen sprzetowych? 34. Ktory typ ataku najczesciej narusza bazy danych? 35. Dlaczego hashe z kluczem nie eliminuja potrzeby stosowania soli? 36. Hashowanie hasel chroni hasla w przypadku naruszenia bezpieczenstwa. Nie sprawia to, ze aplikacja jako calosc jest bezpieczniejsza. Co jest bardzo dobrym zrodlem wiedzy o lukach w aplikacjach internetowych? 37. Zapoznaj sie z zalozeniami OWASP? Przeanalizuj informacje na www oraz ponizszy opis. OWASP to skrot od "Open Web Application Security Project". Jest to organizacja non-profit, ktora skupia sie na poprawie bezpieczenstwa oprogramowania. Celem OWASP jest wspieranie organizacji w tworzeniu, rozwoju i utrzymaniu oprogramowania, ktore jest odporne na ataki i zagrozenia zwiazane z bezpieczenstwem aplikacji internetowych. OWASP dostarcza zestaw narzedzi, dokumentacji, projektow i standardow zwiazanych z bezpieczenstwem aplikacji internetowych. Organizacja prowadzi takze badania nad najwazniejszymi zagrozeniami i podatnosciami, z ktorymi moga spotkac sie aplikacje internetowe, publikujac corocznie liste najwazniejszych zagrozen znana jako "OWASP Top Ten". Ta lista zawiera najczestsze podatnosci, ktore sa wykorzystywane przez atakujacych w aplikacjach internetowych, pomagajac programistom i organizacjom skoncentrowac sie na najwazniejszych obszarach zwiazanym z bezpieczenstwem. OWASP jest otwarta spolecznoscia, ktora aktywnie zacheca do udzialu ekspertow z calego swiata w tworzeniu i ulepszaniu swoich projektow oraz inicjatyw, co pozwala na wymiane wiedzy i doswiadczen w dziedzinie bezpieczenstwa aplikacji internetowych. 38. Co zaleca sie spelnic, aby moc pisac (bezpieczne) aplikacje internetowe obslugujacej wrazliwe dane? 39. Jakie sa zalecenia zwiazane z testami penetracyjnymi? 40. Zapoznaj sie z zalozeniami z "OWASP Top Ten" corocznie aktualizowanej listy najwazniejszych podatnosci i zagrozen zwiazanych z bezpieczenstwem aplikacji internetowych. Ponizej znajduje sie lista OWASP Top Ten najczesciej wystepujacych podatnosci: Injection: Ataki polegajace na wstrzykiwaniu zlosliwego kodu do aplikacji, na przyklad SQL Injection, NoSQL Injection, czy OS Command Injection. Broken Authentication: Podatnosc zwiazana z nieprawidlowym zarzadzaniem procesem uwierzytelniania i sesji, co moze prowadzic do kradziezy kont uzytkownikow. Sensitive Data Exposure: Niewlasciwe lub brak odpowiednich mechanizmow ochrony dla poufnych danych, takich jak hasla czy karty kredytowe. XML External Entities (XXE): Ataki wykorzystujace slabosci w parsowaniu XML, ktore pozwalaja atakujacemu czytac poufne dane z serwera. Broken Access Control: Niewlasciwe zarzadzanie uprawnieniami, co pozwala nieautoryzowanym uzytkownikom uzyskiwac dostep do zasobow. Security Misconfigurations: Bledy w konfiguracji zabezpieczen, ktore pozwalaja atakujacym na wykonywanie roznych rodzajow atakow, zwykle ze wzgledu na zle ustawione ustawienia serwera, bazy danych czy frameworkow. Cross-Site Scripting (XSS): Ataki, w ktorych atakujacy wstrzykuje zlosliwy skrypt do strony internetowej, ktory jest potem wykonany na urzadzeniu uzytkownika. Insecure Deserialization: Ataki wykorzystujace bledy w procesie deserializacji danych, ktore pozwalaja na uruchamianie zlosliwego kodu na serwerze aplikacyjnym. Using Components with Known Vulnerabilities: Uzycie komponentow (takich jak biblioteki, frameworki czy oprogramowanie) znanym z podatnosciami, ktore moga byc wykorzystane przez atakujacych. Insufficient Logging & Monitoring: Niewystarczajace rejestrowanie i monitorowanie dzialan w systemie, co moze opoznic wykrycie atakow lub utrate danych. Warto pamietac, ze OWASP Top Ten jest przydatnym przewodnikiem dla programistow, administratorow systemow i inzynierow bezpieczenstwa, pomagajac im zrozumiec najwazniejsze zagrozenia zwiazane z bezpieczenstwem aplikacji internetowych oraz jak sie przed nimi chronic. 41. Ktore grupy zawodowe szczegolnie powinny sledzic projekt OWASP? 42. W ramach powtorki zapoznaj sie ktorych algorytmow hashowania powinno sie uzywac. 43. Ktora metoda uwierzytelniania uzytkownikow, ktorzy zapomnieli hasla jest obecnie najczesciej stosowana? 44. Jak prawidlowo powinna zostac zaimplementowana ta metoda? 45. Co powinienes zrobic, jesli baza danych Twoich kont uzytkownikow ulegnie wyciekowi/shakowaniu? 46. Jaka powinna byc polityka dotyczaca hasel? Czy powinno sie egzekwowac silne hasla? 47. Jesli osoba atakujaca ma dostep do mojej bazy danych, czy nie moze po prostu zastapic hasha mojego hasla wlasnym hashem i loginem? 48. Zapoznaj sie sekcja pt.: "Dlaczego musze uzywac specjalnego algorytmu, takiego jak HMAC? Dlaczego nie moge po prostu dolaczyc hasla do tajnego klucza?" 49. Zapoznaj sie sekcja pt.: "Czy sol powinna znajdowac sie przed czy po hasle?" 50. Po co zawracac sobie glowe haszowaniem?