Blog 24/7

tęczowe tablice

TAB. 1Hasłopo polsku
Po angielskurainbow table
Którą formą pisaćpo polsku Polska nazwa przyjęła się w tekstach i w wyszukiwarce — używaj jej samodzielnie.
Inne formytablice tęczowe · tęczowa tablica · rainbow tables
KategoriaKryptografia, tożsamość i uwierzytelnianie

Tęczowe tablice to wcześniej przygotowane tablice łańcuchów skrótów, które pozwalają szybko odzyskać hasło z jego niesolonego hasha. Metodę opisał Philippe Oechslin w 2003 roku jako ulepszenie kryptoanalitycznego kompromisu czas–pamięć, przedstawionego przez Martina Hellmana w 1980 roku [1]. Tablice działają tylko wtedy, gdy ten sam tekst jawny zawsze daje ten sam hash. MITRE wskazuje, że brak soli ułatwia atakującym wcześniejsze obliczenie hashy technikami słownikowymi, takimi jak tęczowe tablice [2].

Jak działa

Najprostszy atak przez wcześniejsze obliczenia polega na zapisaniu hasha każdego możliwego hasła. Oechslin zauważa, że taki atak po wykonaniu obliczeń działa niemal natychmiast, ale wymaga zbyt dużej ilości pamięci [1]. Metoda Hellmana zmniejsza zapotrzebowanie na pamięć kosztem czasu: z wartości skrótu tworzy się kolejne kandydaty na hasło za pomocą funkcji redukcji, a z tak powstałego łańcucha zapisuje tylko pierwszy i ostatni element [1].

Wadą klasycznych łańcuchów jest to, że zderzenie dwóch łańcuchów w jednej tabeli powoduje ich scalenie. Oechslin zaproponował łańcuchy nazwane tęczowymi, które w każdym kolejnym kroku używają innej funkcji redukcji [1]. Dwa łańcuchy scalają się wtedy tylko przy zderzeniu na tej samej pozycji [1].

RYS. 1Budowa tęczowego łańcucha

Przy ataku atakujący bierze hash z wykradzionej bazy, odtwarza końcówki możliwych łańcuchów i szuka ich w tablicy. Po trafieniu odtwarza łańcuch od zapisanego początku aż do hasła, które daje szukany hash. Metoda jest probabilistyczna: powodzenie nie jest pewne, a skuteczność zależy od czasu i pamięci przeznaczonej na atak [1].

Porównanie z innymi atakami na hashe

Tęczowe tablice to jedna z kilku metod łamania haseł. Różnią się tym, kiedy wykonywana jest praca obliczeniowa.

MetodaKiedy liczyCo ją zatrzymuje
atak siłowy (brute force)po wycieku, dla każdego hashawolna funkcja haszująca [2]
atak słownikowypo wycieku, dla listy kandydatówwolna funkcja, silne hasła
tęczowe tabliceraz, przed atakiem [1]unikalna sól [2]

W WordPressie

Tęczowe tablice są wobec hashy haseł tworzonych przez współczesny rdzeń WordPressa bezużyteczne, bo są one solone. Wcześniej hasła zapisywano metodą phpass, a od wersji 6.8 WordPress używa bcrypt [6]. Nowe hashe są liczone funkcją PHP password_hash(), która dla każdego hasła generuje losową sól [7]. Dokumentacja PHP zaznacza, że tak właśnie funkcja ma działać, a od PHP 8.0 sól podana ręcznie jest ignorowana [7].

Stare hashe nie wymagają interwencji: WordPress przelicza hasło na bcrypt przy pierwszym logowaniu po aktualizacji albo przy zmianie hasła [6]. Zapowiedź zmiany wymienia jednak także starsze, zwykłe hashe MD5 w postaci 32 znaków szesnastkowych, które nadal mogą się pojawić w bazie [6]. Taki skrót nie zawiera soli, więc warto sprawdzić, czy w tabeli użytkowników nie zostały konta z hasłem w tej postaci. Ryzyko pojawia się poza rdzeniem, gdy wtyczka zapisuje hasła lub tokeny własnym kodem, na przykład prostym md5() bez soli. Taki kod należy traktować jako podatność we wtyczce. Warto też pamiętać, że klucze bezpieczeństwa i sole z pliku wp-config.php dotyczą ciasteczek, a nie hashy haseł.

Znaczenie

Tęczowe tablice ilustrują, dlaczego sam wybór funkcji skrótu (hash function) nie wystarcza do przechowywania haseł. W wyniku wycieku danych atakujący dostaje kopię bazy i może pracować bez ograniczeń czasu i bez limitu prób logowania. Gdy hashe nie mają soli, jedna tablica łamie hasła wszystkich użytkowników, a jednakowe hasła mają jednakowe hashe. Odzyskane hasła trafiają potem na combolisty i są używane w atakach credential stuffing na inne serwisy.

Jak się bronić

Podstawą jest sól. OWASP definiuje ją jako unikalny, losowo generowany ciąg dodawany do każdego hasła przy haszowaniu i podaje, że sól zapobiega atakom tęczowymi tablicami [3]. Dzięki soli identyczne hasła różnych użytkowników dają różne hashe [3]. NIST wymaga, by sól miała co najmniej 32 bity [4]. Te same wytyczne zalecają, by współczynnik kosztu funkcji haszującej był tak wysoki, jak pozwala wydajność serwera, i był z czasem podnoszony wraz ze wzrostem mocy obliczeniowej [4]. MITRE ostrzega jednak, że sól nie zmniejsza nakładu pracy przy ataku na pojedynczy hash, a współczesne ataki liczą ogromne liczby skrótów na GPU, układach ASIC albo FPGA [2]. Dlatego sól łączy się z funkcją adaptacyjną, której koszt można regulować, taką jak bcrypt, scrypt albo PBKDF2 [2]; mechanizm opisuje hasło KDF. Dodatkową warstwą może być pieprz.

Historia i przykłady

Oechslin zademonstrował metodę na hashach LanManager z systemu Windows. Przy 1,4 GB danych, czyli dwóch płytach CD-ROM, jego implementacja łamała 99,9% hashy haseł alfanumerycznych w 13,6 sekundy, podczas gdy metoda z punktami wyróżnionymi potrzebowała 101 sekund [1]. Hash LanManager był łatwym celem: hasło dzielono na dwie części po siedem znaków, zamieniano małe litery na wielkie i każdą część szyfrowano algorytmem DES ze stałym tekstem jawnym [1]. Microsoft opisuje hash LM jako stosunkowo słaby w porównaniu z hashem NT i podatny na szybki atak siłowy; zaleca wyłączenie jego przechowywania [5]. Według tej samej dokumentacji Windows tworzy oba hashe, LM i NT, gdy hasło ma mniej niż 15 znaków [5]. Najprostszym sposobem uniknięcia użytecznego hasha LM jest hasło o długości co najmniej 15 znaków; zapisana wtedy wartość LM nie pozwala uwierzytelnić użytkownika [5].

TAB. 2

Przypisy

7
  1. [1] Making a Faster Cryptanalytic Time-Memory Trade-Off (CRYPTO 2003) · IACR / Philippe Oechslin, EPFL
  2. [2] CWE-759: Use of a One-Way Hash without a Salt · MITRE
  3. [3] Password Storage Cheat Sheet · OWASP
  4. [4] NIST SP 800-63B-4: Digital Identity Guidelines — Authentication and Authenticator Management · NIST
  5. [5] Prevent Windows from storing a LAN Manager (LM) hash of the password in AD and local SAM databases · Microsoft Learn
  6. [6] WordPress 6.8 will use bcrypt for password hashing · Make WordPress Core
  7. [7] password_hash — PHP Manual · The PHP Group
TAB. 3

Hasła w tym artykule

13
TAB. 4

Linkują tutaj

6

Wszystkie kategorie → · Hasło w słowniku →

Blog 24/7
05.11CISA i FBI wzywają do zabezpieczenia sterowników chłodzenia po atakach w Europietherecord.media05.11Midnight Blizzard atakowała iPhone'y i Androidy przez zainfekowane strony w Europie i USAsecurityweek.com05.11APT29 kradła dane z iPhone'ów i Androidów przez przejęte i podrobione stronytherecord.media05.11Grupa APT29 przejęła skrypt Plerdy i atakowała niezałatane iPhone'y i Androidythehackernews.com05.11Microsoft wykrył 7,3 mld wiadomości phishingowych w III kwartale 2026microsoft.com05.11DigiCert ujawnia wyciek danych klientów i skanów dokumentów tożsamościbleepingcomputer.com05.11CWPdoor podmienia serwer cwpsrv w Control Web Panel i otwiera tylne wejście do Linuksableepingcomputer.com05.11Brytyjskie NCSC ostrzega, że narzędzia AI zwiększyły liczbę wykrywanych luk zero-daythehackernews.com05.11Skaner RootEvidence sprawdza starą lukę w Cisco IOS i dodaje nagłówki Opt-Outisc.sans.edu05.11Włamanie do portalu grantowego Norad, zagrożone dane 20 614 użytkownikówhelpnetsecurity.com