Ответ
Двухфакторная аутентификация (2FA) — это метод обеспечения безопасности, при котором для доступа к аккаунту требуется предоставить два разных типа доказательств своей личности. Это значительно повышает защиту, так как злоумышленнику недостаточно просто украсть пароль.
Принцип работы основан на комбинации двух из трех возможных факторов:
- Фактор знания (что-то, что вы знаете): пароль, PIN-код.
- Фактор владения (что-то, что у вас есть): смартфон с приложением-аутентификатором, SMS-код, аппаратный USB-токен.
- Фактор свойства (что-то, чем вы являетесь): отпечаток пальца, скан лица (биометрия).
Пример реализации TOTP (Time-based One-Time Password) в Python:
Алгоритм TOTP генерирует одноразовые пароли, действительные короткий промежуток времени (обычно 30 секунд). Библиотека pyotp
упрощает работу с ним.
import pyotp
import time
# Этот ключ генерируется один раз для пользователя и хранится на сервере
# Пользователь сканирует его в виде QR-кода в свое приложение (Google Authenticator и др.)
secret_key = pyotp.random_base32()
# Создаем объект TOTP
totp = pyotp.TOTP(secret_key)
# Генерируем текущий код для проверки
current_otp = totp.now()
print(f"Секретный ключ: {secret_key}")
print(f"Текущий код (действителен 30 сек): {current_otp}")
# --- Проверка кода, введенного пользователем ---
user_input = input("Введите код из приложения: ")
# totp.verify() проверяет валидность кода
if totp.verify(user_input):
print("✅ Аутентификация успешна!")
else:
print("❌ Неверный код.")
Ключевые преимущества 2FA:
- Надежная защита: Компрометация одного фактора (например, утечка пароля) не дает доступа к аккаунту.
- Гибкость: Множество способов реализации (SMS, приложения, токены) под разные нужды.