Одноразовый пароль на основе времени ( TOTP ) — это компьютерный алгоритм , который генерирует одноразовый пароль (OTP), используя текущее время в качестве источника уникальности. Как расширение алгоритма одноразового пароля на основе HMAC (HOTP), он был принят в качестве стандарта Internet Engineering Task Force (IETF) RFC 6238. [1]
TOTP является краеугольным камнем Инициативы по открытой аутентификации (OATH) и используется в ряде систем двухфакторной аутентификации [1] (2FA).
Благодаря сотрудничеству нескольких членов OATH был разработан проект TOTP с целью создания поддерживаемого отраслью стандарта. Он дополняет одноразовый стандарт HOTP на основе событий и предлагает организациям и предприятиям конечных пользователей больше возможностей выбора технологий, которые наилучшим образом соответствуют их требованиям к приложениям и рекомендациям по безопасности . В 2008 году OATH представила проект спецификации в IETF. Эта версия включает в себя все отзывы и комментарии, которые авторы получили от технического сообщества на основе предыдущих версий, представленных в IETF. [2] В мае 2011 года TOTP официально стал RFC 6238. [1]
Для установления аутентификации TOTP аутентифицируемый и аутентифицирующий должны предварительно установить как параметры HOTP , так и следующие параметры TOTP:
И аутентификатор, и аутентифицируемый вычисляют значение TOTP, затем аутентификатор проверяет, соответствует ли значение TOTP, предоставленное аутентифицируемым, локально сгенерированному значению TOTP. Некоторые аутентификаторы допускают значения, которые должны были быть сгенерированы до или после текущего времени, чтобы учесть небольшие перекосы часов , сетевую задержку и задержки пользователя.
TOTP использует алгоритм HOTP, заменяя счетчик неубывающим значением на основе текущего времени:
Значение TOTP( K ) = значение HOTP ( K , C T ),
вычисление значения счетчика , где
В отличие от паролей , коды TOTP действительны только в течение ограниченного времени. Однако пользователи должны вводить коды TOTP на странице аутентификации, что создает потенциал для фишинговых атак . Из-за короткого окна, в течение которого коды TOTP действительны, злоумышленники должны проксировать учетные данные в режиме реального времени. [3]
Учетные данные TOTP также основаны на общем секрете, известном как клиенту, так и серверу, что создает несколько мест, из которых секрет может быть украден. [4] Злоумышленник, имеющий доступ к этому общему секрету, может генерировать новые, действительные коды TOTP по своему усмотрению. Это может стать особой проблемой, если злоумышленник взломает большую базу данных аутентификации. [5]