Uwierzytelnianie dwuskładnikowe

Metoda logowania wymagająca dwóch niezależnych dowodów tożsamości, np. hasła i kodu z aplikacji. Znacząco utrudnia przejęcie konta nawet po wykradzeniu hasła.

Uwierzytelnianie dwuskładnikowe (ang. two-factor authentication, 2FA) to logowanie, które wymaga dwóch niezależnych dowodów tego, że naprawdę jesteś sobą. Samo hasło nie wystarcza — musisz dorzucić drugi składnik z innej kategorii. Klasycznie dzieli się je na trzy grupy: coś, co wiesz (hasło, PIN), coś, co masz (telefon, klucz sprzętowy), i coś, czym jesteś (odcisk palca, twarz). Sztuka polega na tym, żeby składniki pochodziły z różnych grup. Dwa hasła to nadal jeden składnik, nie dwa.

Po co to komu

Hasła wyciekają — z baz danych, phishingu, albo dlatego, że ktoś użył password123 w pięciu serwisach naraz. 2FA sprawia, że samo skradzione hasło jest bezużyteczne, bo atakujący nie ma drugiego składnika. To najtańszy sposób, żeby drastycznie podnieść poprzeczkę, i dlatego GitHub, Google czy banki coraz częściej go wymuszają, a nie tylko proponują.

Najpopularniejszy wariant to kody TOTP (Time-based One-Time Password, opisany w RFC 6238): aplikacja co 30 sekund generuje sześciocyfrowy kod na podstawie wspólnego sekretu i aktualnego czasu. Mocniejsza liga to klucze sprzętowe w standardzie FIDO2/WebAuthn (np. YubiKey), które są praktycznie odporne na phishing.

Przykład z praktyki

Włączasz 2FA na GitHubie. Serwis pokazuje QR kod, który skanujesz Google Authenticator albo Authy. Od tej chwili przy logowaniu, po haśle, wpisujesz kod z aplikacji. Po stronie serwera weryfikacja TOTP w Pythonie wygląda mniej więcej tak:

  • import pyotp
  • totp = pyotp.TOTP(secret)
  • totp.verify("123456") # True albo False

Na co uważać

Największy mit: „2FA przez SMS jest bezpieczne”. Jest lepsze niż nic, ale podatne na SIM swapping (przejęcie numeru u operatora) i przechwytywanie wiadomości. Jeśli masz wybór, bierz aplikację TOTP albo klucz sprzętowy zamiast SMS.

Drugi klasyk: kody zapasowe (recovery codes) wrzucone do notatnika obok hasła albo wcale niezapisane. Gdy zgubisz telefon, to one ratują dostęp — trzymaj je offline, w menedżerze haseł lub na kartce w szufladzie. I pamiętaj, że 2FA nie chroni przed phishingiem strony, która podszywa się pod logowanie i przekazuje twój kod dalej w czasie rzeczywistym — tu pomagają dopiero klucze FIDO2.

Pojęcia powiązane: MFA (uwierzytelnianie wieloskładnikowe), TOTP, HOTP, FIDO2/WebAuthn, SSO, phishing, menedżer haseł.