что такое одноразовый код тотр

Одноразовый код TOTP (Time-based One-Time Password — одноразовый пароль, основанный на времени) — это временный код, который используется как второй фактор аутентификации (2FA) при входе в учетные записи и системы. Он генерируется на основе секретного ключа и текущего времени, и действует только в течение короткого времени (обычно 30 секунд).


🔐 Суть и назначение TOTP

TOTP используется для повышения безопасности, дополняя стандартную связку логин + пароль. Даже если злоумышленник узнает ваш пароль, он не сможет войти без одноразового кода, который постоянно меняется.


🔄 Как работает TOTP (по шагам)

1. Настройка

  • Вы регистрируете двухфакторную аутентификацию в сервисе (например, Google, GitHub, банковское приложение).

  • Сервис генерирует секретный ключ (обычно в виде QR-кода или текстовой строки).

  • Вы сканируете этот QR-код в приложении-аутентификаторе (Google Authenticator, Authy, Microsoft Authenticator и т.д.).

📦 Этот секретный ключ сохраняется в приложении и используется для генерации одноразовых кодов.


2. Генерация одноразового кода

  • Каждые 30 секунд приложение генерирует новый 6-значный код.

  • Код создается на основе:

    • секретного ключа (он никогда не передается по сети),

    • текущего времени (например, UNIX-время округляется до 30-секундных интервалов),

    • алгоритма HMAC-SHA1 (или SHA256, SHA512 — зависит от реализации).

⏱ Это значит, что одинаковый секретный ключ + текущее время → одинаковый код.


3. Проверка

  • Когда вы входите в систему, она запрашивает одноразовый код.

  • Вы берете код из приложения и вводите его.

  • Сервер тоже генерирует код (на основе того же секретного ключа и текущего времени).

  • Если введенный код совпадает с тем, который рассчитал сервер — доступ разрешается.


🧠 Пример:

  1. Секретный ключ: JBSWY3DPEHPK3PXP

  2. Время: 12:01:00

  3. Приложение и сервер вычисляют TOTP:

    • Шаг 1: Определяется временной интервал (например, «шаг 40020»)

    • Шаг 2: Делается HMAC с секретным ключом и временем

    • Шаг 3: Полученный байт обрезается до 6 цифр

  4. Получается код, например: 482913

  5. Код действует только 30 секунд.


🧰 Приложения для TOTP

  • Google Authenticator (самый распространенный)

  • Microsoft Authenticator

  • Authy

  • 1Password / Bitwarden (встроено в менеджеры паролей)

  • FreeOTP

  • OTP Auth (iOS)


📜 Стандарты и алгоритмы

  • Основан на открытом стандарте RFC 6238

  • Базируется на HMAC-Based One-Time Password (HOTP, RFC 4226), но вместо счетчика используется текущее время

  • Используется SHA1 по умолчанию, но может быть SHA256 или SHA512


✅ Преимущества

  • 📱 Удобство: можно использовать даже без интернета (офлайн)

  • ⛓ Безопасность: код не передается по сети (в отличие от SMS-кодов)

  • 🔓 Независимость от оператора или SIM-карты


⚠️ Недостатки и риски

  • 📴 Если потеряете устройство с TOTP — потеряете доступ (если нет резервного кода)

  • 🕓 Несинхронизированные часы между устройством и сервером могут вызвать ошибки

  • 🔒 Не защищает от фишинга, если злоумышленник подделал сайт и попросил код


💡 Советы по безопасности

  • Делайте резервные копии секретных ключей при настройке

  • Храните коды восстановления (backup codes)

  • Используйте аппаратные токены (например, YubiKey с TOTP) для критически важных аккаунтов

  • Настройте защиту доступа к телефону и приложениям-аутентификаторам


Если хочешь, я могу показать, как самому сгенерировать TOTP-код на Python или рассчитать его вручную для понимания.

Scroll to Top

Карта сайта