Идея одноразовых паролей заключается в использовании для зашумления секрета дополнительной информации, которую знают обе стороны процесса авторизации — и клиент, и сервер

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

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

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

Предлагается несколько алгоритмов генерации одноразовых паролей, которые отличаются используемой для этого дополнительной информацией. Наиболее ранняя схема аутентификации, описанная в RFC1760 и RFC1938 и известная как алгоритм S/Key, для зашумления использует число подключений, то есть для генерации пароля нужно знать, сколько раз проходила ранее процедура аутентификации. Есть другая схема генерации одноразового пароля, в которой в качестве дополнительной информации выступает время. Сейчас эта схема стала достаточно популярной и имеет множество реализаций. Наиболее сложной схемой является алгоритм «запрос-ответ», где сервер пересылает клиенту информацию для зашумления пароля. Для генерации одноразовых паролей можно использовать как чисто программное, так и аппаратное решение, и в последнее время рынок склоняется в сторону второго варианта.

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

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


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

Идея одноразовых паролей заключается в использовании для зашумления секрета дополнительной информации, которую знают обе стороны процесса авторизации — и клиент, и сервер


Практика

После публикации рекомендации IETF для системы S/Key и одноразовых паролей на основе времени появилось несколько свободно распространяемых реализаций.

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

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

Поэтому появились и аппаратные реализации одноразовых паролей.

В частности, одной из распространенных аппаратных реализаций одноразовых паролей является технология SecurID, предлагаемая компанией RSA Security. Она основана на специальных калькуляторах — токенах, которые каждую минуту генерируют новый код. В токен встроена батарейка, заряда которой хватает на несколько лет, после чего токен нужно менять.

Аутентификация с помощью SecurID интегрирована в сотни приложений, а недавно она при поддержке Microsoft была встроена в операционную систему Windows.

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

Например, можно генерировать пароль по событию — нажатию клавиши на устройстве. Такое решение предлагает компания Secure Computing в виде продукта Safeword. Аппаратную реализацию технологии «запрос-ответ» продает корпорация CryptoCard.

Есть даже универсальные аппаратные реализации, которые позволяют перепрограммировать токены.

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