Как работает одноразовый пароль? | OTUS
⚡ Подписка на курсы OTUS!
Интенсивная прокачка навыков для IT-специалистов!
Подробнее

Курсы

Программирование
Python Developer. Basic Специализация Python Developer
-25%
iOS Developer. Professional Архитектура и шаблоны проектирования Scala-разработчик Python Developer. Professional JavaScript Developer. Professional Программист С Kotlin Developer. Basic Android Developer. Basic Node.js Developer Специализация Java-разработчик
-25%
PHP Developer. Basic C# Developer. Professional Symfony Framework Алгоритмы и структуры данных MS SQL Server Developer NoSQL Golang Developer. Professional Framework Laravel Разработчик программных роботов (RPA) на базе UiPath и PIX Kotlin Backend Developer C# ASP.NET Core разработчик Специализация Java и Базы данных Подготовка к сертификации Oracle Java Programmer (OCAJP) Unity Game Developer. Professional Специализация iOS Специализация C# Unreal Engine Technical Game Design Rust Developer
Специализации Курсы в разработке Подготовительные курсы Подписка
+7 499 938-92-02

Как работает одноразовый пароль?

ITSEC_Deep_19.11_site-5020-eb20d9.png

В прошлой заметке мы говорили о том, что такое одноразовый пароль. А теперь давайте узнаем о том, как это всё работает.

На самом деле, всё очень просто. Есть две составляющих данного решения: 1. Клиент — это тот самый генератор одноразовых паролей, представленный в виде брелка/флешки/калькулятора, который выдаётся пользователю; 2. Сервер — программная часть, которая проверяет, правильный ли пароль ввёл пользователь.

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

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

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

На сервере происходит такая же ситуация

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

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

Вышеописанные схемы работы завязаны на события, то есть на нажатия кнопки. Также существуют схемы работы, завязанные на время. Более подробно про реализацию одноразовых паролей можно почитать в RFC 4226.

Есть вопрос? Не забывайте оставлять комментарии!

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
🔥 Черная пятница!
Любой доступный курс OTUS можно купить со скидкой по промокоду — blacksale21