Hasło jednorazowe (ang. one-time password, w skrócie: OTP) – hasło zmieniane po każdym użyciu[1], stosowane w celu autoryzacji dostępu w systemach teleinformatycznych.

Hasła jednorazowe pozwalają ograniczyć związane ze stosowaniem statycznych haseł zagrożenie podsłuchania lub podejrzenia hasła przez osoby niepowołane i posługiwania się nim bez wiedzy właściciela. Hasło jednorazowe, jak sama nazwa wskazuje, jest wykorzystywane tylko raz i traci ważność po wykorzystaniu.

Bankowość elektroniczna edytuj

W bankowości elektronicznej hasła jednorazowe służą do autoryzowania operacji o podwyższonym stopniu ryzyka, takich jak przelewy. Hasła są tutaj zwykle dostarczane w postaci wydrukowanej listy, zdrapki (dla kilkudziesięciu transakcji naprzód) lub przesyłane SMSem na określony przez właściciela konta numer telefonu komórkowego (dla każdej transakcji oddzielnie).

Generowanie haseł jednorazowych edytuj

Hasła jednorazowe mogą być wartościami losowymi, co wymaga by system przechowywał je po wygenerowaniu i przekazaniu użytkownikowi. Ze względów praktycznych częściej stosuje się hasła generowane i weryfikowane w oparciu o algorytm wykorzystujący kryptograficzne jednokierunkowe funkcje skrótu. Najczęściej spotykane algorytmy generowania haseł jednorazowych to:

  • Łańcuch skrótów – hasło jednorazowe (OTP – one time password)   jest wyliczane ze wzoru   gdzie   jest funkcją skrótu. Hasła są generowane począwszy od   które jest wartością losową. Użytkownik korzysta z nich w odwrotnej kolejności (od   do  ), a dzięki własnościom jednokierunkowej funkcji skrótu znajomość hasła   nie pozwala podsłuchującemu na poznanie następnego w kolejności hasła   Z algorytmu tego, z różnymi modyfikacjami, korzystają systemy haseł jednorazowych S/KEY, OPIE i OTPW[2].
  • Synchronizacja czasowa – hasło jednorazowe (TOTP – time-based one time password)   jest wyliczane ze wzoru   gdzie   jest wartością losową (seed), stałą dla danego użytkownika, a   aktualnym czasem GMT mierzonym w krokach minutowych. Dzięki synchronizacji czasowej zarówno użytkownik i serwer mogą wyliczać aktualną wartość hasła, znając tylko wartość   Mechanizm ten jest wykorzystywany m.in. tokenach RSA SecurID[3][4].

Przypisy edytuj