Одноразовый пароль (OTP; в русской записи его часто называют «ОТП» или «ОТП-код», например код из SMS) — это разовый код, который используется один раз. Разберём его виды и предел, который часто упускают: фишинг всё же способен его обойти (без шагов атаки).
Виды: TOTP / HOTP / SMS-OTP
Их всех валят в кучу как «разовые коды», но по способу генерации они делятся на три вида.
TOTP (на основе времени)
Приложение вычисляет его из общего секрета + текущего времени. Меняется примерно каждые 30 с. Работает офлайн.
HOTP (счётчик)
Продвигается по счётчику, а не по времени. Каждое нажатие даёт следующий код. Используется в аппаратных токенах.
SMS-OTP
Отправляет код по SMS. Удобно, но уязвимо для SIM-swap и ретрансляции — самый хрупкий метод.
Все они разделяют природу «одноразовый, короткоживущий», поэтому даже если фиксированный пароль утечёт, сам код трудно использовать повторно. Особенно TOTP вычисляется внутри приложения без сетевого обмена, поэтому у него нет пути перехвата, как у SMS.
Сильные стороны и пределы: поддельный сайт может украсть то, что вы вводите
OTP закрывает слабости фиксированных паролей, но это не полная защита. Решающий предел в том, что код читает и вводит человек.
Где OTP работает
- останавливает захваты из-за утёкших / повторно используемых паролей
- даже если его увидели, он быстро становится недействительным и его трудно использовать повторно
- TOTP приложения-аутентификатора работает офлайн и устойчивее к перехвату, чем SMS
Где OTP ломается
- фишинг «злоумышленник посередине» (AiTM): поддельный сайт ретранслирует OTP настоящему и входит
- SIM-swap: угнать номер телефона и выманить SMS-OTP
- первопричина = человек может отдать код поддельному сайту (он не привязан к домену)
Как способ доставки меняет риск
«Одноразовый пароль» охватывает несколько способов, и слабые места зависят от того, где создаётся код и как он до вас доходит.
| Способ | Где создаётся код | Как доходит до вас | Основные слабые места |
|---|---|---|---|
| Приложение-аутентификатор (TOTP) | На вашем телефоне | Никуда не передаётся (вычисляется на устройстве) | Ввод на поддельном сайте, восстановление после потери телефона |
| Аппаратный токен | Небольшое отдельное устройство | Никуда не передаётся (показывается на его экране) | Ввод на поддельном сайте, потеря устройства |
| SMS | Сервер сервиса | Сеть мобильной связи | Ввод на поддельном сайте, SIM-swap, перехват SMS |
| Электронная почта | Сервер сервиса | Почта | Ввод на поддельном сайте, захват почтового аккаунта |
Общее слабое место всех способов — ввод на поддельном сайте. Руководство по аутентификации Национального института стандартов и технологий США (NIST) SP 800-63B (редакция 4, август 2025 года) указывает, что вводимые вручную одноразовые пароли не могут быть устойчивыми к фишингу, и относит способы, использующие телефонную сеть, такие как SMS, к «ограниченным». Агентство по кибербезопасности и защите инфраструктуры США (CISA) в декабре 2024 года также рекомендовало не использовать SMS в качестве второго фактора.
Как соотносятся термины 2FA, двухэтапная проверка и passkey, сведено в сравнительной таблице в статье что такое двухфакторная аутентификация.
Как работает TOTP: в QR-коде хранится секрет
QR-код, который вы сканируете при настройке приложения-аутентификатора, содержит секретное значение, общее для сервиса и приложения. Приложение вычисляет код из этого значения и текущего времени, а сервис выполняет то же вычисление и проверяет совпадение.
- Стандарт (RFC 6238) рекомендует шаг времени 30 секунд
- С учётом сетевой задержки сервисы часто принимают и код предыдущего шага (стандарт рекомендует не более одного шага)
- HOTP на основе счётчика (RFC 4226) продвигается вперёд, например, при каждом нажатии кнопки
Отсюда следует, что любой, у кого есть QR-код или строка секрета, может генерировать те же коды. Хранить снимок экрана настройки в облаке или чате — то же самое, что записать пароль.
Реальный пример: несанкционированные переводы в интернет-банке
В 2023 году в Японии резко выросло число несанкционированных переводов в интернет-банкинге. По данным Агентства финансовых услуг Японии (FSA), ущерб с января по ноябрь 2023 года составил 5147 случаев и около 8,01 млрд иен (по состоянию на 8 декабря) — оба показателя рекордные. FSA описывает схему так: пользователей заманивают на поддельные сайты письмами или SMS от имени банков, крадут ID, пароли, одноразовые пароли и подобные данные для интернет-банка, а затем переводят деньги.
Два урока из этого случая:
- Одноразовый пароль не помогает, если вы ввели код на поддельном сайте: каким бы коротким ни был срок действия кода, его успевают использовать в тот же момент, когда вы его ввели
- Остановить это можно до ввода: банки сообщают, что не запрашивают ID и пароли по почте или SMS. Не вводить коды на странице, открытой по ссылке из письма или SMS, — самый надёжный шаг, который может сделать пользователь
С тех пор брокеры и банки в Японии переходят к тому, чтобы сделать обязательной аутентификацию, которая не завершается на поддельном сайте, например passkey (что такое passkey).
Как проверить свои аккаунты и сервисы
Переведите аккаунты с SMS на приложение-аутентификатор
Откройте настройки 2FA для важных аккаунтов: почты, менеджера паролей, GitHub и облачных сервисов. Если используется SMS, добавьте приложение-аутентификатор (TOTP) и сделайте его основным способом. Если доступны passkey, добавьте и его. Для GitHub см. настройку 2FA на GitHub.
Подготовьтесь к новому или потерянному телефону
Проверьте, может ли приложение-аутентификатор переехать на другое устройство (функция резервного копирования или переноса). Сохраните коды восстановления каждого сервиса не на телефоне, а, например, в менеджере паролей.
Убедитесь, что QR-код и секрет нигде не валяются
Поищите снимки экрана с QR-кодами настройки или строками секрета в фотографиях, облачном хранилище или чатах и удалите найденное.
Если вы разрабатываете сервис, пересмотрите правила проверки
Ограничьте число неудачных попыток при проверке кодов (иначе 6-значный код реально подобрать перебором). Принимайте один и тот же код только один раз, даже в пределах срока действия. Допустимое расхождение часов держите около одного шага. Для учётных записей администраторов предлагайте passkey — они надёжнее одноразовых паролей.
Взгляд этого сайта: OTP — промежуточный шаг, а цель — passkey
OTP — отличный первый шаг из «только пароль». На деле, будь то SMS или TOTP, само его включение останавливает большинство захватов. Но наш сайт считает OTP промежуточным шагом, а не конечной целью. Пока фишинг «злоумышленник посередине» остаётся реальной угрозой, цель — passkey (FIDO2), чья подпись привязана к домену и по конструкции не может быть предъявлена поддельному сайту.
Приоритет ясен: сначала включите OTP везде, затем переведите самые важные аккаунты (почта, домен, платежи) на passkey. Смысл в том, чтобы не полагаться на «распознать поддельный сайт за счёт внимательности».
Источники (первичные)
- IETF RFC 6238, «TOTP: Time-Based One-Time Password Algorithm» — rfc-editor.org (шаг времени 30 секунд, допуск не более одного шага на сетевую задержку)
- IETF RFC 4226, «HOTP: An HMAC-Based One-Time Password Algorithm» — rfc-editor.org (одноразовые пароли на основе счётчика, ограничение неудачных попыток)
- NIST SP 800-63B-4 (август 2025) — pages.nist.gov (вводимые вручную OTP не могут быть устойчивыми к фишингу, способы через телефонную сеть ограничены, каждый OTP принимается только один раз, ограничение частоты попыток)
- CISA, «Mobile Communications Best Practice Guidance» (декабрь 2024) — cisa.gov (PDF) (не использовать SMS как второй фактор)
- Агентство финансовых услуг Японии, предупреждение о росте несанкционированных переводов в интернет-банкинге из-за фишинга (на японском) — fsa.go.jp (случаи и ущерб за январь–ноябрь 2023 года, кража одноразовых паролей и подобных данных)
Читать дальше
- Глоссарий: что такое двухфакторная аутентификация (2FA) (контекст, где OTP служит «вторым доказательством») · что такое passkey (более сильная устойчивость к фишингу, чем у OTP)
- Глоссарий: что такое фишинг (понять атаки AiTM, которые ретранслируют OTP)
- Обучение: как правильно выбрать MFA (выбор метода на практике) · настройка 2FA на GitHub (приложение-аутентификатор и коды восстановления)
- Кейс: мошенничество с 7pay (2019) (платёжное приложение захватили, потому что в нём не было 2FA)