Одноразовые пароли

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

Аутентификация может быть усилена, если пользователь применяет специальные устройства, которые способны хранить сильные секреты и проводить с ними криптографические вычисления. С помощью этих устройств можно организовать надежный криптографический протокол аутентификации. Но такой протокол, как правило, будет иметь высокую вычислительную сложность. Поэтому устройство должно обладать достаточно серъезными вычислительными ресурсами, что повышает его стоимость и во многих случаях делает его применение экономически неоправданным. Кроме этого, для выполнения сложного протокола устройство должно быть плотно сопряжено с информационной системой, в которой пользователь работает, а это оказывается не всегда возможным.

Выходом является упрощение криптографических вычислений и выдача их результата в виде короткого пароля с малым сроком действия. Такой пароль принято называть одноразовым (one-time password, OTP). Даже если одноразовый пароль будет скомпрометирован, компрометация затронет только конкретный сеанс пользователя или даже определенный промежуток этого сеанса.

Средства формирования одноразовых паролей получили широкое распространение в связи с массовой аутентификацией в сети Интернет. Эти средства могут быть аппаратными (пример – токен SecureID компании RSA) или программными (приложение Authenticator компании Google). Унификация средств требует стандартизации алгоритмов формирования одноразовых паролей, правил формирования их входных данных, правил кодирования паролей, правил аутентификации и пр.

Основные шаги по стандартизации были сделаны международным комитетом OATH (Open AuTHentication). Под эгидой этого комитета были разработаны 3 основных стандарта: RFC 4226, RFC 6238 и RFC 6287. В стандартах определены алгоритмы HOTP, TOTP и OCRA. Алгоритмы строят пароль по общему для клиента и сервера ключу и дополнительным  уникальным данным:  монотонному счетчику, отметке времени,  случайному запросу.  Алгоритмы по сути определяют 3 типа систем  аутентификации: на  основе событий,  на основе времени и на основе запросов.

В системах первого типа пароль меняется при возникновении определенных событий. Как правило, таким событием для клиента является любая попытка аутентификации, а для сервера – успешная попытка.

В системе S/KEY, которая используется для аутентификации в операционных системах Linux, одноразовый пароль является результатом многократного хэширования мастер-пароля X0. Клиент хэширует мастер-пароль n раз c помощью функции h и отправляет полученное значение Xn = hn(X0) серверу. В первой попытке аутентификации клиент предъявляет одноразовый пароль Xn-1 = hn–1(X0). Сервер признает его правильным и меняет Xn на Xn-1, если h(Xn-1) = Xn. В следующей попытке клиент предъявляет Xn-2, а сервер меняет Xn-1 на Xn-2, и т. д. Противнику, который перехватывает текущий одноразовый пароль Xi, для успешной аутентификации требуется найти предыдущий пароль Xi-1, а для этого обратить h. Задача обращения будет вычислительно трудной, если h – криптографически стойкая функция хэширования.

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

События для клиента и сервера могут различаться, их пароли могут разойтись, и поэтому система аутентификации нуждается в дополнительных механизмах синхронизации. В системах на основе алгоритма HOTP клиент и сервер хранят счетчики попыток аутентификации. Синхронизация состоит в том, что сервер проверяет пароль не только на текущем значении счетчика, но и на d будущих значениях. Фактически сервер проверяет будущие пароли, которые могут оказаться текущими  относительно клиента. Если i-й будущий пароль отказался подходящим, то сервер восстанавливает синхронизацию, увеличивая счетчик не на 1, а на i + 1. Синхронизация будет полностью потеряна, если клиент выполнил более d попыток аутентификации, о которых не  известно серверу.

В системах на основе времени одноразовый пароль обновляется каждые t секунд (на практике t = 30 или 60). Устройство должно быть снаряжено достаточно точным таймером, что может привести к значительному его удорожанию. С другой стороны, системы на основе времени имеют ряд преимуществ относительно систем на основе событий. Во-первых, возможности противника по перебору паролей ограничены – он должен успеть подобрать пароль в течение t секунд. Во-вторых, опасность рассинхронизации не столь велика, как в предыдущем случае. Для синхронизации клиенту и серверу достаточно согласовать показания времени. 

В системах на основе запросов одноразовый пароль строится на основании случайного запроса сервера. Фактически одноразовый пароль превращается в ответ протокола "запрос – ответ".  Таймер не нужен, но  дополнительно к интерфейсу вывода пароля должен быть предусмотрен интерфейс ввода запроса. Проблемы с синхронизацией отсутствуют, но противник может перебирать пароли относительно текущего запроса сколь угодно долго. Серверу следует ограничивать число  попыток ввода пароля, иначе система перестанет быть стойкой.

Подведем итоги:

Система Аппаратные требования Синхронизация Надежность
на основе событий интерфейс вывода (дисплей) динамически по правильным паролям, возможна потеря средняя
на основе времени интерфейс вывода, таймер согласование времени высокая
на основе запросов интерфейс вывода, интерфейс ввода (миниклавиатура) не нужна высокая
Новости
31.03.2017
ITSecurity-2017
22.02.2017
Ввод в действие новой редакции СТБ 34.101.47
21.02.2017
План семинара весна 2017
20.01.2017
Итоги NSUCRYPTO-2016
24.10.2016
План семинара осень 2016
29.08.2016
Ввод в действие СТБ 34.101.77
15.06.2016
CTCrypt-2016
19.04.2016
Криптографические стандарты: планы на 2016 год
09.03.2016
План семинара