Ответ
Google Authenticator — это мобильное приложение, реализующее двухфакторную аутентификацию (2FA) по стандарту TOTP (Time-Based One-Time Password). Оно генерирует одноразовые 6-значные коды, которые используются как второй фактор при входе в аккаунт (первый фактор — пароль).
Принцип работы:
- Настройка: Пользователь связывает сервис (например, GitHub) с приложением. Сервер генерирует секретный ключ (обычно в формате Base32) и отображает его в виде QR-кода. Приложение сканирует код и сохраняет ключ локально.
- Генерация кода: И сервер, и приложение независимо вычисляют код на основе:
- Общего секретного ключа.
- Текущего времени, разделённого на интервалы (обычно 30 секунд).
- Верификация: Пользователь вводит сгенерированный код в форму входа. Сервер вычисляет свой код за тот же временной интервал и сверяет его с введённым.
Пример генерации TOTP-кода на Python (используя библиотеку pyotp):
import pyotp
import time
# 1. Генерация секретного ключа (происходит на сервере при подключении 2FA)
secret = pyotp.random_base32() # Например: 'JBSWY3DPEHPK3PXP'
print(f"Секретный ключ: {secret}")
# 2. Создание TOTP-объекта
totp = pyotp.TOTP(secret, interval=30) # Код меняется каждые 30 сек.
# 3. Получение текущего кода (так делает приложение)
current_otp = totp.now()
print(f"Текущий код: {current_otp}")
# 4. Верификация кода (так делает сервер)
is_valid = totp.verify(current_otp)
print(f"Код верен? {is_valid}")
Ключевые преимущества:
- Работает офлайн: Для генерации кода не нужен интернет, так как используется только секрет и время устройства.
- Высокая безопасность: Код действителен очень короткое время и используется один раз.
- Универсальность: Стандарт TOTP поддерживается множеством сервисов и приложений (не только Google Authenticator).