Если вам понравилась настоящая статья, то можете поддержать автора став спонсором на бусти (ссылка в разделе контакты).
У меня на ютуб-канале и на сайте есть целая серия статей и роликов про IAM-решения: Authentik, Authelia, Keycloak и Zitadel. Во всех них так или иначе всплывают одни и те же три термина - TOTP, WebAuthn и Passwordless Login - как способы входа и второй фактор защиты. Но в ру-сегменте я ни разу не встречал внятного объяснения, чем они друг от друга отличаются на самом деле, а не на уровне “это тоже двухфакторка”. Решил закрыть этот пробел одной статьёй, чтобы потом просто на неё ссылаться из остальных.
Зачем вообще в этом разбираться#
Пароль как единственный способ входа - штука, доказавшая свою несостоятельность многократно: пароли переиспользуют, их сливают базами при взломах, их фишат поддельными формами входа. Индустрия уже лет десять как активно двигается в сторону чего-то более надёжного, и сегодня даже далёкий от IT человек так или иначе сталкивается с этим - хотя бы через вход в Госуслуги по коду из приложения или через Face ID на телефоне.
Дальше разберу TOTP, WebAuthn и Passwordless Login по отдельности, а в конце - как между собой соотносятся WebAuthn и passwordless-подход, потому что путаница чаще всего именно тут.
1. TOTP - одноразовые коды по времени#
TOTP (Time-based One-Time Password) - это метод двухфакторной аутентификации, при котором одноразовый код генерируется на основе текущего времени и общего секретного ключа. Это самый старый и самый привычный из трёх вариантов - тот самый шестизначный код в Google Authenticator, Authy, Bitwarden или Vaultwarden (я сам пользуюсь последним).
Как это работает на практике: при привязке сервис показывает QR-код, приложение его сканирует и получает секретный ключ. Дальше и сервис, и приложение независимо друг от друга каждые 30 секунд считают один и тот же код на основе этого ключа и текущего времени - именно поэтому важно, чтобы время на телефоне было синхронизировано. Пользователь просто вводит актуальный код в дополнение к паролю.
Сильные стороны:
- Огромная зрелость и совместимость - TOTP поддерживает практически любой сервис с двухфакторкой, от банков до самописных self-hosted панелей.
- Не требует подключения к интернету в момент входа - код считается локально на устройстве.
- Ощутимо усиливает защиту обычного пароля почти без затрат на внедрение.
Слабые стороны:
- TOTP - это дополнение к паролю, а не его замена. Пароль всё ещё должен быть надёжным: если его украли, TOTP-код - единственное, что стоит между злоумышленником и вашим аккаунтом.
- Уязвим к фишингу в реальном времени: если жертву заманить на поддельную страницу входа и она введёт туда и пароль, и текущий TOTP-код, атакующий может тут же перепроковать оба значения на настоящем сайте. Это требует активной атаки “в моменте”, а не слитой базы - неприятный, но не самый массовый сценарий.
2. WebAuthn - аутентификация с помощью криптографии#
WebAuthn (Web Authentication API) - открытый стандарт от W3C и FIDO Alliance, который позволяет входить в сервис с помощью криптографической пары ключей вместо пароля или кода.
Как это работает: при регистрации устройство генерирует пару ключей - приватный остаётся на устройстве (в защищённом чипе, TPM или Secure Enclave) и никогда никуда не передаётся, публичный отправляется на сервер и сохраняется в вашем профиле. При каждом входе сервер присылает случайный “челлендж”, устройство подписывает его приватным ключом, а сервер проверяет подпись публичным. Пароль в этой схеме вообще не участвует.
Практические реализации WebAuthn - это аппаратные ключи безопасности (YubiKey, SoloKey), встроенная биометрия (отпечаток пальца, Face ID, Windows Hello) и защищённые модули самого устройства.
Сильные стороны:
- Устойчив к фишингу в принципе, а не “в основном”: подпись криптографически привязана к домену сайта, поэтому даже идеальная копия страницы входа не сможет получить рабочую подпись для настоящего сервера.
- Нет пароля - нечего перехватывать и нечему утекать при взломе базы сервиса.
- Хорошая поддержка биометрии и аппаратных токенов “из коробки” в современных браузерах и ОС.
Слабые стороны:
- Требует поддержки со стороны и браузера, и конкретного сайта - для старых или самописных внутренних систем это может быть нетривиально прикрутить.
- Перенос ключей между устройствами исторически был больным местом (об этом чуть ниже, в разделе про passkeys).
- Аппаратные ключи вроде YubiKey - не самое дешёвое удовольствие, и я настоятельно рекомендую держать запасной ключ на случай утери или поломки основного - иначе рискуете остаться без доступа к собственным аккаунтам.
А что такое passkeys?#
Отдельно стоит сказать про passkeys - это не отдельная технология, а маркетинговое имя для конкретного, “удобного” сценария использования WebAuthn, который активно продвигают Apple, Google и Microsoft последние пару лет. Ключевое отличие passkey от классического аппаратного WebAuthn-ключа - синхронизация: приватный ключ хранится не только на одном устройстве, а зашифрованно синхронизируется через облако (iCloud Keychain, Google Password Manager и подобные) между всеми устройствами пользователя. Это решает главную боль ранних версий WebAuthn - “я привязал YubiKey, а теперь у меня новый телефон и я в панике” - но сознательно немного жертвует моделью угроз в пользу удобства, так как приватный ключ теперь технически покидает конкретное железное устройство. Для большинства людей это разумный компромисс, для параноиков - повод оставаться на аппаратных ключах без синхронизации.
3. Passwordless Login - вход без пароля#
Passwordless Login - это не конкретная технология, а общий подход: для входа вообще не используется пароль, вместо него - что-то из перечисленного:
- по e-mail - сервис присылает одноразовую ссылку (magic link);
- по SMS или мессенджеру - код подтверждения приходит на телефон;
- через WebAuthn/passkey - криптографический вход без пароля (лично я использую либо Vaultwarden, либо Windows Hello, в зависимости от устройства);
- через OAuth - вход через существующий аккаунт Google, GitHub, Microsoft и так далее.
Сильные стороны:
- Нет пароля - нечего забывать, нечего использовать повторно на других сайтах, нечему утекать при компрометации базы.
- Заметно упрощает сам процесс входа для пользователя - иногда буквально один клик.
- Может выступать и как основной способ входа, и как дополнительный фактор.
Слабые стороны:
- Если вариант завязан на почту или SMS, безопасность входа целиком зависит от безопасности этого стороннего канала - а SMS давно и заслуженно считается самым слабым звеном (перехват через SIM-swap - реальная и хорошо задокументированная угроза). Я бы рекомендовал не полагаться на SMS как единственный способ входа туда, где важна безопасность.
- Раз пароля нет, вся защита аккаунта фактически переезжает на защиту самого канала входа (почты, номера телефона, устройства) - соответственно, эти вещи требуют не меньшего, а иногда и большего внимания к безопасности.
4. В чём разница между WebAuthn и Passwordless Login#
Вот тут чаще всего и возникает путаница, потому что термины используются рядом и про одно и то же - но это разные уровни абстракции.
- WebAuthn - это конкретный, современный и криптографически надёжный протокол/API, один из инструментов в наборе.
- Passwordless Login - это цель или стратегия (“уберём пароль вообще”), которая может быть реализована через WebAuthn, а может - через куда менее надёжные magic-ссылки на почту или SMS-коды.
Иначе говоря: любой вход через WebAuthn - это passwordless по определению, но не любой passwordless-вход одинаково безопасен, потому что WebAuthn - это far cry от одноразовой ссылки на почту с точки зрения защиты от фишинга.
Сравнение WebAuthn и Passwordless Login в целом#
| Характеристика | WebAuthn | Passwordless Login (в целом) |
|---|---|---|
| Что это | Стандарт и API для аутентификации с помощью криптографии | Общий подход к входу без пароля, любыми средствами |
| Технологическая база | Асимметричная криптография (пара ключей) | Может быть чем угодно: WebAuthn, email-ссылки, одноразовые коды, биометрия |
| Примеры | YubiKey, passkeys, Windows Hello, Face ID, TPM | Magic link на email, SMS-код, push-уведомление, WebAuthn |
| Устойчивость к фишингу | Очень высокая - приватный ключ никогда не покидает контролируемую цепочку доверия | Сильно зависит от метода: SMS/e-mail заметно слабее, WebAuthn/биометрия - на уровне лучших практик |
| Удобство | Быстро, без ввода чего-либо, но нужно поддерживаемое устройство | Часто ещё проще (один клик по ссылке), но иногда медленнее из-за ожидания письма/SMS |
| Требования к инфраструктуре | Сервер должен реализовать FIDO2/WebAuthn API | Может быть проще: достаточно SMTP или SMS-шлюза |
| Годится как 2FA | Да | Да, но не всегда - зависит от конкретного метода |
5. Итоговая таблица по всем трём#
| Технология | Использует пароль? | Завязан на время? | Устойчив к фишингу? | Типичный пример |
|---|---|---|---|---|
| TOTP | Да, как дополнение | Да | Нет | Google Authenticator, Vaultwarden |
| WebAuthn | Нет | Нет | Да | YubiKey, passkey, Touch ID |
| Passwordless | Нет | Зависит от метода | Зависит от метода | Magic link, SMS-код, WebAuthn |
6. Как выбрать на практике#
Из опыта настройки Authentik, Authelia, Keycloak и Zitadel в своём homelab я бы советовал так:
- Нужен просто второй фактор к существующему паролю, максимально совместимый и без затрат - берите TOTP, он заведётся практически везде и не потребует нового железа.
- Важна максимальная защита от фишинга и вы готовы один раз потратиться на аппаратный ключ (или обойтись встроенной биометрией устройства) - однозначно WebAuthn, в идеале в виде passkey, чтобы не мучиться с привязкой к единственному устройству.
- Хотите вообще избавиться от паролей как класса риска - стройте passwordless-вход на основе WebAuthn/passkey, а magic-ссылки на почту или SMS используйте как запасной, а не основной путь входа.
На практике эти три подхода прекрасно комбинируются: у меня, например, пароль + TOTP закрывают базовый уровень сервисов, а всё, что торчит наружу и особенно критично, дополнительно защищено WebAuthn-ключом через тот же Authentik.
Выводы#
TOTP - это усиление обычного пароля одноразовым кодом, самый совместимый и самый простой в внедрении вариант, но не защищённый от фишинга в реальном времени.
WebAuthn - это криптографически надёжный протокол входа без пароля, устойчивый к фишингу по своей природе; passkeys - его современная, синхронизируемая между устройствами реализация.
Passwordless Login - это общая стратегия отказа от паролей, которая может опираться на WebAuthn (тогда это по-настоящему надёжно) или на куда более слабые magic-ссылки и SMS-коды (тогда безопасность входа определяется безопасностью этого канала).
Полезные ссылки:





