Чем двухфакторная аутентификация отличается от двухэтапной?
Объяснение, после которого вы перестанете путать двухфакторную аутентификацию с двухэтапной и сможете поспорить со спецами по безопасности
13К открытий13К показов
Двухфакторная (2FA) и двухэтапная (2SV) аутентификации — это способы дополнительной защиты аккаунта. Часто между ними ставят знак равенства даже разработчики. Но это неверно.
Что такое двухфакторная аутентификация?
Ключевое слово здесь — фактор. Всего их выделяют четыре:
- знание чего-либо — например, логина, пароля, ключа, кодовой фразы, любой другой секретной информации, которая задаётся при создании профиля;
- обладание чем-либо — например, аппаратным токеном или смартфоном с приложением, генерирующим коды;
- нахождение в конкретном месте — для определения используется, например, IP-адрес пользователя или радио-метка;
- обладание некими биологическими особенностями — например, сканирование отпечатка пальца или радужной оболочки глаза.
Двухфакторная аутентификация — это когда последовательно используются два фактора.
Например, у меня есть аккаунт на Яндексе, в настройках которого включена двухфакторная аутентификация. Чтобы зайти в него на новом устройстве, требуется соблюдение двух факторов:
- Я знаю логин.
- Я обладаю смартфоном с приложением Яндекс.Ключ, которое генерирует коды для авторизации.
Есть и другие приложения для генерирования кодов: Google Authenticator, Microsoft Authenticator, LastPass Authenticator. Но все они решают одну задачу — выступают в качестве второго фактора при авторизации пользователя.
Вместо смартфона с приложением можно использовать аппаратный токен. Он подключается через порт USB, Bluetooth или NFC. Когда вы регистрируетесь на очередном сервисе и включаете двухфакторную аутентификацию, внутри токена генерируется новая пара ключей. Открытый ключ передаётся на сервер, закрытый — хранится на аппаратном токене.
Для двухфакторной аутентификации с помощью токенов используется протокол FIDO U2F. На сайте USB-Dongle Authentication можно посмотреть список сервисов, которые его поддерживают. Среди них, например, мессенджеры WhatsApp, Viber, Slack и Telegram.
Процесс авторизации с помощью аппаратного токена выглядит следующим образом:
- Подключение к устройству аппаратного токена.
- Ввод логина и пароля на сервисе.
- Нажатие на физическую кнопку на токене или другое действие для подтверждения присутствия пользователя за компьютером.
- Сверка открытого и закрытого ключей.
- Успешная авторизация в случае совместимости ключей.
Протокол FIDO U2F поддерживают браузеры Google Chrome, Mozilla Firefox, Microsoft Edge, Opera. На Safari поддержки по умолчанию нет, но её можно добавить с помощью расширения, доступного для скачивания на GitHub.
Со сканированием отпечатков пальцев, радужной оболочки глаза, определением местоположения похожая ситуация. Чтобы второй фактор работал, нужна поддержка со стороны сервисов и устройств, через который пользователь пытается авторизоваться.
Что такое двухэтапная аутентификация?
С двухэтапной аутентификацией дело обстоит намного проще. Допустим, вы вводите пароль и получаете код подтверждения через SMS. Это два этапа, но один фактор — знание.
Например, двухэтапная аутентификация используется в Telegram. При авторизации на новом устройстве вы получаете код подтверждения в чате (если у вас есть доступ к аккаунту на другом устройстве) или через SMS. Это первый этап. После включения в настройках безопасности двухэтапной аутентификации появится ещё один шаг — ввод пароля, который вы сами придумали. Снова два шага, но один фактор — знание.
Двухфакторную и двухэтапную аутентификации путают, потому что на практике грань очень тонкая
В теме определения типа аутентификации находится место спорам. Например, есть мнение, что подтверждение личности через код в SMS — это фактор владения SIM-картой, на которую приходит сообщение. Поэтому стоит говорить об этой технологии аутентификации как о двухфакторной, пусть и крайне слабой, потому что SIM-карту можно без проблем перевыпустить, а номер телефона — подменить.
Скорее всего, корни этих разногласий уходят во времена, когда отправку кода через SMS действительно считали вторым фактором проверки. Однако эта практика остаётся в прошлом. Американский Национальный институт стандартов и технологий ещё в 2016 году не рекомендовал использовать SMS в 2FA из-за высокого риска взлома. В качестве альтернативы предложены приложения-генераторы кодов и аппаратные токены.
Тем не менее, некоторые сервисы продолжают называть SMS вторым фактором. Например, GitHub предлагает два способа использования двухфакторной аутентификации: генерирование ключа в приложении и отправку кода в сообщении. Обратная ситуация — Google называет все способы дополнительной защиты двухэтапной аутентификацией, хотя среди них есть использование аппаратного токена и генерирование кодов в приложении.
Впрочем, эти разногласия возникают только в спорах людей, интересующихся информационной безопасностью. Разработчикам достаточно помнить, что подтверждение личности через SMS — это слабая защита, и по возможности добавлять поддержку более сильных факторов. Простым же пользователям чётко представлять разницу между двухэтапной и двухфакторной аутентификациями не обязательно.
Прочитали статью? Проверьте себя!
13К открытий13К показов