Введение
Пароль, который может быть использован только один раз. Одноразовый пароль (OTP), также известный как одноразовый PIN-код, одноразовый код авторизации (OTAC) или динамический пароль, – это пароль, действительный только для одной сессии входа в систему или транзакции на компьютерной системе или другом цифровом устройстве. OTP устраняют ряд недостатков, связанных с традиционной (статической) аутентификацией на основе пароля; некоторые реализации также включают двухфакторную аутентификацию, требуя для одноразового пароля доступа к чему-то, что есть у пользователя (например, небольшому брелоку с встроенным генератором OTP, смарт-карте или конкретному мобильному телефону), а также к чему-то, что пользователь знает (например, PIN-коду). Алгоритмы генерации OTP обычно используют псевдослучайность или случайность для создания общего ключа или начального значения и криптографические хеш-функции, которые можно использовать для получения значения, но которые трудно обратить, что затрудняет злоумышленнику получение данных, использованных для хеширования. Это необходимо, поскольку в противном случае было бы легко предсказать будущие OTP, наблюдая за предыдущими. OTP рассматривались как возможная замена или дополнение к традиционным паролям. Однако OTP могут быть перехвачены или перенаправлены, а аппаратные токены могут быть потеряны, повреждены или украдены. Многие системы, использующие OTP, не реализуют их безопасно, и злоумышленники все еще могут получить пароль с помощью фишинговых атак, выдавая себя за авторизованного пользователя. Еще одно важное преимущество заключается в том, что пользователь, использующий один и тот же (или похожий) пароль для нескольких систем, не становится уязвимым для всех этих систем, если пароль для одной из них будет скомпрометирован. Некоторые системы OTP также стремятся обеспечить невозможность перехвата или подмены сеанса без знания непредсказуемых данных, созданных в предыдущем сеансе, тем самым дополнительно уменьшая поверхность атаки. Существуют различные способы информирования пользователя о следующем OTP для использования. Некоторые системы используют специальные электронные токены безопасности, которые пользователь носит с собой и которые генерируют OTP и отображают их на небольшом экране. Другие системы представляют собой программное обеспечение, работающее на мобильном телефоне пользователя. В других системах OTP генерируются на стороне сервера и отправляются пользователю по стороннему каналу, например, через SMS-сообщения. Наконец, в некоторых системах OTP печатаются на бумаге, которую пользователь должен носить с собой. В некоторых схемах математических алгоритмов пользователь может предоставить серверу статический ключ для использования в качестве ключа шифрования, отправив только одноразовый пароль.
A one time password (OTP), also known as a one time PIN, one time authorization code (OTAC) or dynamic password, is a password that is valid for only one login session or transaction, on a computer system or other digital device. OTPs avoid several shortcomings that are associated with traditional (static) password based authentication; a number of implementations also incorporate two factor authentication by ensuring that the one time password requires access to something a person has (such as a small keyring fob device with the OTP calculator built into it, or a smartcard or specific cellphone) as well as something a person knows (such as a PIN). OTP generation algorithms typically make use of pseudorandomness or randomness to generate a shared key or seed, and cryptographic hash functions, which can be used to derive a value but are hard to reverse and therefore difficult for an attacker to obtain the data that was used for the hash. This is necessary because otherwise, it would be easy to predict future OTPs by observing previous ones. OTPs have been discussed as a possible replacement for, as well as an enhancer to, traditional passwords. On the downside, OTPs can be intercepted or rerouted, and hard tokens can get lost, damaged, or stolen. Many systems that use OTPs do not securely implement them, and attackers can still learn the password through phishing attacks to impersonate the authorized user. A second major advantage is that a user who uses the same (or similar) password for multiple systems, is not made vulnerable on all of them, if the password for one of these is gained by an attacker. A number of OTP systems also aim to ensure that a session cannot easily be intercepted or impersonated without knowledge of unpredictable data created during the previous session, thus reducing the attack surface further. There are also different ways to make the user aware of the next OTP to use. Some systems use special electronic security tokens that the user carries and that generate OTPs and show them using a small display. Other systems consist of software that runs on the user's mobile phone. Yet other systems generate OTPs on the server side and send them to the user using an out of band channel such as SMS messaging. Finally, in some systems, OTPs are printed on paper that the user is required to carry. In some mathematical algorithm schemes, it is possible for the user to provide the server with a static key for use as an encryption key, by only sending a one time password.
Синхронизированное время
Обычно OTP, синхронизированный по времени, связан с аппаратным устройством, называемым токеном безопасности (например, каждому пользователю выдается персональный токен, генерирующий одноразовый пароль). Он может выглядеть как небольшой калькулятор или брелок для ключей с ЖК-дисплеем, на котором отображается меняющийся номер. Внутри токена находится точный механизм синхронизации времени с сервером аутентификации. В таких системах OTP время является важной частью алгоритма генерации пароля, поскольку новые пароли создаются на основе текущего времени, а не только или помимо предыдущего пароля или секретного ключа. Токен может быть проприетарным устройством, мобильным телефоном или другим подобным мобильным устройством, на котором работает проприетарное, бесплатное или программное обеспечение с открытым исходным кодом. Примером стандарта OTP с синхронизацией по времени является TOTP (одноразовый пароль, основанный на времени). Для поддержания синхронизации времени OTP можно использовать некоторые приложения, такие как Google Authenticator или менеджер паролей.
Хашишистые цепи
Каждый новый OTP может быть создан на основе предыдущих OTP. Пример такого типа алгоритма, разработанный Лесли Лэмпортом, использует одностороннюю функцию (обозначим ее ). Эта система одноразовых паролей работает следующим образом: выбирается начальное значение (seed). Хеш-функция применяется многократно (например, 1000 раз) к начальному значению, в результате чего получается значение: Это значение, которое мы будем обозначать , сохраняется в целевой системе. Первый вход пользователя использует пароль, полученный путем 999-кратного применения к начальному значению, то есть . Целевая система может удостовериться, что это правильный пароль, поскольку равно , сохраненному значению. Затем сохраненное значение заменяется на , и пользователю разрешается войти в систему. Следующий вход должен сопровождаться . Снова, это можно подтвердить, поскольку его хеширование дает , что является значением, сохраненным после предыдущего входа. Опять же, новое значение заменяет , и пользователь аутентифицируется. Это можно повторить еще 997 раз, каждый раз пароль будет применяться на один раз меньше, и его правильность проверяется путем подтверждения того, что при хешировании он дает значение, сохраненное во время предыдущего входа. Хеш-функции разработаны таким образом, что их крайне сложно обратить, поэтому злоумышленнику необходимо знать исходное начальное значение , чтобы вычислить возможные пароли, в то время как компьютерная система может подтвердить действительность пароля в любой момент, проверив, что при хешировании он дает значение, ранее использованное для входа. Если требуется неограниченная серия паролей, можно выбрать новое начальное значение после исчерпания набора для . Хотя счетчик на сервере увеличивается только после успешной аутентификации OTP, счетчик на токене увеличивается каждый раз, когда пользователь запрашивает новый пароль. Из-за этого значения счетчиков на сервере и токене могут быть рассинхронизированы. Рекомендуется установить на сервере параметр предпросмотра (look ahead), определяющий размер окна предпросмотра. В случае случайной генерации пароля пользователем сервер все равно аутентифицирует клиента, поскольку он может пересчитать следующие OTP значения сервера и сравнить их с полученным от клиента паролем. Чтобы получить следующий пароль в серии из предыдущих паролей, необходимо найти способ вычисления обратной функции. Поскольку была выбрана как односторонняя, это крайне сложно сделать. Если является криптографической хеш-функцией, что обычно и бывает, то предполагается, что это вычислительно неразрешимая задача. Злоумышленник, случайно увидевший одноразовый пароль, может получить доступ в течение одного периода времени или сеанса входа, но он становится бесполезным после истечения этого периода. Система одноразовых паролей S/KEY и ее производная OTP основаны на схеме Лампорта.
A seed (starting value) is chosen. A hash function is applied repeatedly (for example, 1000 times) to the seed, giving a value of: This value, which we will call is stored on the target system. The user's first login uses a password derived by applying 999 times to the seed, that is, The target system can authenticate that this is the correct password, because is , which is the value stored. The value stored is then replaced by and the user is allowed to log in. The next login, must be accompanied by Again, this can be validated because hashing it gives which is , the value stored after the previous login. Again, the new value replaces and the user is authenticated. This can be repeated another 997 times, each time the password will be applied one fewer time, and is validated by checking that when hashed, it gives the value stored during the previous login. Hash functions are designed to be extremely hard to reverse, therefore an attacker would need to know the initial seed to calculate the possible passwords, while the computer system can confirm the password on any given occasion is valid by checking that, when hashed, it gives the value previously used for login. If an indefinite series of passwords is wanted, a new seed value can be chosen after the set for is exhausted. Although the server's counter value is only incremented after a successful OTP authentication, the counter on the token is incremented every time a new password is requested by the user. Because of this, the counter values on the server and on the token might be out of synchronization. It is recommended to set a look ahead parameter on the server, which defines the size of the look ahead window. In case of an accidental password generation by the user, the server will still authenticate the client, because it can recalculate the next OTP server values, and check them against the received password from the client. To get the next password in the series from the previous passwords, one needs to find a way of calculating the inverse function Since was chosen to be one way, this is extremely difficult to do. If is a cryptographic hash function, which is generally the case, it is assumed to be a computationally intractable task. An intruder who happens to see a one time password may have access for one time period or login, but it becomes useless once that period expires. The S/KEY one time password system and its derivative OTP are based on Lamport's scheme.
Вызов и ответ
Использование одноразовых паролей с механизмом «вызов-ответ» требует от пользователя предоставления ответа на полученный вызов. Например, это можно сделать, введя значение, сгенерированное токеном, в сам токен. Для предотвращения повторов обычно используется дополнительный счетчик, поэтому даже если один и тот же вызов получен дважды, это все равно приведет к генерации разных одноразовых паролей. Однако в вычислении обычно не используется предыдущий одноразовый пароль; то есть, как правило, применяется тот или иной алгоритм, а не комбинация обоих алгоритмов.
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-кодов, обеспечивающих децентрализованный контроль доступа с анонимной аутентификацией.