Time-based One-time Password Algorithm

Поделись знанием:
Перейти к: навигация, поиск

TOTP (Time-based One Time Password Algorithm, RFC 6238[1]) — OATH-алгоритм создания одноразовых паролей для защищенной аутентификации, являющийся улучшением HOTP (HMAC-Based One-Time Password Algorithm). Является алгоритмом односторонней аутентификации — сервер удостоверяется в подлинности клиента. Главное отличие TOTP от HOTP это генерация пароля на основе времени, то есть время является параметром[2]. При этом обычно используется не точное указание времени, а текущий интервал с установленными заранее границами (например, 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)[2][3].

Дальнейшая работа OATH шла на улучшение HOTP и в 2008 году был представлен TOTP[4]. Этот алгоритм не использует счетчик для синхронизации клиента и сервера, а генерирует пароль в зависимости от времени, который действителен в течение некоторого интервала. Алгоритм действует так: клиент берет текущее значение таймера и секретный ключ, хеширует их с помощью какой-либо хеш-функции и отправляет серверу, в свою очередь сервер проводит те же вычисления после чего ему остается только сравнить эти значения[5]. Он может быть реализован не только на хеш-функции SHA-1, в отличие от HOTP, поэтому хеш-функция также является входным параметром[2].

Позднее был представлен новый алгоритм, расширяющий TOTP ещё больше. Он был представлен в сентябре 2010 года и назван OATH Challenge-Response Algorithms (OCRA). Главное отличие от предыдущих алгоритмов заключается в том, что в проверке подлинности участвует и сервер. Так что клиент может быть также уверен в его подлинности[2].

Принцип работы

По сути, TOTP является вариантом HOTP алгоритма, в котором в качестве значения счетчика подставляется величина, зависящая от времени[1]. Обозначим:

  • <math>T</math> — дискретное значение времени, используемое в качестве параметра. (Измеряется в единицах <math>X</math>, 4 байта)
  • <math>X</math> — интервал времени, в течение которого действителен пароль. (По умолчанию 30 сек.)
  • <math>T_0</math> — начальное время, необходимое для синхронизации сторон. (По умолчанию — «начало эпохи ЭВМ»)
  • <math>K</math> — разделяемый секрет.
  • <math>Current Time</math> — текущее время.

Тогда[1][6]

<math> T = (Current Time - T_0)/X</math>

<math> HOTP(K,T)=Truncate(HMAC - SHA-1(K,T))</math>

<math> TOTP = HOTP(K, T)</math>

где

обозначим String — результат HMAC-SHA-1(K,T); OffsetBits — младшие 4 бита строки String; Offset = StringToNumber(OffsetBits) и результатом Truncate будет строка из четырёх символов — String[Offset]String[Offset + 3][6]

Также стоит отметить что в отличие от HOTP, который основан только на SHA-1, TOTP может также использовать HMAC-SHA-256, HMAC-SHA-512 и другие HMAC-хеш-функциях:

  • <math> TOTP(K,T)=Truncate(HMAC - SHA-256(K,T))</math>
  • <math> TOTP(K,T)=Truncate(HMAC - SHA-512(K,T))</math>

и т. д.[1]

Надежность алгоритма

Концепция одноразовых паролей вкупе с современными криптографическими методами может использоваться для реализации надежных систем удаленной аутентификации[5]. TOTP достаточно устойчив к криптографическим атакам, однако вероятности взлома есть, например возможен такой вариант атаки «человек посередине»:

Прослушивая трафик клиента, злоумышленник может перехватить посланный логин и одноразовый пароль (или хеш от него). Затем ему достаточно блокировать компьютер «жертвы» и отправить аутентификационные данные от собственного имени. Если он успеет это сделать за промежуток времени <math>X</math>, то ему удастся получить доступ. Именно поэтому <math>X</math> стоит делать небольшим. Но если время действия пароля сделать слишком маленьким, то в случае небольшой рассинхронизации клиент не сможет получить доступ[5].

Также существует уязвимость связанная с синхронизацией таймеров сервера и клиента, так как существует риск рассинхронизации информации о времени на сервере и в программном и/или аппаратном обеспечении пользователя. Поскольку TOTP использует в качестве параметра время, то при не совпадении значений все попытки пользователя на аутентификацию завершатся неудачей. В этом случае ложный допуск чужого также будет невозможен. Стоит отметить что вероятность такой ситуации крайне мала[5].

См. также

Напишите отзыв о статье "Time-based One-time Password Algorithm"

Примечания

Источники

  • Nathan Willis [lwn.net/Articles/419968/ OATH: yesterday, today, and tomorrow] (англ.) // LWN.net : электронный журнал. — 2010.
  • Joann Killeen, Madison Alexander. [www.openauthentication.org/news/20080408 OATH Submits TOTP: Time-Based One Time Password Specification to IETF] (англ.). [www.webcitation.org/6DtdCt3JN Архивировано из первоисточника 24 января 2013].
  • Ошибка Lua : attempt to index local 'entity' (a nil value).
  • Ошибка Lua : attempt to index local 'entity' (a nil value).
  • Ошибка Lua : attempt to index local 'entity' (a nil value).
  • Ошибка Lua : attempt to index local 'entity' (a nil value).

Ссылки

  • [www.pearltrees.com/#/N-fa=23836&N-s=1_601414&N-u=1_2161&N-p=10272868&N-play=0&N-f=1_601414 OTP Oath HOTP TOTP PSKS DSKPP]. [www.webcitation.org/6DthnqzdX Архивировано из первоисточника 24 января 2013].


Отрывок, характеризующий Time-based One-time Password Algorithm

– Да что, скоро ли там? Кавалерия, говорят, дорогу загородила, – говорил офицер.
– Эх, немцы проклятые, своей земли не знают, – говорил другой.
– Вы какой дивизии? – кричал, подъезжая, адъютант.
– Осьмнадцатой.
– Так зачем же вы здесь? вам давно бы впереди должно быть, теперь до вечера не пройдете.
– Вот распоряжения то дурацкие; сами не знают, что делают, – говорил офицер и отъезжал.
Потом проезжал генерал и сердито не по русски кричал что то.
– Тафа лафа, а что бормочет, ничего не разберешь, – говорил солдат, передразнивая отъехавшего генерала. – Расстрелял бы я их, подлецов!
– В девятом часу велено на месте быть, а мы и половины не прошли. Вот так распоряжения! – повторялось с разных сторон.
И чувство энергии, с которым выступали в дело войска, начало обращаться в досаду и злобу на бестолковые распоряжения и на немцев.
Причина путаницы заключалась в том, что во время движения австрийской кавалерии, шедшей на левом фланге, высшее начальство нашло, что наш центр слишком отдален от правого фланга, и всей кавалерии велено было перейти на правую сторону. Несколько тысяч кавалерии продвигалось перед пехотой, и пехота должна была ждать.
Впереди произошло столкновение между австрийским колонновожатым и русским генералом. Русский генерал кричал, требуя, чтобы остановлена была конница; австриец доказывал, что виноват был не он, а высшее начальство. Войска между тем стояли, скучая и падая духом. После часовой задержки войска двинулись, наконец, дальше и стали спускаться под гору. Туман, расходившийся на горе, только гуще расстилался в низах, куда спустились войска. Впереди, в тумане, раздался один, другой выстрел, сначала нескладно в разных промежутках: тратта… тат, и потом всё складнее и чаще, и завязалось дело над речкою Гольдбахом.
Не рассчитывая встретить внизу над речкою неприятеля и нечаянно в тумане наткнувшись на него, не слыша слова одушевления от высших начальников, с распространившимся по войскам сознанием, что было опоздано, и, главное, в густом тумане не видя ничего впереди и кругом себя, русские лениво и медленно перестреливались с неприятелем, подвигались вперед и опять останавливались, не получая во время приказаний от начальников и адъютантов, которые блудили по туману в незнакомой местности, не находя своих частей войск. Так началось дело для первой, второй и третьей колонны, которые спустились вниз. Четвертая колонна, при которой находился сам Кутузов, стояла на Праценских высотах.
В низах, где началось дело, был всё еще густой туман, наверху прояснело, но всё не видно было ничего из того, что происходило впереди. Были ли все силы неприятеля, как мы предполагали, за десять верст от нас или он был тут, в этой черте тумана, – никто не знал до девятого часа.
Было 9 часов утра. Туман сплошным морем расстилался по низу, но при деревне Шлапанице, на высоте, на которой стоял Наполеон, окруженный своими маршалами, было совершенно светло. Над ним было ясное, голубое небо, и огромный шар солнца, как огромный пустотелый багровый поплавок, колыхался на поверхности молочного моря тумана. Не только все французские войска, но сам Наполеон со штабом находился не по ту сторону ручьев и низов деревень Сокольниц и Шлапаниц, за которыми мы намеревались занять позицию и начать дело, но по сю сторону, так близко от наших войск, что Наполеон простым глазом мог в нашем войске отличать конного от пешего. Наполеон стоял несколько впереди своих маршалов на маленькой серой арабской лошади, в синей шинели, в той самой, в которой он делал итальянскую кампанию. Он молча вглядывался в холмы, которые как бы выступали из моря тумана, и по которым вдалеке двигались русские войска, и прислушивался к звукам стрельбы в лощине. В то время еще худое лицо его не шевелилось ни одним мускулом; блестящие глаза были неподвижно устремлены на одно место. Его предположения оказывались верными. Русские войска частью уже спустились в лощину к прудам и озерам, частью очищали те Праценские высоты, которые он намерен был атаковать и считал ключом позиции. Он видел среди тумана, как в углублении, составляемом двумя горами около деревни Прац, всё по одному направлению к лощинам двигались, блестя штыками, русские колонны и одна за другой скрывались в море тумана. По сведениям, полученным им с вечера, по звукам колес и шагов, слышанным ночью на аванпостах, по беспорядочности движения русских колонн, по всем предположениям он ясно видел, что союзники считали его далеко впереди себя, что колонны, двигавшиеся близ Працена, составляли центр русской армии, и что центр уже достаточно ослаблен для того, чтобы успешно атаковать его. Но он всё еще не начинал дела.
Нынче был для него торжественный день – годовщина его коронования. Перед утром он задремал на несколько часов и здоровый, веселый, свежий, в том счастливом расположении духа, в котором всё кажется возможным и всё удается, сел на лошадь и выехал в поле. Он стоял неподвижно, глядя на виднеющиеся из за тумана высоты, и на холодном лице его был тот особый оттенок самоуверенного, заслуженного счастья, который бывает на лице влюбленного и счастливого мальчика. Маршалы стояли позади его и не смели развлекать его внимание. Он смотрел то на Праценские высоты, то на выплывавшее из тумана солнце.
Когда солнце совершенно вышло из тумана и ослепляющим блеском брызнуло по полям и туману (как будто он только ждал этого для начала дела), он снял перчатку с красивой, белой руки, сделал ею знак маршалам и отдал приказание начинать дело. Маршалы, сопутствуемые адъютантами, поскакали в разные стороны, и через несколько минут быстро двинулись главные силы французской армии к тем Праценским высотам, которые всё более и более очищались русскими войсками, спускавшимися налево в лощину.