Time-based One-time Password Algorithm: различия между версиями
[непроверенная версия] | [непроверенная версия] |
Makkad (обсуждение | вклад) |
|||
Строка 104: | Строка 104: | ||
| год = 2010 |
| год = 2010 |
||
| страниц = 116 |
| страниц = 116 |
||
| isbn = |
| isbn =978-6-1329-8615-3 |
||
}} |
}} |
||
Версия от 12:52, 11 декабря 2012
TOTP (Time-based One Time Password Algorithm, RFC 6238 .) — OATH-алгоритм создания одноразовых паролей для защищенной аутентификации, являющийся улучшением HOTP (HMAC-Based One-Time Password Algorithm). Является алгоритмом односторонней аутентификации — сервер удостоверяется в подлинности клиента. Главное отличие TOTP от HOTP это генерация пароля на основе времени, то есть время является параметром.[1] При этом обычно используется не точное указание времени, а текущий интервал с установленными заранее границами (например, 30 секунд).
История
С 2004 года OATH (The Initiative for open authentication) трудилась над проектом одноразовых паролей (OTP). Первым результатом был HOTP (the Hash-based Message Authentication Code (HMAC) OTP algorithm), опубликованный в декабре 2005 года. Он был представлен как проект IETF (The Internet Engineering Task Force).[1][2]
Дальнейшая работа OATH шла на улучшение HOTP и в 2008 году был представлен TOTP.[3] Этот алгоритм не использует счетчик для синхронизации клиента и сервера, а генерирует пароль в зависимости от времени, который действителен в течение некоторого интервала. Алгоритм действует так: клиент берет текущее значение таймера и секретный ключ, хеширует их с помощью какой-либо хеш-функции и отправляет серверу, в свою очередь сервер проводит те же вычисления после чего ему остается только сравнить эти значения.[4] Он может быть реализован не только на хеш-функции SHA-1, в отличии от HOTP, поэтому хеш-функция также является входным параметром.[1]
Позднее был представлен новый алгоритм, расширяющий TOTP ещё больше. Он был представлен в сентябре 2010 года и назван OATH Challenge-Response Algorithms (OCRA). Главное отличие от предыдущих алгоритмов заключается в том, что в проверке подлинности участвует и сервер. Так что клиент может быть также уверен в его подлинности.[1]
Принцип работы
По сути TOTP является HOTP с параметром времени вместо счетчика. Обозначим:
- - дискретное значение времени, используемое в качестве параметра
- - интервал времени, в течение которого действителен пароль
- - начальное время (для синхронизации сервера и клиента)
Тогда
где
- Trancate - функция выбора определенным способом 4 байт (зависит от реализации - каждая реализация может использовать свою функцию для повышения безопасности).
- HMAC-SHA-1(K,T) -генерация 20-ти байт на основе секретного ключа и времени с помощью хеш-функции SHA-1.
Также стоит отметить что в отличие от HOTP, который основан только на SHA-1, TOTP может быть также основан на HMAC-SHA-256 и HMAC-SHA-512 и других хеш-функциях:
и т.д.
Реализации
- Компания Google реализовала версию TOTP в Google Authenticator;
- Amazon Web Services также поддерживает TOTP для входа AWS консоль [5];
- Dropbox использовала TOTP для доступа к серверу[6] ;
- LastPass поддерживает TOTP использованием Google Authenticator;
- библиотека liboath для создания как TOTP, так и HOTP паролей.[7]
Надежность алгоритма
Концепция одноразовых паролей делает системы, использующие эти алгоритмы, высоконадежными.[4] TOTP достаточно устойчив к криптографическим атакам, однако вероятности взлома есть, например такой вариант атаки:
Поскольку пароль действителен в течение некоторого отрезка времени, теоретически злоумышленник может этим воспользоваться, "прослушивая" трафик клиента и перехватывать посланный логин и одноразовый пароль (или хеш от него). Затем ему достаточно блокировать компьютер "жертвы" и отправить аутентификационные данные от собственного имени. Если он успеет это сделать за промежуток времени , то ему удастся получит доступ. Именно поэтому стоит делать небольшим, однако и совсем маленьким не стоит, так как в случаи небольшой рассинхронизации клиент не сможет получить доступ.[4]
Атака повторного доступа практически невозможна потому, что по истечению промежутка времени при любых других одинаковых параметрах пароль будет уже другим и доступ не сможет быть получен.
Также существует уязвимость связанная с синхронизацией таймеров сервера и клиента, так как существует риск рассинхронизации информации о времени на сервере и в программном и/или аппаратном обеспечении пользователя. Поскольку TOTP использует в качестве параметра время, то при не совпадении значений все попытки пользователя на аутентификацию завершатся неудачей. В этом случаи ложный допуск чужого также будет невозможен. Стоит отметить что вероятность такой ситуации крайне мала.[4]
HOTP, TOTP, OCRA просты в реализации, но существует менее десятка продуктов с открытым кодом, которые реализуют какой-либо из них - что ставит их на один уровень с S/KEY и другими более старыми стандартами OTP.[1]
См. также
Примечания
- ↑ 1 2 3 4 5 OATH: yesterday, today, and tomorrow .
- ↑ OTP and Challenge/Response Algorithms for Financial and e-Government Identity Assurance:Current Landscape and Trends .
- ↑ OATH Submits TOTP: Time-Based One Time Password Specification to IETF .
- ↑ 1 2 3 4 КОНЦЕПЦИЯ ОДНОРАЗОВЫХ ПАРОЛЕЙ В ПОСТРОЕНИИ СИСТЕМЫ АУТЕНТИФИКАЦИИ .
- ↑ AWS Multi-Factor Authentication .
- ↑ Another layer of security for your Dropbox account .
- ↑ Introducing Support for Google Authenticator .
Источники
- Nathan Willis. OATH: yesterday, today, and tomorrow (англ.) // LWN.net : электронный журнал. — 2010-12-15.
- Joann Killeen, Madison Alexander. OATH Submits TOTP: Time-Based One Time Password Specification to IETF (англ.).
- Давлетханов Марат. Концепция одноразовых паролей в построении системы аутентификации // Byte/Россия : журнал. — 2006-07, 2006-08. — № 7-8 (95).
- Binod Vaidya, Jong Hyuk Park, and Joel J.P.C. Rodrigues. HOTP-Based User Authentication Scheme in Home Networks (англ.) // Lecture Notes in Computer Science[англ.]. — 2009. — No. 5576. — P. 672-681.
Литература
- Lambert M. Surhone, Mariam T. Tennoe, Susan F. Henssonow. Time-based One-Time Password Algorithm. — 2010. — 116 с. — ISBN 978-6-1329-8615-3.