Одноразовый пароль (OTP) — код, действующий только для одного входа или одной операции; обычно служит вторым фактором при двухфакторной аутентификации.
Как работают одноразовые пароли
Бывают разные виды OTP:
- TOTP (на основе времени, RFC 6238) — приложение-аутентификатор и сервер знают общий секрет и вычисляют один и тот же шестизначный код по текущему времени, обычно каждые 30 секунд. Так работают Google Authenticator, Microsoft Authenticator и многие менеджеры паролей.
- HOTP (на основе счётчика, RFC 4226) — код меняется при каждом использовании; часто применяется в аппаратных токенах.
- Коды по SMS, звонку или e-mail — сервис генерирует случайный код и отправляет его пользователю.
Код быстро устаревает, поэтому пароля, украденного при утечке, уже недостаточно для входа — это блокирует большинство автоматических атак вроде подстановки учётных данных и усиливает двухфакторную аутентификацию.
Слабые места OTP
- Фишинг в реальном времени — фишинговые наборы с посредником пересылают код на настоящий сайт за секунды.
- Социальная инженерия — звонящие мошенники и «OTP-боты» просят продиктовать код, а смишинг ведёт на поддельные страницы для его ввода.
- Подмена SIM и перехват через SS7 — SMS-коды можно перенаправить на телефон атакующего.
- Вредоносное ПО — банковские трояны для Android читают входящие SMS.
Рекомендации
- Предпочитать приложения-аутентификаторы SMS-кодам, а устойчивые к фишингу passkeys и ключи FIDO2 — любым OTP.
- Никогда не сообщать код тем, кто звонит или пишет: легитимные сервисы его не спрашивают.
- Сервисам — ограничивать число попыток ввода и привязывать код к конкретной операции.
Несмотря на недостатки, OTP — большой шаг вперёд по сравнению с одним паролем и важная часть надёжной аутентификации.
Синонимы:
одноразовый код, OTP-код