OTP-код живёт несколько минут и годится только для одной операции. Именно эта эфемерность делает его одним из самых надёжных инструментов цифровой безопасности. Разбираем технологию от алгоритма до применения.
Что такое OTP
OTP (One-Time Password) — одноразовый пароль, действующий только для одной сессии или транзакции. В отличие от постоянного пароля, его нельзя использовать повторно: после применения или истечения срока действия код становится недействительным.
Именно эту технологию используют банки для подтверждения переводов, сайты при двухфакторной аутентификации и корпоративные системы при удалённом доступе.
Два основных алгоритма OTP
HOTP — на основе счётчика
HMAC-based One-Time Password (RFC 4226). Код генерируется на основе секретного ключа и счётчика использований. Каждый раз, когда пользователь запрашивает код, счётчик увеличивается на 1.
Минус: если запросов было много и часть не использована, счётчики могут рассинхронизироваться. Применяется в аппаратных токенах.
TOTP — на основе времени
Time-based One-Time Password (RFC 6238). Код генерируется из секретного ключа и текущего Unix-времени, округлённого до 30-секундных окон. Именно этот алгоритм используют Google Authenticator, Яндекс Ключ и другие приложения.
Преимущество перед HOTP: не нужна синхронизация счётчиков — только точное время. Сервер обычно принимает коды ±1 интервал (±30 секунд) для учёта дрейфа часов.
OTP через SMS vs приложение-аутентификатор
| Характеристика | SMS OTP | TOTP-приложение |
|---|---|---|
| Нужен интернет для получения | Нет (только сигнал) | Нет (работает офлайн) |
| Нужен смартфон | Любой телефон | Только смартфон |
| Риск перехвата | Средний (SS7) | Низкий |
| Сложность для пользователя | Минимальная | Нужно установить приложение |
| Стоимость для бизнеса | ~0,5–2 руб./SMS | Бесплатно |
| Работает при смене номера | Нет | Да (через бэкап) |
Где применяются OTP
- Банки и финтех: подтверждение платежей, вход в интернет-банк
- E-commerce: верификация при регистрации, подтверждение крупных заказов
- Государственные сервисы: Госуслуги, налоговая, МФЦ
- Корпоративный доступ: VPN, CRM, облачные хранилища
- Социальные сети: подтверждение нового устройства
Длина OTP: 4, 6 или 8 цифр
Чем длиннее код — тем выше безопасность при прочих равных:
| Длина | Вариантов | Время перебора (10 попыток/сек) | Применение |
|---|---|---|---|
| 4 цифры | 10 000 | ~17 минут | PIN-коды, низкий риск |
| 6 цифр | 1 000 000 | ~28 часов | Банки, 2FA — стандарт |
| 8 цифр | 100 000 000 | ~115 дней | Высокорисковые транзакции |
6-значный код с TTL 3–5 минут и ограничением в 3 попытки — оптимальный баланс для большинства задач.
Итог
OTP — зрелая, стандартизированная технология с открытыми алгоритмами. Для потребительских сервисов SMS OTP остаётся оптимальным выбором из-за доступности. Для внутренних корпоративных систем TOTP через приложение предпочтительнее — дешевле и надёжнее. Правильно реализованный OTP с rate limiting и коротким TTL делает брутфорс практически невозможным.