Cyber Security Academy · Урок

TOTP и HOTP

Одноразовые пароли на основе времени

Урок 2 из 413 шагов

«TOTP и HOTP» — бесплатный урок Cyber Security Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cyber Security Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cyber Security Academy содержит 4 уроков всего.

Одноразовые пароли

Одноразовый пароль (OTP) — это код, действительный для одного входа или в течение короткого периода.

Их создают два стандартных алгоритма: HOTP и TOTP.

Общий секрет

Оба алгоритма начинают работу с общего секрета, известного только серверу и Вашему приложению-аутентификатору.

Обычно он передаётся в виде QR-кода во время настройки и хранится на обеих сторонах.

HOTP: на основе счётчика

HOTP (OTP на основе HMAC) объединяет общий секрет со счётчиком с помощью HMAC, а затем сокращает результат до короткого числового кода.

Счётчик увеличивается на единицу при каждом создании кода.

HOTP = Truncate( HMAC-SHA1(secret, counter) )

TOTP: на основе времени

TOTP (OTP на основе времени) — это HOTP, в котором счётчиком служит текущее время, разделённое на фиксированные интервалы (обычно по 30 секунд).

Поскольку время постоянно движется вперёд, обе стороны остаются синхронизированными без отслеживания счётчика вручную.

T = floor( (current_unix_time) / 30 )
TOTP = Truncate( HMAC-SHA1(secret, T) )

Окно длительностью 30 секунд

Код TOTP обычно меняется каждые 30 секунд. Такой короткий срок действия ограничивает время, в течение которого украденный код можно использовать.

Поэтому приложения-аутентификаторы показывают полосу обратного отсчёта.

Допуск расхождения часов

Часы устройств немного расходятся. Чтобы не отклонять действительные коды, серверы принимают коды из одного интервала до и после текущего окна.

Слишком широкое окно ослабляет безопасность, поэтому его делают небольшим.

Синхронизация HOTP

HOTP может рассинхронизироваться, если созданный код не используется (счётчик на устройстве увеличивается, а на сервере — нет).

Серверы разрешают небольшое окно опережающей проверки для повторной синхронизации, но при больших расхождениях требуется ручная синхронизация.

URI otpauth

QR-коды кодируют URI otpauth, описывающий секрет и параметры.

otpauth://totp/Example:alice@example.com?secret=JBSWY3DPEHPK3PXP&issuer=Example&period=30

Почему победил TOTP

TOTP гораздо распространённее HOTP, потому что:

  • Нет счётчика, который может рассинхронизироваться и потребовать повторной синхронизации.
  • Коды естественным образом истекают сами.
  • Он работает автономно: для создания кода сеть не нужна.

Преимущества и ограничения

TOTP значительно надёжнее одних паролей, но всё ещё подвержен фишингу: поддельный сайт может обманом заставить пользователя ввести действующий код.

Аппаратные ключи (о них рассказывается на следующем уроке) устойчивы к такой атаке.

Резервное копирование и восстановление

Потеря устройства, на котором хранится секрет, может лишить Вас доступа. Рекомендуется:

  • Сохранить коды восстановления, выданные при настройке.
  • Надёжно создать резервную копию секрета или зарегистрировать второй аутентификатор.

Быстрая проверка

В чем заключается ключевое различие между HOTP и TOTP?

Итоги

Вы узнали, как работают алгоритмы OTP.

  • Оба основаны на общем секрете и HMAC.
  • HOTP использует счетчик, а TOTP — время.
  • Коды TOTP истекают примерно через 30 секунд, но остаются уязвимыми для фишинга.
  • Храните коды восстановления.

Далее мы рассмотрим подтверждения входа через уведомления и аппаратные ключи.

Можно начать бесплатно

Изучай Cyber Security Academy с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
76
Уроки
303

Часто задаваемые вопросы

Урок «TOTP и HOTP» бесплатный?

Да — полный текст урока «TOTP и HOTP» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cyber Security Academy, подпишись на CoddyKit PRO. Курс Cyber Security Academy содержит 4 уроков всего.

Чему я научусь в уроке «TOTP и HOTP»?

Одноразовые пароли на основе времени Ты практикуешь Cyber Security Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cyber Security Academy?

Предыдущий опыт не требуется. Cyber Security Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «TOTP и HOTP»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cyber Security Academy?

Да. Каждый урок Cyber Security Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Факторы аутентификации
  2. TOTP и HOTP
  3. Push-уведомления и аппаратные ключи
  4. Риски обхода MFA
← Назад к Cyber Security Academy