За пределами номера телефона: Использование TOTP для усиления безопасности

32f0bebfc7d0fa592e221b96662d0dd8.png

Развитие методов двухфакторной идентификации

Раньше авторизация пользователя в интернете осуществлялась через пару логин/пароль и была проще некуда. Но чем активнее развивались технологии взлома, тем меньше было доверия к такому простому методу. Развитием безопасного подхода стала двухфакторная (по сути, базовый вид многофакторной) аутентификация, предполагающая запрос данных двух разных типов. Защита данных, соответственно, увеличивается вдвое.

Чаще всего методика реализована через отправку пользователю уникального кода, который затем подтверждает себя вводом этого кода в систему. 

Ориентация на SMS-аутентификацию следовала за развитием мобильной связи. Когда почти у каждого жителя Земли появился личный телефон (и самое главное номер, он же, по сути, уникальный идентификатор), стало возможно точно идентифицировать человека через его использование. Если телефон не был украден, то отправка сообщения с кодом на номер гарантирует коммуникацию сервиса и нужного клиента. 

Двухфакторная аутентификация на основе TOTP (Time-based one-time Password algorithm) начала применяться в последние годы, когда кроме наличия собственного телефона большинство людей имеют через него постоянный доступ в интернет. С помощью приложения пользователю предлагается отсканировать QR-код, а затем приложение каждый раз генерирует одноразовый пароль для идентификации в системе.

Чем это лучше SMS — пароль генерируется и находится на устройстве пользователя, а не на сервере. Получить к нему доступ значительно сложнее. Для бизнеса методика полезна сниженной стоимостью, т. к. не требуется никакой оплаты за сообщения. Рассмотрим, как работает TOTP. 

Многофакторная аутентификация на основе TOTP, взгляд изнутри

Как в техническом плане происходит процесс идентификации по TOTP? Как уже было сказано, приложение внутри гаджета пользователя создает пароль для доступа, причем он будет постоянно меняться. 

Пошагово процесс можно разбить на этапы:

  1. Создание ключа-секрета на сервере для конкретного пользователя.

  2. Передача ключа приложению на устройстве.

  3. Генерация одноразового пароля (OTP) на основе данных пользователя: имени, ключа-секрета и текущего времени, за это ответственен математический алгоритм.

  4. Обновление пароля на основе времени.

Пароль активен в течение 30 секунд, после чего перестает действовать и генерируется новый. Злоумышленник просто не успеет его перехватить. 

Чтобы сделать использование метода удобным, помогает QR-код. Сами по себе ключи представляют собой длинные строки текста, копировать и вводить их неудобно. Зато можно отсканировать QR и получить ключ-секрет через него, после чего сгенерированный пароль будет отправлен серверу и произойдет аутентификация. Но для лучшей безопасности стоит оставить ручной ввод пароля пользователем.

Для работы с TOTP можно использовать бесплатные приложения — Google Authentificator, Authy и т. п., можно внедрить алгоритм и в бизнес-приложение. 

Применение метода TOTP, сравнение с SMS и другими видами аутентификации

Пока что метод не получил сверхширокого распространения, однако набирает популярность, в частности из-за возможности сэкономить на отправке SMS-сообщений. 

Вот несколько сфер, где аутентификация по TOTP находит активное применение:

  • Системы удаленного доступа к конфиденциальным данным. Если компания использует хранилища информации с высоким уровнем секретности, то метод позволяет добиться лучшей безопасности по сравнению с аналогами.

  • Онлайн-банкинг. Доступ к аккаунтам клиентов логично реализовать с помощью TOTP, тем более у банков есть собственные приложения и ресурсы для поддержки алгоритмов.

  • Электронная торговля. Здесь метод используется в работе с банковскими картами покупателей, т. к. доступ к финансам должен быть защищен.

  • Медицина. Методика позволяет обеспечивать конфиденциальность работы с личными карточками пациентов, доступом к ним врачей и т. п.

В сравнении с SMS, TOTP имеет ряд неоспоримых преимуществ:

  • Перехват пароля практически невозможен. Обновляя его в течение 30 секунд, алгоритм лишает хакеров шанса быстрого перехвата и аутентификации чужими данными.

  • Удобство для пользователя. Нет необходимости читать и запоминать пароли, отправку можно настроить в автоматическом режиме.

  • Экономическая эффективность. Не требуется оплаты за каждое соединение, а все затраты ограничены разработкой или внедрением надстройки TOTP в собственном приложении. 

Есть у метода и недостатки. Например, сервер аутентификации может быть перегружен DDOS-атаками. Также есть риск потери токена OTP или всего клиентского гаджета, после чего восстановить доступ будет довольно сложно. Некоторые пользователи могут счесть метод более сложным чем привычные им, особенно если их устройства не работают с интернетом (телефоны только для сотовой связи). 

Другой популярный сейчас метод — CallPassword ID, предоставляющий аутентификацию по звонку. Для пользователя генерируется номер телефона, на который он бесплатно звонит и тем самым осуществляет идентификацию себя в системе. Этот процесс отличается от приема кода в SMS с кодом, но имеет ряд преимуществ: Полная защита от спам-ботов и DDOS-атак, оплата только за успешную верификацию пользователей, при этом стоимость одной оплаты до 4 раз дешевле. 

И если ТОТР неплохо себя зарекомендовал в задачах, где требуется повышенная безопасность и конфиденциальность данных, то для задач бизнеса, таких как авторизация в приложениях, использование программ лояльности, регистрация пользователей на web-ресурсах, лучше подойдут более простые механики.

© Habrahabr.ru