Один из самых эффективных методов аутентификации основан на одноразовых паролях (One-Time Passwords, OTP). Применение OTP позволит как повысить уровень практической безопасности, так и соответствовать требованиям регуляторов (государственных, банковских, медицинских). Так как аутентификаторы OTP являются бесконтактными ключами, их можно применять для доступа в мобильные и облачные среды. Сейчас OTP в мире и в России постепенно вытесняет аутентификацию на основе PKI, потому что по сочетанию «стойкость-удобство-цена» OTP вне конкуренции.
На практике почти всегда используется многофакторная аутентификация, где одним из факторов выступает OTP. Так как OTP – это фактор аутентификации типа «нечто имеющееся», с его помощью обеспечивается защит-код (фактор «нечто известное»), а также биометрией (фактор «нечто неотъемлемое») и контекстной информацией (место, время, поведенческие атрибуты), компании могут надежно удостовериться, что пользователи являются теми, за кого себя выдают при доступе к корпоративным ресурсам, будь то SaaS, корпоративные веб-порталы, VPN, пользовательские приложения или VDI.
Уже более 20 лет в корпоративной среде применяются аппаратные токены (аутентификаторы) для одноразовых паролей. Тогда же отраслевым консорциумом OATH (Initiative for Open Authentication) были разработаны современные стандарты аутентификации на базе одноразовых паролей. Поэтому системы аутентификации на базе одноразовых паролей разных разработчиков, как правило, совместимы между собой.
В алгоритме HOTP (HMAC-based One-Time Password) секретный ключ (вектор инициализации) и текущее значение счетчика сгенерированных одноразовых паролей подаются в качестве входных данных в одностороннюю криптографическую хеш-функцию (например, SHA-256). Фрагмент вычисленного значения хеш-функции берется в качестве OTP. После каждой отправки одноразового кода генератор паролей и сервер синхронизируют свои счетчики. Поскольку криптографические хеш-функции являются односторонними, практического способа вывести секретный ключ из значения хеш-функции не существует.
Алгоритм одноразового пароля на основе времени TOTP (Time-based One-Time Password) использует для вычисления OTP значение текущего времени. Вектор инициализации и счетчик времени (количество 30-секундных интервалов между текущим и начальным временем) подаются на вход криптографической хеш-функции, которая вычисляет OTP. Наконец, в алгоритме типа «запрос-ответ» OTP формируется аутентификатором из запроса со стороны сервера аутентификации.
Но системы на базе аппаратных токенов всегда считались довольно сложными и дорогими, поэтому их внедряли, как правило, только крупные организации. С распространением мобильной связи стала использоваться передача одноразовых паролей в SMS. Хотя такой подход позволяет резко удешевить внедрение системы OTP, сейчас он считается небезопасным, так как уязвим для перехвата SMS и перевыпуска SIM-карты. То же самое относится, в общем, и к отправке OTP по электронной почте.
Поэтому оптимальной технологией OTP сейчас считаются пуш-уведомления в мобильных приложениях, так как при должной реализации она намного безопаснее. При входе в систему автоматически сгенерированный код отправляется в пуш-уведомлении в мобильное приложение на устройстве пользователя. Тот должен разблокировать приложение (обычно с помощью PIN-кода или биометрии) и утвердить запрос (или ввести полученный OTP вручную).