Blog 24/7

kod jednorazowy

TAB. 1Hasłoobie formy
Po angielskuone-time password (OTP/TOTP)
Którą formą pisaćobie formy Obie formy są w obiegu. Przy pierwszym wystąpieniu pisz „polski termin (english term)”, dalej sam polski.
Inne formyhasło jednorazowe · kod jednorazowy z aplikacji · kod SMS (potocznie, węższe)
KategoriaKryptografia, tożsamość i uwierzytelnianie

Kod jednorazowy (one-time password, OTP) to krótki ciąg cyfr, który serwer przyjmuje tylko raz i zwykle tylko przez krótki czas. Najczęściej powstaje z sekretu współdzielonego przez serwer i urządzenie użytkownika: z licznika zdarzeń w algorytmie HOTP [1] albo z bieżącego czasu w algorytmie TOTP [2]. Bywa też wysyłany SMS-em lub e-mailem. Kod jednorazowy jest typowym drugim składnikiem w uwierzytelnianiu wieloskładnikowym (MFA), ale NIST zaznacza, że nie jest odporny na phishing, bo użytkownik przepisuje go ręcznie [3].

Jak działa

Algorytm HOTP opisuje RFC 4226 z grudnia 2005 roku. Token i serwer znają ten sam sekret oraz licznik; kod powstaje przez obliczenie HMAC-SHA-1 z licznika i skrócenie wyniku do co najmniej 6 cyfr [1]. Sekret musi mieć co najmniej 128 bitów, a autorzy zalecają 160 bitów [1]. HMAC to konstrukcja oparta na funkcji skrótu (hashowaniu) i kluczu kryptograficznym.

TOTP, opisany w RFC 6238 z maja 2011 roku, zastępuje licznik liczbą przedziałów czasu, które upłynęły od ustalonego momentu: TOTP = HOTP(K, T) [2]. Domyślny przedział to 30 sekund [2]. Obok HMAC-SHA-1 standard dopuszcza HMAC-SHA-256 i HMAC-SHA-512 [2]. Aplikacja uwierzytelniająca w telefonie i serwer liczą kod niezależnie, więc nic nie jest przesyłane w chwili logowania.

RYS. 1Jak powstaje i jest sprawdzany kod TOTP

Zegary urządzeń nie są idealnie zgodne. RFC 6238 zaleca, by serwer akceptował kod co najwyżej z jednego przedziału wstecz, co wystarcza na opóźnienie sieci [2]. Ten sam kod nie może zadziałać drugi raz: po udanej weryfikacji serwer musi odrzucić kolejną próbę z tym samym kodem [2]. NIST formułuje to ogólniej — weryfikator przyjmuje dany kod tylko raz w okresie jego ważności [3].

Rodzaje

RodzajSkąd bierze się kodUwagi
HOTPlicznik zdarzeń [1]serwer toleruje rozjazd licznika w oknie wyprzedzenia [1]
TOTPbieżący czas [2]aplikacja w telefonie albo token sprzętowy
SMS lub połączenie głosowewysyłany przez operatoraNIST: uwierzytelnianie ograniczone [3]
E-mailwysyłany na skrzynkęNIST: nie do uwierzytelniania pozapasmowego [3]
Kody zapasowewygenerowane z góry, każdy razdo odzyskania dostępu [4]

NIST opisuje też dwa warianty urządzeń. Jednoskładnikowe urządzenie OTP dowodzi tylko posiadania. Wieloskładnikowe wymaga najpierw odblokowania hasłem lub biometrią i dopiero potem pokazuje kod [3].

W WordPressie

Społecznościowa wtyczka Two Factor z katalogu WordPress.org dodaje kody z aplikacji uwierzytelniającej (TOTP), kody wysyłane e-mailem i jednorazowe kody zapasowe [6]. Ma ponad 100 000 aktywnych instalacji [6]. Każdy użytkownik włącza metody w swoim profilu, w sekcji ustawień dwuskładnikowych [6]. Obsługa kluczy FIDO U2F została z niej usunięta z powodu braku wsparcia przeglądarek, a WebAuthn wymaga osobnej wtyczki [6].

Kody jednorazowe chronią także samych twórców rozszerzeń. Od 1 października 2024 roku WordPress.org wymaga uwierzytelniania dwuskładnikowego (2FA) od autorów wtyczek i motywów z prawem zapisu do repozytorium [7]. Uzasadnienie: takie konta mogą wypchnąć aktualizację do wtyczek i motywów używanych przez miliony witryn [7]. Przejęcie jednego konta autora byłoby więc atakiem na łańcuch dostaw (supply chain attack).

W konfiguracji witryny liczy się, gdzie kod trafia. Kod wysyłany e-mailem jest słabszy, gdy ta sama skrzynka służy do resetu hasła. NIST wprost wyklucza e-mail jako kanał uwierzytelniania pozapasmowego, bo dostęp do poczty bywa chroniony tylko hasłem [3].

Zagrożenia i skutki

Kod jednorazowy utrudnia użycie wykradzionych danych uwierzytelniających, ale nie zamyka wszystkich dróg ataku.

  • Wyłudzenie kodu. Strona podszywająca się pod usługę prosi o kod i natychmiast przekazuje go prawdziwemu serwerowi. CERT Polska opisał w czerwcu 2026 roku kampanię UNC1151: po podaniu hasła atakujący automatycznie logowali się na konto ofiary i wyświetlali formularz z prośbą o kod, przejmując zarówno kody SMS, jak i kody z aplikacji Google Authenticator [5]. To schemat phishingu AiTM (adversary-in-the-middle).
  • Przejęcie numeru telefonu. OWASP ostrzega, że kody SMS narażone są na podmianę karty SIM i przeniesienie numeru [4]; zob. wyłudzenie duplikatu karty SIM (SIM swap).
  • Zgadywanie. Kod ma mało cyfr, więc bez limitu prób można go odgadnąć. RFC 4226 szacuje szansę powodzenia jako sv/10^Digit, gdzie s to wielkość okna synchronizacji, a v liczba prób [1].
  • Wyciek sekretu. Kto skopiuje sekret TOTP, generuje poprawne kody bez telefonu ofiary.

Skutkiem udanego ataku jest zwykle przejęcie konta, w tym konta administratora witryny.

Jak się bronić

OWASP zaleca traktować kody jednorazowe jak hasła: krótki czas życia, jednokrotne użycie, ścisły limit prób, brak zapisu kodów w logach i generowanie ich bezpiecznym generatorem losowym [4]. RFC 4226 wymaga dławienia kolejnych błędnych prób [1], a NIST każe zablokować dany uwierzytelniacz po najwyżej 100 kolejnych nieudanych próbach [3]. W WordPressie tę rolę pełni limit prób logowania, który utrudnia też atak siłowy (brute-force).

Przy konfiguracji konta warto wydrukować lub zapisać w menedżerze haseł kody zapasowe; OWASP zaleca wydawać je już przy włączaniu MFA [4]. Dla kont o najwyższych uprawnieniach lepsze są metody odporne na phishing. NIST zalicza do nich uwierzytelnianie kryptograficzne związane z sesją, na przykład WebAuthn, a wyklucza metody z ręcznym przepisywaniem kodu [3]; zob. też passkey.

Historia i przykłady

  • Grudzień 2005: publikacja RFC 4226 z algorytmem HOTP [1].
  • Maj 2011: publikacja RFC 6238 z algorytmem TOTP [2].
  • 1 października 2024: obowiązkowe 2FA dla autorów wtyczek i motywów w WordPress.org [7].
  • Sierpień 2025: NIST publikuje czwartą rewizję SP 800-63B, w której kody OTP nie są uznawane za odporne na phishing [3].
  • Czerwiec 2026: CERT Polska opisuje kampanię UNC1151, w której wyłudzano kody SMS i kody z aplikacji [5].
TAB. 2

Przypisy

7
  1. [1] RFC 4226: HOTP: An HMAC-Based One-Time Password Algorithm · IETF
  2. [2] RFC 6238: TOTP: Time-Based One-Time Password Algorithm · IETF
  3. [3] SP 800-63B-4: Digital Identity Guidelines — Authentication and Authenticator Management · NIST
  4. [4] Multifactor Authentication Cheat Sheet · OWASP
  5. [5] Kampania phishingowa grupy UNC1151/Ghostwriter na pocztę Gmail · CERT Polska
  6. [6] Two Factor — wtyczka w katalogu WordPress.org · WordPress.org
  7. [7] Upcoming Security Changes for Plugin and Theme Authors on WordPress.org · WordPress.org
TAB. 3

Hasła w tym artykule

15
TAB. 4

Linkują tutaj

17

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