Pull to refresh

Одноразовые пароли. Где? Зачем? Как?

Reading time3 min
Views2.7K
Когда я впервые услышал фразу «одноразовый пароль» я был в недоумении. Как это одноразовый? Кто будет использовать пароли, которые действуют только один раз? это сколько же надо паролей помнить, чтобы после первого же использования его выбросить? Да и вообще кому это нужно, ведь есть же нормальные долгоживущие пароли.

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

Представьте себе, что Вы оказались в командировке в чужом городе, и у Вас сломался ноутбук, или у Вас его вообще не было, а Вам срочно понадобилось зайти в корпоративную почту или получить доступ на корпоративный портал. Что Вы будете делать? Правильно, большинство из нас пойдёт в место общего пользования интернетом: интернет кафе/игровой клуб/почтовое отделение. Вот Вы пришли, сели за компьютер, открыли браузер, ввели адрес, появилась страничка аутентификации и… СТОП! Это же компьютер общего пользования, и если Вы сейчас введёте логин и пароль, то где гарантия того, что они тут же не попадут в руки третьих лиц? Что же делать? Вот такую задачу и помогут решить одноразовые пароли. Вы вводите логин, вводите одноразовый пароль, и получаете доступ к необходимому Вам ресурсу. Почему это более безопасно чем обычные пароль? Да потому что в следующий раз, для доступа к корпоративным ресурсам, Вам придётся ввести совершенно другой пароль.

Всё вышеописанное звучит красиво, но остаётся вопросик: от куда Вы получите следующий пароль? Может Вам необходимо будет поменять его перед выходом из системы? Может администратор отследив, что Вы уже воспользовались один раз паролем, изменит его и пришлёт Вам SMS? Или может у Вас есть список этих самый одноразовых паролей? Нет, всё гораздо проще — есть генератор одноразовых паролей, который может выглядеть как брелок, флешка, кредитная карта или небольшой калькулятор. Для того, чтобы сгенерировать одноразовый пароль, достаточно нажать одну(или несколько, в случае «калькулятора») кнопочек и новый пароль высветиться на экране. Вводим этот пароль и получаем доступ к нужной информации, и не боимся, что пароль украли или посмотрели, ведь в следующий раз сгенериться совершенно другой пароль.

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

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

Описанные схемы работы завязаны на события, то есть на нажатия кнопки, так же существуют схемы работы завязанные на время.

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

P.S. Это моя первая статья на Хабре, но надеюсь не последняя…

Когда генератор одноразовых паролей выдаётся пользователю, то его серийный номер привязывается к логину пользователя, таким образом, получив логин пользователя, сервер точно знает какие значения вектора инициализации и счётчика необходимо использовать. Что же происходит с этими
Tags:
Hubs:
+23
Comments39

Articles