Przejdź do głównej zawartości

58. Two-Factor Authentication — mechanizm TOTP i implementacja

Two-Factor Authentication (2FA)

2FA dodaje drugi składnik weryfikacji poza hasłem: coś co wiesz (hasło) + coś co masz (telefon z kodem). TOTP (Time-based One-Time Password) generuje 6-cyfrowy kod ważny 30 sekund na podstawie współdzielonego sekretu i aktualnego czasu. Używają go Google, GitHub, bank.

  • 2FA jest obowiązkowe w systemach bankowych, rządowych i firmowych
  • TOTP jest standardem RFC 6238 implementowanym w Google Authenticator i Authy
  • Hasło może wyciec — drugi składnik chroni konto nawet wtedy
  1. Wyjaśnić czym jest 2FA i jakie są typy drugiego składnika
  2. Opisać algorytm TOTP (HMAC + timestamp)
  3. Omówić proces konfiguracji: generowanie sekretu, QR kod
  4. Pokazać weryfikację kodu w PHP
  1. Typy 2FA: SMS, e-mail, TOTP, hardware key (YubiKey)
  2. Dlaczego SMS 2FA jest słabsze od TOTP
  3. TOTP — algorytm: sekret + czas → HMAC → 6 cyfr
  4. RFC 6238 TOTP i RFC 4226 HOTP
  5. Proces konfiguracji: generowanie sekretu Base32, QR kod (otpauth://)
  6. Google Authenticator i Authy — aplikacje TOTP
  7. Implementacja w PHP: biblioteka spomky-labs/otphp lub ręczna

Przykład 1

Generowanie sekretu TOTP i kodu QR w PHP

Przykład 2

Weryfikacja 6-cyfrowego kodu TOTP

Przykład 3

Diagram przepływu logowania z 2FA
  1. Wstęp — problem tylko hasła
  2. Typy 2FA
  3. Algorytm TOTP
  4. Proces konfiguracji
  5. Weryfikacja kodu
  6. Implementacja w PHP
  7. Zalety i wady 2FA
  8. Podsumowanie i bibliografia

Skonfiguruj 2FA na swoim koncie GitHub!

Włącz 2FA na GitHubie lub Discordzie używając Google Authenticator. Opisz każdy krok — to gotowy materiał do opracowania.