KWALIFIKACJA INF3 - CZERWIEC 2015

PYTANIE NR 40.
Zapisując hasło użytkownika serwisu WWW (np. bankowości internetowej), w celu jego zabezpieczenia przed odtajnieniem, zwykle używa się funkcji
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Hasła w serwisach WWW przechowuje się jako wynik jednokierunkowej funkcji skrótu (hash), czyli funkcji mieszającej. Dzięki temu z zapisanego hashu nie da się odzyskać hasła. "Klucz" dotyczy szyfrowania, które jest odwracalne (można odszyfrować), więc nie jest typową metodą zapisu haseł.

Pełne wyjaśnienie:

W praktyce bezpieczeństwa aplikacji WWW hasła użytkowników nie są przechowywane w postaci jawnej. Zamiast tego zapisuje się ich hash, czyli wynik działania funkcji mieszającej (funkcji skrótu). Taka funkcja jest jednokierunkowa: łatwo policzyć hash z hasła, ale nie da się w prosty sposób odtworzyć hasła na podstawie hashu. Dzięki temu nawet w razie wycieku bazy danych atakujący nie dostaje gotowych haseł.

Odpowiedź "mieszających." jest poprawna, bo opisuje właśnie funkcje hashujące używane do przechowywania haseł. W nowoczesnych systemach stosuje się algorytmy projektowane specjalnie do haseł (np. Argon2, bcrypt, scrypt, PBKDF2), zwykle z użyciem soli (losowej wartości dodawanej do hasła przed hashowaniem), co utrudnia ataki słownikowe i wykorzystanie rainbow tables.

Odpowiedź "klucza." jest niepoprawna, ponieważ klucz kojarzy się z szyfrowaniem, a szyfrowanie jest z definicji odwracalne (da się odszyfrować dane mając klucz). Przechowywanie haseł jako danych zaszyfrowanych oznaczałoby, że w pewnym miejscu istnieje możliwość ich odzyskania, co zwiększa ryzyko kompromitacji.

Odpowiedzi "abstrakcyjnych." oraz "cyklometrycznych." nie odnoszą się do standardowych, poprawnych kategorii funkcji używanych do bezpiecznego przechowywania haseł w systemach informatycznych. W kontekście haseł kluczowe są funkcje skrótu/KDF, a nie nieprecyzyjne lub niefunkcjonujące w tym znaczeniu określenia.

Wskazówka egzaminacyjna: jeśli pytanie dotyczy zapisu hasła w bazie "żeby nie dało się go odtajnić", szukaj odpowiedzi o funkcji skrótu/hashowaniu (jednokierunkowość), a nie o szyfrowaniu i kluczach.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Funkcja mieszająca (funkcja skrótu, hash) przekształca hasło w skrót o stałej długości. Jest jednokierunkowa, więc z wyniku nie da się łatwo odtworzyć hasła. W bazie zapisuje się hash (często z solą), a przy logowaniu porównuje się hashe.
Szyfrowanie jest odwracalne: mając klucz, można odzyskać oryginalne hasło. To zwiększa ryzyko, że po wycieku bazy lub klucza wszystkie hasła staną się jawne. Hashowanie jest jednokierunkowe i lepiej pasuje do celu "nieodtajniania" haseł.
Podczas rejestracji system liczy hash hasła (zwykle z solą) i zapisuje go w bazie. Podczas logowania liczy hash z hasła wpisanego przez użytkownika (z tą samą solą/parametrami) i porównuje z hashem w bazie. Nie trzeba znać hasła w postaci jawnej.
W praktyce i zaleceniach bezpieczeństwa często wskazuje się Argon2, bcrypt, scrypt lub PBKDF2. To algorytmy "wolniejsze" i konfigurowalne (koszt), co utrudnia ataki brute-force na wykradzione hashe.
Sól to losowa wartość dodawana do hasła przed hashowaniem. Dzięki temu dwa identyczne hasła różnych użytkowników dadzą różne hashe. Sól utrudnia użycie gotowych tablic (np. rainbow tables) i znacząco zwiększa koszt ataków słownikowych na wyciekłą bazę.
Współcześnie są uznawane za niezalecane do haseł, bo są zbyt szybkie i ułatwiają masowe łamanie hashy metodą brute-force. Do haseł stosuje się funkcje/KDF zaprojektowane tak, by były kosztowne obliczeniowo i (często) pamięciowo.
Typowe błędy to: zapisywanie haseł jawnym tekstem, używanie szyfrowania zamiast hashowania, brak soli, wybór zbyt szybkich funkcji (np. MD5), oraz zbyt niskie parametry kosztu w bcrypt/scrypt/PBKDF2/Argon2. Każdy z nich ułatwia ataki po wycieku bazy.
Hashowanie jest jednokierunkowe i służy do weryfikacji (porównuje się wyniki). Szyfrowanie jest dwukierunkowe i wymaga klucza do odszyfrowania. Gdy w pytaniu jest "zabezpieczenie przed odtajnieniem hasła", zwykle chodzi o hash (funkcję mieszającą).
W założeniu nie: hash jest jednokierunkowy. W praktyce atakujący może próbować zgadywać hasła (słownik, brute-force) i porównywać hashe. Dlatego stosuje się sól i algorytmy kosztowne obliczeniowo, by takie próby były bardzo wolne i mało opłacalne.
Opanuj różnicę: hash vs szyfrowanie, pojęcia "sól" i "koszt", oraz przykłady algorytmów (Argon2, bcrypt, scrypt, PBKDF2). Przećwicz schemat: rejestracja = zapis hashu, logowanie = porównanie hashy. Pomaga też lektura OWASP cheat sheet.
info

Około 50% zdających odpowiada poprawnie na to pytanie. trudne

W praktyce zawodowej kluczowe jest to, że hasła w serwisach WWW przechowuje się jako wynik jednokierunkowej funkcji skrótu (hash), czyli funkcji mieszającej.

Źródła:

  • OWASP Password Storage Cheat Sheet, sekcje dotyczące one-way hash i wyboru algorytmu (Argon2/bcrypt/scrypt/PBKDF2): https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html (dostęp 2026-03-13)
  • RFC 2898: PKCS #5: Password-Based Cryptography Specification Version 2.0 (PBKDF2), Internet Engineering Task Force, 2000
  • Password Hashing Competition (PHC) – strona projektu i wyniki (Argon2 jako zwycięzca): https://www.password-hashing.net/ (dostęp 2026-03-13)

Materiały:

  • OWASP Password Storage Cheat Sheet (zalecenia praktyczne)
  • Dokumenty RFC dotyczące PBKDF2 (opis KDF i parametrów)
  • Dokumentacja/opracowania: bcrypt, scrypt, Argon2 (porównanie i zastosowania)

Aktualizacja pytania: 03.04.2026

Aktualizacja pytania: 03.04.2026
📡 Brak połączenia internetowego