Блог
Security · практикаБезопасность 10 мин чтения

2FA правильно: SMS vs TOTP vs hardware-ключ

SMS-код — двухфакторка только на бумаге. Разбираем, чем TOTP лучше SMS, зачем нужен YubiKey, как настроить passkey и куда девать recovery-коды.

«У меня 2FA» — сегодня это значит примерно ничего, если не уточнить какая. SMS-код, TOTP из Google Authenticator, аппаратный YubiKey, passkey из iCloud — это четыре разных уровня защиты, разница между ними — в 100+ раз по устойчивости к атакам.

Разберёмся, чем они отличаются на пальцах, какие атаки против каких работают, и как в 2026-м настроить нормальную 2FA на всём, что критично — от банка до серверов.

SMS 2FA — почему это плохо

SMS-код — устаревший второй фактор. Атаки против него:

  • SIM-swap. Атакующий уговаривает оператора связи перевыпустить SIM на его имя. В США и СНГ известные случаи с потерями миллионов на криптобиржах.
  • SS7-атаки. Перехват SMS через уязвимости сигнального протокола операторов. Не для «уличного» злоумышленника, но реален для целевых атак.
  • Malware на телефоне. Android-трояны читают SMS и пересылают на C2.
  • Фишинг. Классика: сайт-клон, вы вводите SMS-код, атакующий тут же логинится в реальный сервис.
Осторожно

NIST с 2016-го рекомендует уходить от SMS как второго фактора. Но многие банки в 2026-м всё ещё используют SMS — обидно.

TOTP — минимум, который должен быть везде

TOTP — Time-based One-Time Password. Приложение (Google Authenticator, Authy, 2FAS, Aegis) генерирует 6-значный код каждые 30 секунд на основе общего секрета (QR-код при настройке).

Плюсы: работает офлайн, устойчив к SIM-swap. Секрет никогда не покидает ваше устройство после первичной настройки.

Минусы: уязвим к фишингу — атакующий видит одноразовый код и использует его в течение 30 секунд. Уязвим к malware, если оно читает экран.

Рекомендация: используйте Aegis (Android) или 2FAS (iOS/Android). Google Authenticator до 2023 не имел бэкапа — терялся вместе с телефоном.

Hardware-ключи (WebAuthn / FIDO2)

YubiKey, Google Titan, SoloKey. Физический USB/NFC-ключ. Регистрируется на сайте по стандарту WebAuthn/FIDO2.

Как это фишинг-устойчиво. Ключ проверяет доменное имя. Если вы попали на githu-b.com вместо github.com, ключ откажется работать — фишинг блокируется на протокольном уровне. Ни TOTP, ни SMS такого не умеют.

Практика. Купите два ключа: один в кармане, второй в сейфе. Регистрируйте оба на всех критичных сервисах. Ceна: YubiKey 5C NFC ~$55, SoloKey V2 ~$25.

# Сервисы с WebAuthn (2026)
GitHub  ✅   AWS Console  ✅
Google  ✅   Cloudflare   ✅
Binance ✅   1Password    ✅
Dropbox ✅   ProtonMail   ✅
GitLab  ✅   Fastmail     ✅

Passkeys — будущее без пароля

Passkey — эволюция WebAuthn. Ключ синхронизируется через облако (iCloud Keychain, Google Password Manager, 1Password). Пароль просто не нужен: вход по Face ID/Touch ID/PIN устройства.

Плюсы: удобно, фишинг-устойчиво, синхронизация между устройствами.

Минусы: доверие к облачному провайдеру (Apple, Google). Взлом Apple ID = потеря passkey. Уменьшает роль отдельного менеджера паролей.

Рекомендация: для не-критичных сервисов — passkey. Для критичных (крипта, банк, root-серверов) — hardware key вдобавок.

Recovery-коды — куда девать

При включении 2FA сервис даёт 8-10 backup-кодов. Если потеряете 2FA-приложение или ключ — только они спасут аккаунт.

  • Не в облаке. Не Google Drive, не Notion, не iCloud Notes. Слишком легко утечёт при взломе основного аккаунта.
  • В менеджер паролей (1Password, KeePassXC, storage-p) — это лучший baseline.
  • Печать на бумаге + сейф — для самого критичного.
  • Никогда не пересылайте себе на email «на всякий случай». Это самая частая ошибка.

Что защитить в первую очередь

Приоритеты для среднего разработчика/предпринимателя:

  • Email — источник recovery для всего остального.
  • Менеджер паролей — там все ваши секреты.
  • Криптокошельки, биржи, банки.
  • GitHub / GitLab / cloud console (AWS, GCP, Hetzner) — оттуда прод.
  • Домены (registrar) — угон домена = угон всего email.

Частые вопросы

Что выбрать: TOTP или hardware-ключ?
Hardware-ключ везде, где поддерживается. TOTP — там, где WebAuthn ещё нет. SMS — нигде, кроме тех случаев, где нет альтернативы (некоторые банки).
YubiKey и без интернета работает?
Да, WebAuthn — это Challenge-Response локально. Интернет нужен только сайту, куда вы логинитесь.
Можно ли использовать телефон как FIDO2-ключ?
Да, iOS 16+/Android 13+ работают как WebAuthn-authenticator через Bluetooth. Удобно, но телефон уязвимее, чем отдельный ключ.
Что если потерял ключ и recovery-коды?
Полная блокировка. У большинства крупных сервисов recovery через customer support занимает недели, иногда невозможен. Второй ключ и recovery-коды в сейфе — не паранойя.