Двухфакторная аутентификация (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 — это про аутентификацию (кто ты), а не про авторизацию (что тебе можно) — это разные задачи.

А иногда правильный вопрос другой: нужен ли здесь пароль вообще — или сразу строить вход от фактора владения.