Как стать автором
Обновить

Беспарольная аутентификация, новая эра безопасности

Уровень сложностиПростой

Введение

В мире, где киберугрозы становятся все более изощрёнными, традиционные методы аутентификации, такие как пароли, становятся уязвимыми и неудобными. Украденные базы данных с паролями и регулярные утечки информации заставляют задуматься о необходимости перехода к более современным и надёжным методам защиты. Одним из таких методов является беспарольная аутентификация.

Основы беспарольной аутентификации

Беспарольная аутентификация предполагает отказ от использования паролей как основного метода подтверждения личности пользователя. Вместо этого можно, например, использовать криптографические ключи: закрытый ключ, который хранится на устройстве пользователя, и публичный ключ, который лежит где-то в открытом доступе. Чтобы не создавать множество серверов аутентификации, можно использовать один общий сервер, на котором будет реализован стандарт OAuth2.

Как это работает:

  1. Создание пары ключей: Возьмём, например, универсальное решение, верификация по E-mail через приложение в смартфоне. После верификации e-mail создаётся пара ключей — публичный и закрытый. Закрытый ключ — это, по сути, сертификат, в котором прописан юзернейм (в данном случае e-mail). Закрытый ключ хранится на смартфоне в защищённом хранилище, а публичный ключ отправляется на сервер.

  2. Процесс аутентификации: Когда пользователь пытается войти в систему, ему нужен только юзернейм. Сервер отправляет ему случайный запрос (challenge) послав нотификацию на телефон или просто открыв приложение, оно само спросит про начавшиеся сессии аутентификации. Пользователь сверяет проверочное сообщение и то, куда он сейчас пытается зайти, и подтверждает либо просто кнопкой, либо биометрией. Приложение, используя закрытый ключ, подписывает этот запрос и отправляет его обратно на сервер. Сервер аутентификации проверяет подпись с помощью публичного ключа, и если подпись корректна, предоставляет доступ и отправляет пользователя на первоначальный сервис. И вот мы залогинились без какого-либо пароля и абсолютно безопасным способом.

Преимущества беспарольной аутентификации

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

  2. Удобство для пользователя: Пользователю не нужно помнить и вводить сложные пароли, а также регулярно их менять. Восстановление доступа к аккаунту также упрощается — достаточно повторно верифицировать мейл или импортировать сертификат на новое устройство. Тут, наверно, самое опасное, но если использовать единый сервис аутентификации, то все нотификации об активности можно слать на телефон или е-мейл.

  3. Универсальность: Система работает на любом устройстве, не требует использования менеджеров паролей или других средств для синхронизации паролей между устройствами, а ещё менеджеры паролей не со всеми приложениями работают на телефонах, тут же такой проблемы нет, а юзернейм, наверно, все помнят, ну или всегда можно глянуть в приложении.

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

Недостатки беспарольной аутентификации

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

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

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

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

Уже имеющиеся решения

  1. Отправка верификационного кода на е-мейл/смс: по сути, то же самое только каждый раз нужно ходить в почтовый ящик и проверять код, что неудобно и занимает больше времени. Могут ещё ссылку отправить, что упрощает вход, но всё равно оно половинчатое решение и сильно зависит от того, через какой сервис мейлы посылают.

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

  3. Куча платных решений: есть также всякие сторонние решения, но они стоят денег и в основном для корпоративных решений.

Есть решение: Открытый исходный код

В отличие от закрытых решений, таких как Google или Apple Passkey, использование беспарольной аутентификации с открытым исходным кодом предоставляет большие возможности для кастомизации и независимости. Разработка таких решений позволяет компаниям и пользователям развернуть собственные системы аутентификации, контролировать хранение закрытых ключей и обеспечивать максимальный уровень безопасности. То есть нам нужен сервис или лучше сервисы которые бы позволяли аутентифицироваться без пароля и чтоб их начали поддерживать популярные сервисы. Вроде с этим сложно так как зачем им ещё одна кнопка для логина, но можно хотя бы начать с того, что можно использовать данный подход хотя бы для внутренних решений, многое же уже умеет работать с OAuth2, а тут надо всего лишь иметь свой сервис беспарольной аутентификации. Пишется он быстро и придумывать ничего своего особо не надо, все библиотеки уже есть давно, а лучше взять готовое и помочь, разве что мобильное приложение нужно. Но и тут работы минимально, а бонусов много, особенно если уже всё умеет работать с OAuth2.

Заключение

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

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.