← Все статьи

Что такое двухфакторная аутентификация и зачем она вашему приложению

Burncode Team 4 минуты чтения

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

Основная идея

Двухфакторная аутентификация (2FA) требует подтвердить личность двумя разными типами доказательств вместо одного. В безопасности принято выделять три возможных фактора: то, что вы знаете (пароль), то, что у вас есть (телефон, аппаратный ключ), и то, чем вы являетесь (отпечаток пальца, лицо). Пароль — это лишь один фактор. 2FA добавляет второй, из другой категории, поэтому злоумышленник, укравший пароль, всё равно не сможет войти: вашего телефона у него нет.

Основные способы 2FA и их сравнение

  • SMS-коды. Одноразовый код приходит на телефон в сообщении. Это просто и намного лучше, чем ничего, но это самый слабый из распространённых вариантов: он уязвим для атак с подменой SIM-карты, когда злоумышленник убеждает оператора связи перенести ваш номер на устройство, которое контролирует он сам.
  • Приложения-аутентификаторы. Они каждые 30 секунд генерируют новый шестизначный код на основе общего секрета, который один раз настраивается между вашим аккаунтом и приложением. Это заметно надёжнее SMS, ведь в цепочке нет оператора связи, которого можно обмануть, и сегодня именно этот способ чаще всего рекомендуют как базовый.
  • Push-уведомления. Вместо кода, который нужно ввести, приложение присылает запрос на подтверждение: «Это вы?». Удобно, но здесь есть известный риск — так называемая «усталость от запросов»: злоумышленники раз за разом пытаются войти в расчёте на то, что уставший пользователь в какой-то момент машинально нажмёт «Подтвердить».
  • Аппаратные ключи безопасности. Физическое устройство, которое нужно подключить или приложить. Это самый надёжный из широко доступных вариантов, практически неуязвимый для фишинга: прежде чем ответить, ключ проверяет, что общается с настоящим сайтом, и фальшивая страница входа просто не может завершить обмен.

От чего на самом деле защищает 2FA

Сценарий, под который создана 2FA, в реальной жизни встречается очень часто: пароль пользователя утекает где-то вне вашего продукта — при взломе другой компании, через фишинговое письмо, из-за вредоносной программы на его компьютере, — а этот же пароль он использует и на вашей платформе. Без 2FA аккаунт будет захвачен в ту же секунду, как злоумышленник попробует войти. С 2FA одного украденного пароля мало, и попытка захвата проваливается.

Как внедрить 2FA и не испортить пользовательский опыт

Главное возражение против 2FA — лишние сложности для пользователя, и оно справедливо, если всё сделано плохо. Несколько практичных подходов помогут сохранить удобство:

  • Запоминайте доверенные устройства. Если пользователь уже подтвердил устройство, не запрашивайте второй фактор при каждом входе с него — только когда что-то меняется, например появляется новое устройство или местоположение.
  • Делайте 2FA обязательной для важных действий и необязательной (но настоятельно рекомендуемой) в остальных случаях. Некоторые продукты требуют 2FA только для учётных записей администраторов или для рискованных операций — смены пароля или платёжных данных, — а всем остальным предлагают её по желанию. Для потребительских продуктов с невысоким уровнем риска это разумный компромисс.
  • Предусмотрите надёжный резервный вариант. Резервные коды, которые генерируются при настройке, не дадут пользователю, потерявшему телефон, навсегда лишиться доступа к собственному аккаунту. Потерянный доступ к 2FA без возможности восстановления — серьёзная нагрузка на поддержку и реальный риск, если сам процесс восстановления слишком легко использовать злоумышленнику.

Кому это действительно нужно

Если ваше приложение хранит что-то, потеря чего расстроит пользователя, — персональные данные, платёжную информацию, деловую документацию, — 2FA уже не приятное дополнение, а практически базовое ожидание. Корпоративные клиенты всё чаще прямо спрашивают о ней до подписания договора, особенно когда в разговоре появляются требования соответствия стандартам вроде SOC 2.

Грамотное внедрение 2FA — подходящие вашим пользователям факторы, разумные настройки по умолчанию и удобный процесс восстановления, который сам не становится брешью в защите, — стандартная часть работы по усилению аутентификации, которую Burncode выполняет в рамках комплексного аудита безопасности приложений.