Введение

Пароль, который может быть использован только один раз. Одноразовый пароль (OTP), также известный как одноразовый PIN-код, одноразовый код авторизации (OTAC) или динамический пароль, – это пароль, действительный только для одной сессии входа в систему или транзакции на компьютерной системе или другом цифровом устройстве. OTP устраняют ряд недостатков, связанных с традиционной (статической) аутентификацией на основе пароля; некоторые реализации также включают двухфакторную аутентификацию, требуя для одноразового пароля доступа к чему-то, что есть у пользователя (например, небольшому брелоку с встроенным генератором OTP, смарт-карте или конкретному мобильному телефону), а также к чему-то, что пользователь знает (например, PIN-коду). Алгоритмы генерации OTP обычно используют псевдослучайность или случайность для создания общего ключа или начального значения и криптографические хеш-функции, которые можно использовать для получения значения, но которые трудно обратить, что затрудняет злоумышленнику получение данных, использованных для хеширования. Это необходимо, поскольку в противном случае было бы легко предсказать будущие OTP, наблюдая за предыдущими. OTP рассматривались как возможная замена или дополнение к традиционным паролям. Однако OTP могут быть перехвачены или перенаправлены, а аппаратные токены могут быть потеряны, повреждены или украдены. Многие системы, использующие OTP, не реализуют их безопасно, и злоумышленники все еще могут получить пароль с помощью фишинговых атак, выдавая себя за авторизованного пользователя. Еще одно важное преимущество заключается в том, что пользователь, использующий один и тот же (или похожий) пароль для нескольких систем, не становится уязвимым для всех этих систем, если пароль для одной из них будет скомпрометирован. Некоторые системы OTP также стремятся обеспечить невозможность перехвата или подмены сеанса без знания непредсказуемых данных, созданных в предыдущем сеансе, тем самым дополнительно уменьшая поверхность атаки. Существуют различные способы информирования пользователя о следующем OTP для использования. Некоторые системы используют специальные электронные токены безопасности, которые пользователь носит с собой и которые генерируют OTP и отображают их на небольшом экране. Другие системы представляют собой программное обеспечение, работающее на мобильном телефоне пользователя. В других системах OTP генерируются на стороне сервера и отправляются пользователю по стороннему каналу, например, через SMS-сообщения. Наконец, в некоторых системах OTP печатаются на бумаге, которую пользователь должен носить с собой. В некоторых схемах математических алгоритмов пользователь может предоставить серверу статический ключ для использования в качестве ключа шифрования, отправив только одноразовый пароль.

Синхронизированное время

Обычно OTP, синхронизированный по времени, связан с аппаратным устройством, называемым токеном безопасности (например, каждому пользователю выдается персональный токен, генерирующий одноразовый пароль). Он может выглядеть как небольшой калькулятор или брелок для ключей с ЖК-дисплеем, на котором отображается меняющийся номер. Внутри токена находится точный механизм синхронизации времени с сервером аутентификации. В таких системах OTP время является важной частью алгоритма генерации пароля, поскольку новые пароли создаются на основе текущего времени, а не только или помимо предыдущего пароля или секретного ключа. Токен может быть проприетарным устройством, мобильным телефоном или другим подобным мобильным устройством, на котором работает проприетарное, бесплатное или программное обеспечение с открытым исходным кодом. Примером стандарта OTP с синхронизацией по времени является TOTP (одноразовый пароль, основанный на времени). Для поддержания синхронизации времени OTP можно использовать некоторые приложения, такие как Google Authenticator или менеджер паролей.

Хашишистые цепи

Каждый новый OTP может быть создан на основе предыдущих OTP. Пример такого типа алгоритма, разработанный Лесли Лэмпортом, использует одностороннюю функцию (обозначим ее ). Эта система одноразовых паролей работает следующим образом: выбирается начальное значение (seed). Хеш-функция применяется многократно (например, 1000 раз) к начальному значению, в результате чего получается значение: Это значение, которое мы будем обозначать , сохраняется в целевой системе. Первый вход пользователя использует пароль, полученный путем 999-кратного применения к начальному значению, то есть . Целевая система может удостовериться, что это правильный пароль, поскольку равно , сохраненному значению. Затем сохраненное значение заменяется на , и пользователю разрешается войти в систему. Следующий вход должен сопровождаться . Снова, это можно подтвердить, поскольку его хеширование дает , что является значением, сохраненным после предыдущего входа. Опять же, новое значение заменяет , и пользователь аутентифицируется. Это можно повторить еще 997 раз, каждый раз пароль будет применяться на один раз меньше, и его правильность проверяется путем подтверждения того, что при хешировании он дает значение, сохраненное во время предыдущего входа. Хеш-функции разработаны таким образом, что их крайне сложно обратить, поэтому злоумышленнику необходимо знать исходное начальное значение , чтобы вычислить возможные пароли, в то время как компьютерная система может подтвердить действительность пароля в любой момент, проверив, что при хешировании он дает значение, ранее использованное для входа. Если требуется неограниченная серия паролей, можно выбрать новое начальное значение после исчерпания набора для . Хотя счетчик на сервере увеличивается только после успешной аутентификации OTP, счетчик на токене увеличивается каждый раз, когда пользователь запрашивает новый пароль. Из-за этого значения счетчиков на сервере и токене могут быть рассинхронизированы. Рекомендуется установить на сервере параметр предпросмотра (look ahead), определяющий размер окна предпросмотра. В случае случайной генерации пароля пользователем сервер все равно аутентифицирует клиента, поскольку он может пересчитать следующие OTP значения сервера и сравнить их с полученным от клиента паролем. Чтобы получить следующий пароль в серии из предыдущих паролей, необходимо найти способ вычисления обратной функции. Поскольку была выбрана как односторонняя, это крайне сложно сделать. Если является криптографической хеш-функцией, что обычно и бывает, то предполагается, что это вычислительно неразрешимая задача. Злоумышленник, случайно увидевший одноразовый пароль, может получить доступ в течение одного периода времени или сеанса входа, но он становится бесполезным после истечения этого периода. Система одноразовых паролей S/KEY и ее производная OTP основаны на схеме Лампорта.

Вызов и ответ

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

SMS

Общей технологией доставки одноразовых паролей (OTP) является отправка текстовых сообщений. Благодаря тому, что текстовые сообщения – это повсеместный канал связи, непосредственно доступный почти на всех мобильных устройствах и, благодаря преобразованию текста в речь, на любой мобильный или стационарный телефон, текстовые сообщения обладают значительным потенциалом для охвата всех пользователей при относительно низкой стоимости внедрения. OTP, отправляемые через текстовые сообщения, могут быть зашифрованы с использованием стандарта A5/x, который, по сообщениям ряда хакерских групп, может быть успешно расшифрован за считанные минуты или секунды. Кроме того, уязвимости протокола маршрутизации SS7 могут и были использованы для перенаправления текстовых сообщений злоумышленникам; в 2017 году несколько клиентов O2 в Германии стали жертвами подобной атаки, в результате которой злоумышленники получили доступ к их мобильным банковским счетам. В июле 2016 года Национальный институт стандартов и технологий (NIST) США опубликовал проект специальной публикации, содержащей рекомендации по практикам аутентификации, в которой не рекомендуется использовать SMS в качестве метода реализации двухфакторной аутентификации внеполосным способом из-за возможности массового перехвата SMS-сообщений.

Токены для оборудования

SecurID от RSA Security является одним из примеров токена, работающего по принципу синхронизации времени, наряду с решениями HID Global. Как и любые другие токены, они могут быть потеряны, повреждены или украдены; кроме того, возникает неудобство, связанное с разрядкой батарей, особенно для токенов без возможности подзарядки или с несъемной батареей. В 2006 году RSA предложила вариант проприетарного токена, который был описан как "универсальная аутентификация", подразумевающую партнерство RSA с производителями для встраивания физических чипов SecurID в такие устройства, как мобильные телефоны. В последнее время появилась возможность использовать электронные компоненты обычных OTP-токенов и встраивать их в корпус кредитной карты. Однако из-за небольшой толщины карт – от 0,79 до 0,84 мм – невозможно использовать стандартные компоненты или батареи. Необходимо применять специальные полимерные аккумуляторы, которые имеют значительно меньший срок службы, чем таблеточные (кнопочные) элементы. Полупроводниковые компоненты должны быть не только очень плоскими, но и минимизировать энергопотребление в режиме ожидания и во время работы. Yubico предлагает небольшой USB-токен со встроенным чипом, который генерирует OTP при нажатии кнопки и эмулирует клавиатуру для удобного ввода длинного пароля. Поскольку это USB-устройство, оно избавляет от необходимости замены батареи. Разработана новая версия этой технологии, которая встраивает клавиатуру в платежную карту стандартного размера и толщины. Карта оснащена встроенной клавиатурой, дисплеем, микропроцессором и чипом бесконтактной связи.

Мягкие токены

На смартфонах одноразовые пароли также могут доставляться напрямую через мобильные приложения, включая специализированные приложения для аутентификации, такие как Authy и Google Authenticator, или внутри существующего приложения сервиса, как, например, в случае со Steam. Эти системы не имеют тех же уязвимостей, что и SMS, и для их работы не всегда требуется подключение к мобильной сети.

Печатные копии

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

Безопасность

При правильной реализации OTP быстро теряют ценность для злоумышленника после первого использования. Это отличает их от паролей, которые могут оставаться полезными для злоумышленников в течение многих лет. Как и пароли, OTP уязвимы к атакам социальной инженерии, когда злоумышленники выманивают OTP у клиентов обманным путем. Также, как и пароли, OTP могут быть уязвимы к атакам типа "человек посередине", поэтому важно передавать их по защищенному каналу, например, с использованием протокола TLS (Transport Layer Security). Тот факт, что пароли и OTP подвержены схожим видам атак, стал ключевым стимулом для разработки Universal 2nd Factor, который предназначен для большей устойчивости к фишингу. OTP, не использующие синхронизацию времени или механизм "вызов-ответ", неизбежно имеют более длительный период уязвимости в случае компрометации до их применения. В конце 2005 года клиенты шведского банка стали жертвами обмана и предоставили свои заранее сгенерированные одноразовые пароли. В 2006 году аналогичная атака была проведена против клиентов американского банка.

Стандартизация

Многие технологии одноразовых паролей запатентованы. Это затрудняет стандартизацию в этой области, поскольку каждая компания стремится продвигать собственные разработки. Тем не менее, стандарты существуют – например, RFC 1760 (S/KEY), RFC 2289 (OTP), RFC 4226 (HOTP) и RFC 6238 (TOTP).

Мобильный телефон

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

Телефон

Существует два способа использования телефона для подтверждения аутентификации пользователя. При первом способе поставщик услуг отображает OTAC на экране компьютера или смартфона, а затем автоматически звонит на предварительно аутентифицированный номер телефона. После этого пользователь вводит OTAC, показанный на экране, с помощью телефонной клавиатуры. При втором способе, который используется для аутентификации и активации Microsoft Windows, пользователь звонит по номеру, предоставленному поставщиком услуг, и вводит OTAC, который сообщает ему телефонная система.

Компьютер

В области компьютерных технологий известно, что использование одноразового кода авторизации (OTAC) через электронную почту является распространенным подходом, а использование одноразового кода авторизации (OTAC) через веб-приложение – профессиональным. Электронная почта – один из наиболее часто используемых способов применения OTAC. Существует два основных метода. При первом методе поставщик услуг отправляет персонализированную одноразовую ссылку (URL) на аутентифицированный адрес электронной почты, например, @ucl.ac.uk; при переходе по этой ссылке сервер аутентифицирует пользователя. При втором методе поставщик услуг отправляет персонализированный OTAC (например, зашифрованный токен) на аутентифицированный адрес электронной почты; при вводе OTAC на веб-сайте сервер аутентифицирует пользователя. Веб-приложение может генерировать уникальный персональный идентификационный номер (PIN), который пользователь вводит в настольное приложение, а настольное приложение, в свою очередь, использует этот код для аутентификации в веб-приложении. Этот способ аутентификации особенно полезен в веб-приложениях, которые не имеют собственного хранилища имен пользователей и паролей, а вместо этого используют SAML для аутентификации. Поскольку SAML работает только в браузере, настольное клиентское приложение не может успешно аутентифицироваться с помощью SAML. Вместо этого клиентское приложение может использовать одноразовый код авторизации (OTAC) для аутентификации в веб-приложении. Помимо этого, можно использовать фреймворк авторизации OAuth, когда стороннему приложению требуется получить ограниченный доступ к HTTP-сервису.

Почтовый

ОТАС можно отправить пользователю по почте или заказным письмом. Когда пользователь запрашивает ОТАС, поставщик услуг отправляет его по почте или заказным письмом, после чего пользователь может использовать его для аутентификации. Например, в Великобритании некоторые банки отправляют свои ОТАС для авторизации интернет-банкинга по почте или заказным письмом.

Расширение

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