Двухфакторная аутентификация (2FA) — это вход по двум разным доказательствам: что-то, что ты знаешь (пароль) и что-то, что ты имеешь (телефон, приложение, аппаратный ключ). Даже если пароль украли, без второго фактора в аккаунт не войти.
TL;DR
- Один пароль ненадёжен: его утекают, перехватывают и выманивают фишингом. 2FA добавляет второй, независимый барьер.
SMS— лучше, чем ничего, но самый слабый фактор: sim-своп, перехват поSS7, фишинг кода в реальном времени.TOTP(коды из приложения) — секрет не ходит по сети после настройки, перехватывать нечего. Крепкий дефолт.- Push и аппаратные ключи (
YubiKey,Passkey/FIDO2) — на асимметричной криптографии: приватный ключ не покидает устройство, фишинг невозможен. - Тренд — passwordless: фактор владения вытесняет пароль. «Поддержка 2FA» в требованиях — это не строчка, а выбор фактора, интеграции и модели рисков.
Почему одного пароля мало?
Пароль можно украсть: фишинг, кейлоггер, утечка с другого сервиса, где ты использовал тот же пароль. Существуют базы утечек на миллиарды паролей — при брутфорсе они перебираются первыми. Если твой пароль когда-то утёк хоть откуда-то, его подберут не за годы, а за секунды.
Схема рабочая до банального. Как-то мне написал старый контакт в телеге: «проголосуй за девочку», живенько так, вход по ссылке через телеграм — и аккаунта нет. У меня стоял облачный пароль, поэтому угнать не вышло. Но без второго фактора аккаунты улетают за секунды.
Пароль — единая точка отказа. Второй фактор превращает «украл пароль — вошёл» в «украл пароль — всё ещё не вошёл».
Какие бывают вторые факторы?
SMS-код
Самый знакомый: сервер генерирует код, шлёт через SMS-шлюз, ты вводишь. Просто — и ненадёжно. SIM перевыпускают (sim-своп), SMS перехватывают через уязвимость SS7, код выманивают фишингом в реальном времени. Лучше, чем ничего, но самый слабый вариант.
TOTP — коды из приложения
Google Authenticator, Authy, Яндекс.Ключ. При настройке сканируешь QR — секретный ключ сохраняется на устройстве. Каждые 30 секунд приложение генерирует новый код из этого ключа и текущего времени; сервер делает то же самое и сравнивает. После настройки секрет по сети не передаётся — перехватывать нечего.
Push-уведомления
То, что делают банки и Яндекс: вместо кода приходит push «Вы входите с устройства X?» → «Да». Под капотом асимметричная криптография — устройство подписывает ответ приватным ключом, который никогда не покидает телефон.
Аппаратные ключи и токены
YubiKey, смарт-карты, корпоративные ID-карты. Принцип тот же: приватный ключ зашит в устройство, вытащить нельзя. Воткнул ключ в USB или приложил карту — подтвердил личность. В корпоративной среде это давно стандарт.
Почему фактор владения побеждает фактор знания?
Некоторые сервисы выкинули пароль вовсе:
- Telegram — пароля по умолчанию нет: вход по коду на устройство, а облачный пароль — опциональный второй фактор. Владение телефоном стало первым фактором, пароль — дополнительным.
- Microsoft — разрешает удалить пароль из аккаунта целиком: вход через Authenticator или Passkey.
- WhatsApp, Signal — только номер плюс устройство.
- Passkeys (Apple, Google, Microsoft) — стандарт
FIDO2/WebAuthn: приватный ключ на устройстве плюс биометрия, пароля нет вообще. Фишинг невозможен — ключ привязан к домену.
Логика простая: пароль (фактор знания) можно подобрать, перехватить и выманить. Физическое устройство (фактор владения) — нет.
Что это значит для аналитика?
Когда в требованиях появляется «поддержка 2FA» — это не одна строчка. Это набор решений: какой фактор поддерживаем (один или несколько), как интегрируемся с провайдером, что делаем при потере фактора (резервные коды, восстановление), какие риски принимаем. SMS дешевле всего внедрить и слабее всего защищает; TOTP — крепкий дефолт без внешних зависимостей; passkey — максимум защиты, но требует поддержки на клиентах. И помни: 2FA — это про аутентификацию (кто ты), а не про авторизацию (что тебе можно) — это разные задачи.
А иногда правильный вопрос другой: нужен ли здесь пароль вообще — или сразу строить вход от фактора владения.