TGViewer
Product Developer Product Developer @product_developer · 12K subscribers
Post #124 5.33K
​​SMS Two factor auth — Альтернативы ч1

Cтараюсь придерживаться принципа «Критикуешь — предлагай», поэтому вот продолжение поста
«​​SMS Two factor auth — плохая практика»

Для справки, факторы аутентификации:
1. Something you know (например, пароль или пин)
2. Something you have (например, симка, на которую приходит смс с кодом)
3. Something you are (например, биометрия / FaceID)

Альтернативы — не обязательно прямая замена второму фактору. Но все они призваны решить проблему «подтвердить, что пользователь легитимный».
В один пост упаковать не получилось, поэтому разбил на три и запосчу по одному в пн, вт и ср.

О чем будут посты:
1. TOTP приложения типа Google Authenticator, упомянутые в комментах к прошлому посту. Здесь же расскажу про Yubikey, — физическое устройство для генерации ТOTP. Торчит у меня в ноутбуке, кстати.

2. «Вход по QR-коду» Whatsapp / Яндекс, «Да, это я» Google и другие реализации с помощью приложения на мобиле, где пользователь уже залогинен

3. WebAuthN — Стандарт W3C, будущее аутентификации в вебе. Passkey как частная имплементация WebAuthN для биометрического passwordless. Чтобы рассказать про WebAuthN, я затевал эту серию постов)

========================

Time-based OneTime Password (TOTP) — это способ генерировать на клиенте коды для 2fa

Это приложения — например Google Authenticator, Duo Mobile, …
Или устройство Yubikey, которое вставляется в USB и имеет одну кнопку.

📲С приложением процесс выглядит так:

- Пользователь открывает Google Authenticator на мобиле
- Для первичной привязки приложения к сервису сайт показывает пользователю QR-код с секретным токеном
В QR кодируется строка вида otpauth://totp/Yourlabel?secret=123&issuer=Yourservice
- Пользователь сканирует этот QR-код приложением
- Теперь приложение может генерировать OTP с помощью этого токена и метки временного диапазона
- На странице сайте с 2fa пользователь вводит сгенерированный OTP
- Сайт генерирует OTP с помощью этого же токена и временной метки на своей стороне, сравнивает с введенным пользователем.

В данном случае второй фактор (what you have) — подтверждение владения устройством, на котором установлено и настроено приложение TOTP.

Плюсы — это отсутствие минусов смс:
- 100% «доставляемость», т.к. в отличие от смс они генерируются на клиенте. Работает даже в оффлайне!
- Безопасность. Нельзя «восстановить» как симку. Нельзя перехватить как смску.
- Бесплатность.

Минусы:
— Пользователь должен очень хотеть воспользоваться вашим сервисом, чтобы ради этого устанавливать и настраивать новое приложение
— Нужно открывать приложение — это лишнее действие, в то время как код из смс можно взять из пуша

—————————

🤏Yubikey — тоже генерирует TOTP, но процесс чуть отличается.
- Сервер сохраняет себе публичный ключ Yubikey, ассоциирует его с пользователем
- Yubikey генерирует и подписывает OTP код с помощью секретного ключа, хранимого на устройстве. Генерируемый текст — шифротекст до 64 символов, не предназначен для ручного ввода
- Через драйвер «USB-клавиатуры» Yubikey сам заполняет TOTP в поле ввода, в котором фокус
- Сервер проверяет подпись с помощью публичного ключа.

Так же как и в случае с приложением, второй фактор здесь заключается в подтверждении владения устройством с таким публичным ключом, сохраненным на сервере.

Плюсы:
— еще бóльшая безопасность. Можно сказать, максимальная
— код генерируется одним нажатием, если юбик уже торчит в ноуте

Минусы — еще бóльшая сложность для пользователя:
— Тратить 30-60 баксов на девайс, ждать доставку, а потом его с собой везде таскать
— если юбик не торчит в ноуте, то его надо будет найти и вставить в usb
— можно потерять

Мое мнение: способ безопасный, но не удобный. Массового пользователя не заставить им пользоваться. Можно вкручивать насильно, когда нужно защитить самые ценные аккаунты, а пользователь от вас точно никуда не уйдёт. Но если дать возможность альтернативно пройти 2fa через смс – то все бенефиты безопасности исчезают.

Завтра расскажу про гораздо более user-friendly способы подтверждения.
  • 👍 21
  • 🔥 8
  • ❤ 4
More from @product_developer
  1. Sep 12, 2026Автономность команды. Больше = лучше? Обычно автономность преподносится как безусловное до…
  2. Sep 8, 2026Почему AI-агенты не заменят кожаных Disclaimer: постов будет 2, второй — «Почему заменят»…
  3. Sep 4, 2026Avito.Tech.Conf — 26 сентября, Москва, бесплатно Бесплатных конференций вам в ленту! Спике…
  4. Jul 30, 2026AI-агенты — это ответ! А какой был ваш вопрос? Все бегут в разработку через AI. Во-первых,…
  5. Jul 21, 2026Доставка смс в самолёт Сижу в самолёте. С интернетом, что само по себе — чудо, которое уже…
  6. Jul 20, 2026С этими вашими AI агентами мы снова попали на дикий запад Момент времени Т-4: Когда-то дав…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →