Dlaczego AI nie nadaje się na generator haseł?
Czy prośba do AI o wygenerowanie silnego hasła to dobry pomysł? W tym materiale wyjaśniam, dlaczego mechanizm przewidywania tokenów sprawia, że "losowe" hasła z ChatGPT czy Claude’a są w rzeczywistości przewidywalne dla cyberprzestępców.
Spis treści
Pamiętasz mój test z "losowaniem" liczby od 1 do 25? Jeśli zapytałeś ChatGPT, Claude’a lub Gemini o dowolną liczbę z tego zakresu, istnieje ogromna szansa, że w odpowiedzi zobaczyłeś 17. To nie był przypadek, ani błąd w kodzie, lecz fundamentalna cecha obecnej technologii, którą nazywam "uwięzieniem w statystyce".
AI nie rzuca kośćmi - ona przewiduje najbardziej prawdopodobny token na podstawie tego, jak myślą i wybierają ludzie. Liczba 17 jest powszechnie postrzegana przez nas jako "najbardziej losowa" z tego przedziału (bo 1 jest za proste, a 25 to koniec skali), więc model, chcąc brzmieć naturalnie i przekonująco, po prostu powiela nasze ludzkie błędy poznawcze.
Skoro tak, to pójdźmy krok dalej. Jeżeli AI "losuje" 17, bo tak podpowiada jej statystyka ludzkich wyborów, to co dzieje się, gdy prosisz ją o "silne, unikalne i losowe hasło"?
Krótka odpowiedź: Zaczyna się katastrofa, której nie widać na pierwszy rzut oka.
Iluzja losowości: G7#xL9@vM2$kP5!q
Na ekranie monitora hasło wygenerowane przez chatbota wygląda na losowe. Ma wielkie i małe litery, cyfry, znaki specjalne. Spełnia ono rygorystyczne wymogi każdego formularza rejestracyjnego.
Problem polega na tym, że dla algorytmu to hasło nie jest wynikiem chaosu (entropii), lecz matematycznie wyliczoną kontynuacją. Modele językowe (LLM) nie generują treści z próżni. Ich jedynym zadaniem jest wzięcie dotychczasowego kontekstu (Twojego zapytania) i odgadnięcie, jaki znak powinien wystąpić jako następny, aby wynik był "zadowalający" i statystycznie spójny z danymi treningowymi.
Kiedy prosisz o "losowe hasło", AI przeszukuje swoje gigantyczne zbiory w poszukiwaniu wzorców, które ludzie w internecie opisali jako "wyglądające na losowe". Model nie generuje szumu - on generuje imitację szumu. To tak, jakbyś poprosił aktora o zagranie roli szaleńca: on nie staje się nieprzewidywalny, on po prostu używa technik, które my kojarzymy z szaleństwem. Prosić LLM o losowość to prosić go o zaprzeczenie własnej naturze, która została zbudowana po to, by być przewidywalną, logiczną i zrozumiałą dla człowieka.
Statystyczna przewidywalność
Badacze z firmy Irregular Security przeprowadzili eksperyment. Przetestowali oni najpopularniejsze modele pod kątem ich rzeczywistej zdolności do tworzenia unikalnych ciągów znaków. Wyniki pokazują, że AI jest tragicznie powtarzalna.
Wszystkie testowane modele językowe (LLM) zasadniczo zawiodły w kwestii generowania bezpiecznych haseł. Chociaż na pierwszy rzut oka tworzą one ciągi znaków wydające się spełniać zasady bezpieczeństwa (łączą wielkie i małe litery, cyfry oraz znaki specjalne), w rzeczywistości hasła te są niezwykle przewidywalne i podatne na złamanie.
Oto jak z generowaniem haseł poradziły sobie poszczególne modele i oparte na nich agenty:
Claude (Opus 4.6 i starsze wersje)
- Silne powtarzalności: W 50 próbach wygenerowania hasła model stworzył jedynie 30 unikalnych wartości, z czego hasło "G7$kL9#mQ2&xP4!w" pojawiło się aż 18 razy.
- Wzorce: Hasła niemal zawsze zaczynały się od litery (zazwyczaj "G"), po której następowała cyfra "7". Model faworyzował tylko wybrane znaki, całkowicie ignorując większość alfabetu, systematycznie unikał powtarzania tego samego znaku wewnątrz hasła i nie używał znaku gwiazdki (*).
- Bardzo niska entropia: Zamiast oczekiwanych 98 bitów entropii dla 16-znakowego hasła, szacunkowa entropia wygenerowanych haseł wynosiła zaledwie około 27 bitów, co oznacza, że można by je złamać w kilka sekund.
- Agenci (Claude Code): Ich zachowanie było uzależnione od wersji i promptu. Opus 4.5 najczęściej generował hasła samodzielnie. Nowszy Opus 4.6 zazwyczaj wolał używać bezpiecznych komend (np.
openssl rand), ale wystarczyło zmienić polecenie z "wygeneruj hasło" na "zaproponuj hasło", aby agent wrócił do niebezpiecznego generowania haseł bezpośrednio przez model.
Rodzina modeli GPT (GPT-5.2, Codex, ChatGPT Atlas)
- Wzorce: W 50 próbach (które dały 135 propozycji haseł) wykazano ogromną powtarzalność. Prawie wszystkie hasła zaczynały się od litery "v", a niemal połowa z nich miała jako drugi znak literę "Q". Wybór znaków znów był wysoce nierównomierny.
- Entropia udowodniona przez logprobs: Analiza prawdopodobieństw przypisywanych tokenom przez GPT-5.2 pokazała, że 20-znakowe hasło, które teoretycznie powinno oferować ponad 120 bitów entropii, realnie posiadało jedynie ok. 20 bitów. Oznacza to możliwość złamania go po około milionie prób.
- Agenci: Modele takie jak GPT-5.3-Codex czy GPT-5.2-Codex bardzo często świadomie odrzucały użycie zewnętrznych narzędzi do losowania, błędnie argumentując w swoich przemyśleniach, że same potrafią wygenerować "silne i losowe" hasło. Również agentowa przeglądarka ChatGPT Atlas faworyzowała wygenerowane przez siebie słabe hasła, np. podczas tworzenia kont w serwisach internetowych.
Rodzina modeli Gemini (Gemini 3 Pro i Flash)
- Ostrzeżenia (Gemini 3 Pro): Model ten generował "ostrzeżenie o bezpieczeństwie" informujące, że nie należy używać zaproponowanego hasła. Niestety, model podał błędne uzasadnienie problemu, twierdząc, że powodem jest "przetwarzanie przez serwery", zamiast wskazać na faktyczną, niską siłę kryptograficzną hasła.
- Wzorce (Gemini 3 Flash): Niemal połowa wygenerowanych haseł zaczynała się od "K" lub "k", a kolejne znaki przeważnie dobierane były spośród wąskiej grupy: "#", "P" lub "9".
- Agenci: Podobnie jak w przypadku modelu Claude, narzędzie Gemini-CLI (korzystające z Gemini 3 Flash) zachowywało się poprawnie i używało narzędzi systemowych przy prośbie o "wygenerowanie", ale używało zawodnego silnika LLM przy prośbie o "zaproponowanie" hasła.
Nano Banana Pro (oparty na Gemini 3 w trybie "Thinking")
- Zależność od kontekstu promptu: Kiedy poproszono model o wygenerowanie hasła zapisanego "na karteczce samoprzylepnej przyklejonej do monitora", ten zaskakująco mocno preferował generowanie mało skomplikowanych słów zgodnych ze słynnym komiksem xkcd (tzw. metoda "czterech losowych słów"), kojarząc taki nośnik ze słabymi nawykami bezpieczeństwa.
- Gdy jednak lekko zmodyfikowano polecenie na "wybierz losowe hasło i zapisz je na karteczce", Nano Banana Pro zaczął generować hasła z typowymi, błędnymi i nierównomiernymi wzorcami charakterystycznymi dla modeli Gemini.
Czym jest entropia hasła?
Entropia to miara siły hasła, wyrażana w bitach. W uproszczeniu, określa ona, jak wiele prób odgadnięcia musiałby wykonać atakujący, aby złamać hasło metodą siłową (brute-force).
- Hasło posiadające 20 bitów entropii wymaga około 220 (czyli około miliona) prób, co standardowemu komputerowi zajmuje zaledwie kilka sekund.
- Z kolei hasło o entropii 100 bitów wymagałoby około 2100 prób (jest to liczba 31-cyfrowa), a jego złamanie zajęłoby biliony lat.
W przypadku prawdziwie losowego hasła tworzonego z puli 70 znaków (26 wielkich liter, 26 małych liter, 10 cyfr i 8 znaków specjalnych), każdy pojedynczy znak powinien wnosić około 6,13 bita entropii.
Entropia haseł generowanych przez modele językowe (LLM)
Na pierwszy rzut oka hasła tworzone przez modele wyglądają na bardzo silne. Popularne kalkulatory siły haseł (np. KeePass czy zxcvbn), które opierają się na statystykach znaków i słownikach, oceniają 16-znakowe hasła z modeli LLM na około 100 bitów entropii, prognozując, że ich złamanie zajęłoby stulecia.
Jednak w rzeczywistości modele językowe nie dobierają znaków równomiernie, lecz z ogromnymi uprzedzeniami statystycznymi, co badacze udowodnili za pomocą wzoru na entropię Shannona. Oszacowali oni rzeczywistą entropię na dwa sposoby:
Analiza statystyk znaków (na przykładzie Claude Opus 4.6)
Ponieważ model miał silną tendencję do faworyzowania konkretnych znaków (ponad 50% wygenerowanych haseł zaczynało się od litery "G"), pierwszy znak hasła niósł ze sobą zaledwie 2,08 bita entropii, zamiast oczekiwanych 6,13 bita. Zliczając to dla całego ciągu, 16-znakowe hasło od Claude miało szacunkowo zaledwie 27 bitów entropii, w kontraście do 98 bitów, których oczekiwalibyśmy od w pełni losowego hasła o tej samej długości.
Analiza "logprobs" (na przykładzie GPT-5.2)
Modele językowe podczas działania przypisują każdemu możliwemu tokenowi określone prawdopodobieństwo, z którego następnie "losują" wynik. Badając te wewnętrzne prawdopodobieństwa (logprobs) w modelu GPT-5.2, badacze zauważyli ekstremalną przewidywalność. Choć 20-znakowe hasło od GPT-5.2 teoretycznie powinno posiadać ponad 120 bitów entropii, średnia entropia wynosiła tam zaledwie około 1 bit na znak. Co gorsza, w przypadku 15. znaku w haśle (cyfra "2"), model był w 99,7% pewien, że wygeneruje właśnie tę cyfrę. Entropia tego pojedynczego znaku wynosiła zaledwie 0,004 bita. W efekcie, całe 20-znakowe hasło miało realnie zaledwie 20 bitów entropii.
Podsumowując, hasła z modeli LLM tylko udają bezpieczne. Zamiast oferować 100-120 bitów entropii, w rzeczywistości mają ich około 20-27, co oznacza, że dają się złamać w około milionie prób – a więc w kilka sekund na zwykłym komputerze.
Dlaczego "Prompt Engineering" tutaj nie zadziała?
Słyszę czasem: "Kamil, ja potrafię napisać lepszy prompt! Powiem mu, żeby użył nietypowych znaków ASCII i unikał powtórzeń". Rozumiem ten entuzjazm, ale to błąd myślowy. Niezależnie od tego, jak bardzo skomplikowane polecenie wydasz, pod maską wciąż pracuje ten sam silnik statystyczny.
Wyobraź sobie, że prosisz AI, aby "przestała być sobą". To niemożliwe. Model uczy się na naszych wzorcach i moich, Twoich, naszych błędach:
Jeśli statystycznie ludzie stawiają cyfry "1" na końcu haseł, AI będzie to powielać, bo tak widziała w milionach przykładów. Jeśli znaki specjalne jak "!" lub "#" pojawiają się częściej w poradnikach o "silnych hasłach", AI uzna je za "bardziej właściwe" niż rzadkie symbole. Model zawsze wybierze ścieżkę największego prawdopodobieństwa, co jest dokładnym przeciwieństwem bezpiecznej kryptografii, gdzie każdy znak musi mieć taką samą szansę na wystąpienie.
Próba "zhakowania" modelu, by był bardziej losowy, tylko przesuwa problem. Zamiast standardowej przewidywalności, otrzymujemy "przewidywalność specyficzną". Hakerzy potrafią to zamodelować, tworząc bazy haseł dedykowane specjalnie pod konkretne modele AI i konkretne typy promptów.
Menadżer haseł
Zamiast pytać ChatGPT o bezpieczeństwo, wróć do fundamentów i zaufaj narzędziom, które zostały zbudowane wyłącznie do tego celu. Menedżery haseł (jak Bitwarden, 1Password czy KeePass) nie używają sieci neuronowych ani "vibe'u". Używają mechanizmów zwanych CSPRNG (Cryptographically Secure Pseudo-Random Number Generator).
Różnica jest dla mnie fundamentalna:
- Prawdziwe źródła losowości: Menedżery haseł czerpią z fizycznej nieprzewidywalności, takiej jak szum sprzętowy procesora, mikroruchy Twojej myszki czy czasowe odstępy między uderzeniami w klawisze.
- Maksymalna entropia: W takim haśle każdy znak ma dokładnie taką samą szansę na wystąpienie. Nie ma tam "ulubionych liter" ani "logicznych struktur", które mogłaby wyłapać sztuczna inteligencja.
- Brak ludzkich uprzedzeń: Takie hasło nie "wygląda" na silne. Ono po prostu jest silne, bo nie ma żadnego związku z ludzką psychologią ani statystyką języka.
Podsumowanie
Widzę, jak wielu z nas daje się uwieść wygodzie AI. Ale pamiętaj: bezpieczeństwo to nie "vibe", to matematyka. Następnym razem, gdy będziesz chciał poprosić bota o zabezpieczenie swojego cyfrowego życia, przypomnij sobie eksperyment z liczbą 17. Hasło od AI jest silne tylko "na oko" - w kategorii estetycznej, a nie obronnej.
Moje dane i Twoje dane są warte więcej niż wygodny, ale skrajnie niebezpieczny skrót.
Zobacz podobne artykuły
Awarie IT zdarzają się każdemu
Od paru godzin trwa awaria komunikatora internetowego Slack. Kilka tygodni temu nie można było korzystać z usług firmy Google, a jeszcze wcześniej spora część Internetu nie działała z powodu awarii usług Cloudflare. Czy to możliwe, że usługi w chmurze są niedostępne?
Macierz Eisenhovera, czyli jak zapanować nad priorytetami?
Iść na przerwę a może odpisać na tego maila, czy odebrać telefon od przełożonego? W jakiej kolejności zająć się tymi zadaniami, aby nie utracić nad tym kontroli i nie popaść w bezsilność? Rozwiązaniem tych problemów może być Macierz Eisenhowera (nazywana także Matrycą lub Kwadratem Eisenhowera).
Czy Alert RCB powinien informować o wyborach prezydenckich?
Komunikacja w niebezpieczeństwie jest jednym z ważniejszych zagadnień jakie się porusza podczas żeglowania, latania czy nurkowania. Ostrzeżenia potrafią uratować życie, dlatego nie powinny być lekceważone, a tym bardziej nie powinny swoją treścią prowadzić do ich zignorowania.