Организация аутентификации по СМС по примеру Telegram/Viber/WhatsApp
Представим, что перед вами стоит задача организовать аутентификацию пользователя (в мобильном приложении, в первую очередь) так, как это сделано в Telegram/Viber/WhatsApp. А именно реализовать в API возможность осуществить следующие шаги:
- Пользователь вводит свой номер телефона и ему на телефон приходит СМС с кодом.
- Пользователь вводит код из СМС и приложение его аутентифицирует и авторизует.
- Пользователь открывает приложение повторно, и он уже аутентифицирован и авторизован.
Мне потребовалось некоторое количество времени, чтобы осознать, как правильно это сделать. Моя задача — поделиться наработанным с вами в надежде, что это сэкономит кому-то времени.
Я постараюсь кратко изложить выработанный подход к этому вопросу. Подразумевается, что у вас API, HTTPS и, вероятно, REST. Какой у вас там набор остальных технологий неважно. Если интересно — добро пожаловать под кат.
Мы поговорим о тех изменениях, которые следует проделать в API, о том, как реализовать одноразовые пароли на сервере, как обеспечить безопасность (в т.ч. защиту от перебора) и в какую сторону смотреть при реализации это функциональности на мобильном клиенте.
SSH, PGP, TOTP в Yubikey 5
Это аппаратный ключ безопасности, который поддерживает протокол универсальной двухфакторной аутентификации, одноразовые пароли и асимметричное шифрование. Если вы добавите его, допустим, в аккаунт на Гитхабе, то для входа в свой аккаунт, понадобится ввести логин/пароль и коснуться кнопки юбикей.
Год назад я приобрел Yubikey, чтобы использовать его в качестве второго фактора для аккаунтов Google, Github и других, которые работают с U2F. Однако я для себя выяснил, что Yubikey обладает куда более расширенным функционалом. Большая часть из нижеописанных действий актуальна для работы и без Yubikey, однако преимущество в портативности будет потеряно.
Все действия описаны для Yubikey 5 и Ubuntu 21.04.
Easy Two Factor Authentication (2FA) with Google Authenticator
With this API implementing two factor authentication (2FA) is easier than ever. Just in 5 minutes I’ll guide you how to generate and validate time-based one-time passwords (TOTP) for second factor authentication (2FA) in fast and secure manner.
TOTP (Time-based one-time Password algorithm)
С ростом числа угроз кибербезопасности, для разработчиков становится все более и более необходимым обновлять стандарты безопасности веб-приложений и быть при этом уверенными в том, что аккаунты пользователей в безопасности. Для этого в настоящее время многие онлайн-приложения просят пользователей добавить дополнительный уровень безопасности для своей учетной записи. Они делают это за счет включения двухфакторной аутентификации. Существуют различные методы реализации двухфакторной аутентификации, и аутентификация TOTP (алгоритм одноразового пароля на основе времени) является одним из них.
Чтобы понять, что из себя представляет TOTP и как он используется, необходимо сначала кратко рассмотреть более базовые понятия. Первое из них – двухфакторная аутентификация. Двухфакторная аутентификация (или многофакторная аутентификация) — это метод идентификации пользователя в каком-либо сервисе (как правило, в Интернете) при помощи запроса аутентификационных данных двух разных типов, что обеспечивает двухслойную, а значит, более эффективную защиту аккаунта от несанкционированного проникновения. Это означает, что после включения двухфакторной аутентификации пользователь должен пройти еще один шаг для успешного входа в систему. Стандартные шаги для входа в учетную запись – это ввод логина и ввод пароля (рис.1).
TOTP без смартфона, послесловие
После публикации статьи «TOTP без смартфона» она получила много интересных и полезных комментариев. Я решил подождать, пока обсуждение затихнет и провести работу над замечаниями и высказанными мыслями.
Поскольку объём работы оказался достаточно большой, то оформил её в виде отдельной публикации-послесловия.
За пределами номера телефона: Использование TOTP для усиления безопасности
Двухфакторная аутентификация, хоть и добавляет шаг в процессе распознавания пользователя со стороны системы или сайта, но все же становится необходимой мерой для безопасной коммуникации. Большинство крупных веб-ресурсов мира сделало этот метод обязательным ввиду расширения списка возможных киберугроз. SMS и Call Password (звонок клиенту) для этой цели — инструменты привычные, но что насчет альтернатив? Иную реализацию «двухфакторки» предлагает TOTP — алгоритм одноразового пароля на основе времени.
ID: способы аутентификации сегодня, их преимущества, недостатки и перспективы развития
Прогресс не стоит на месте и даже такие базовые вещи, как аутентификации на сайтах и в приложениях, обновляются и развиваются каждый день. В данном обзоре мы рассмотрим популярные сегодня методики аутентификации, новые перспективные методы и возможности для бизнеса, связанного с подключением «живых» пользователей к единой информационной системе.
TOTP без смартфона
Когда я решил избавиться от необходимости постоянно носить с собой смартфон, одной из проблем оказалась двухфакторная аутентификация (2FA, приложение Google Authenticator). Остаться без возможности авторизации на множестве сервисов было неприемлемо, нужна была альтернатива.
Беглый поиск вывел меня на утилиту oathtool
: командная строка, POSIX, OSS — всё, как я люблю, проблема в принципе решена. Но, как и большинство CLI утилит, её удобно использовать в сочетании с другими утилитами, а для этого полезно написать скриптовую обвязку. Собственно этой обвязкой, а также опытом использования, я и решил поделиться.
Обход многофакторной аутентификации Box с одноразовым паролем с ограниченным временем действия
Обзор исполнительной среды
Исследовательская группа Varonis обнаружила способ обхода многофакторной аутентификации для учетных записей Box, которые используют такие аутентификационные приложения, как Google Authenticator.
Используя описанный ниже метод, злоумышленник может применить украденные учетные данные для взлома корпоративного аккаунта Box и эксфильтрации конфиденциальных данных без предоставления одноразового пароля.
Мы сообщили об этой проблеме Box в ноябре через HackerOne; позже Box выпустил обновление.
От 1FA к Zero-Trust через рынок ИБ
В настоящее время в контексте систематического увеличения как в размерах, так и в инфраструктурной сложности существующих систем кибербезопасности, а также логического завершения устоявшейся парадигмы локализации средств защиты организаций внутри их периметра, возникает необходимость создания и использования эффективных алгоритмов контроля доступа к чувствительной информации компаний извне, не ограничивающихся лишь структурной криптографической составляющей, но также включающих в себя концептуальные аспекты инфраструктурных методов и решений.
В данной статье автором осуществляется фундаментальный обзор актуальных на сегодняшний день алгоритмов аутентификации пользователей, а также производится разбор и оценка возможности их применимости в контексте инфраструктурного подхода Нулевого Доверия (англ. Zero-Trust).
Умный сейф с одноразовым паролем
Yubikey для дома и офиса
На приобретение Yubikey меня вдохновил
Меня достало, что компании всё чаще используют двухфакторную аутентификацию только через фирменное приложение
В статье рассматривается проблема возрастающего количества приложений для аутентификации в том или ином сервиса. В виду того, что каждый сервис старается завести своё эксклюзивное для него приложение-аутентификатор, пользователю приходится устанавливать такой "ключ" просто потому, что другого способа нет, пусть даже у юзера и есть подходящее приложение, поддерживающее TOTP. В статье изложение проблематика, причины такого явления, его недальновидные плюсы и более актуальные минусы, опубликован компромиссный вариант решения проблемы с учетом технической подкованности аудитории сервиса Хабр.