HOTP (англ. HMAC-Based One-Time Password Algorithm) — алгоритм захищеної автентифікації з використанням одноразового пароля (One Time Password, OTP). Заснований на HMAC (SHA-1). Є алгоритмом односторонньої автентифікації, а саме: сервер виконує автентифікацію клієнта.
В якості параметра, що відповідає за динаміку генерації паролів, використовується подія, тобто сам факт генерації: кожного разу при створенні нового пароля лічильник подій збільшує своє значення на одиницю, і саме це монотонне зростаюче значення використовується як основний параметр алгоритму. Другим параметром для розрахунку одноразових паролів є симетричний ключ, який повинен бути унікальним для кожного генератора (клієнта) і закритим від усіх, крім сервера і самого генератора (клієнта).
Історія
Алгоритм уперше формально описано командою IETF в грудні 2011. Він став першим реально успішним проектом Initiative for Open Authentication (OATH). Алгоритми генерації одноразових паролів отримали в цей час широку популярність у зв'язку з різким розвитком мобільної індустрії. Був необхідний надійний алгоритм, простий в плані реалізації.
У 2008 році HOTP подарував життя більш сильному алгоритмом Time-based One-time Password Algorithm (TOTP), який багато в чому успадковує риси свого попередника. У вересні 2010 на основі TOTP був розроблений потужний алгоритм автентифікації OATH Challenge-Response Algorithm (OCRA).
Алгоритм HOTP також вніс інновації в технологію генерації одноразових паролів. Стійка по тим часам хеш-функція SHA-1 поєднувалася з нетривіальним рішенням наявності лічильника подій. Ці риси підняли HOTP на один рівень з такими перевіреними часом алгоритмами, як .
Лічильники в HOTP і TOTP
Основною відмінністю між двома алгоритмами є генерація пароля на основі мітки часу, яку використовує в якості параметра алгоритм TOTP. При цьому використовується не точне значення часу, а поточний інтервал, межі якого були встановлені заздалегідь (наприклад, 30 секунд)
HOTP генерує ключ на основі розподіленого секрету і не залежного від часу лічильника. Модель цього алгоритму заснована на події — наприклад, кожен раз, коли генерується черговий одноразовий пароль, лічильник буде збільшуватися. Отже, згенеровані згодом паролі повинні бути різними кожен раз.
Завдяки цьому основа для лічильника в HOTP алгоритмі, на відміну від інших алгоритмів, що використовують таймер, захищена від розсинхронізації передавальних пристроїв або занадто великої відстані між ними (такої відстані, що відповідь від отримувача приходить пізніше, ніж закінчиться час валідності пароля). Це дозволяє HOTP-паролям залишатися дійсними протягом необмеженого кількості часу, в той час як TOTP-паролі перестануть бути дійсними через конкретний проміжок часу.
У підсумку, за умови використання тієї ж самої хеш-функції, як і в HOTP, дана відмінність у роботі алгоритму робить TOTP більш безпечним і кращим рішенням для одноразових паролів
Щоб перевірити та зрозуміти як працює алгоритм HOTP на практиці, можна скористатися онлайн генератором одноразових паролів HOTP.
Опис алгоритму
Позначення
- — Секретний ключ, унікальний для кожного клієнта і відомий тільки йому і серверу. Довжина — 160 біт (рекомендована) або 128 біт (мінімальна)
- — Поточний стан 8-байтового лічильника події
- — Кількість цифр в генерованому паролі
- — Кількість невдалих спроб авторизації, після яких сервер заблокує з'єднання з клієнтом
- — Параметр розсинхронізації. Визначає максимальну розбіжність між лічильником сервера і клієнта, при якому одноразовий пароль буде прийнятий.
Загальний опис
Алгоритм повинен повертати не менше 6 цифр для забезпечення достатньої безпеки пароля. Залежно від рівня вимог до захисту, можна використовувати значення для HOTP, що складаються з більшої кількості цифр, для отримання більш стійкого до атак пароля. Роботу алгоритму можна описати наступною формулою: Процес роботи алгоритму можна розбити на наступні етапи:
- Створюється строка 20 байт, застосовуючи хеш-функцію , ініціалізована параметрам і :
- Вибираються певним чином 4 байта з :
- Чотири останніх біта останнього байта результату перетворюються в число
- Послідовність байтів перетворюється в змінну
- 31 біта Причина, через яку ігнорується старший біт ,полягає в різних варіантах реалізації цілочисельних обчислень у різних процесорів
- Результат роботи перетворюється до послідовності з цифр:
Приклад обчислення 6-значного значення HOTP
Даний приклад демонструє роботу алгоритму, генеруючого шестизначний цифровий пароль з коду аутентифікації розміром в 160 біт. Нехай на певному кроці було обчислено значення рядка з
int offset = hmac_result[19] & 0xf; int bin_code = (hmac_result[offset] & 0x7f) << 24 | (hmac_result[offset+1] & 0xff) << 16 | (hmac_result[offset+2] & 0xff) << 8 | (hmac_result[offset+3] & 0xff);
Тоді результат буде виглядати наступним чином:
Індекс байта | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
Значення | 1f | 86 | 98 | 69 | 0e | 02 | ca | 16 | 61 | 85 | 50 | ef | 7f | 19 | da | 8e | 94 | 5b | 55 | 5a |
- Останній байт має значення 0x5a
- Значення зсуву, отримане з молодших 4 біт — 0xa, це дає нам число 10
- Значення 4 послідовних байтів, починаючи з 10-ій позиції — 0x50ef7f19, яке перетворюється в двійковий код DBC1 (dynamic binary code)
- MSB, отримане з DBC1, одно 0x50. Тому DBC2= DBC1 = 0x50ef7f19
- Далі, двійкові значення розглядаються як позитивне число, записане в порядку від старшого до меншого, у якого перший байт маскується значенням 0x7f.
- Для того, щоб отримати шестизначне число для HOTP, необхідно взяти число, отримане на попередньому кроці по модулю 106 —
Перевірка одноразового пароля
Перевірка значень лічильників
При створенні нового одноразового пароля генератором (клієнтом) значення лічильника клієнта збільшується на одиницю. Надалі значення лічильника подається на вхід хеш-функції разом з ключем . Після цього буде відправлено сервера аутентифікації, де воно буде порівняно зі значенням, обчисленим сервером. Якщо значення збігаються з урахуванням розбіжності не більше параметра розсинхронізації , то сервер збільшує на одиницю значення свого лічильника. Якщо дані не співпали, то сервер починає ресинхронизацию і повторює її в разі невдачі, поки не буде досягнута межа невдалих спроб автентифікації . Після цього сервер блокує обліковий запис користувача.
Розсинхронізація між клієнтом і сервером
Як було згадано раніше, клієнт оновлює значення лічильника подій при кожній генерації одноразового пароля. У свою чергу, значення лічильника на сервері збільшується тільки після успішної автентифікації. Виходячи з цих тверджень можна описати причини, чому впровадження процесу ресинхронізації необхідно:
- Аутентифікація не пройдена. Клієнт оновив значення лічильника після створення пароля, а значення на сервері не змінилося
- Проблема зв'язку. Клієнт інкрементував значення лічильника після відправки пароля, але пароль не досяг сервера
Це призводить до необхідності використання параметра розсинхронізації , який буде відповідати за розміри вікна, в межах якого значення лічильника клієнта і сервера будуть вважатися синхронізованими.
Ресинхронізація лічильника
Ресинхронізація проводиться виключно сервером. Вона полягає в розрахунку нового значення для свого лічильника подій, щоб його значення співпадало з отриманими від клієнта в межах різниці між значеннями не більше . Якщо ця умова виконується, то сервер оновлює значення власного лічильника.
В іншому випадку сервер розраховує заново стан лічильника. В ході цього процесу сервер може запросити кілька разів додаткові значення одноразових паролів. Це зроблено для підвищення рівня безпеки, так як порівняння паролів у цьому випадку виконуються для двох або трьох пар. Якщо кількість спроб буде вичерпано, то сервер блокує обліковий запис користувача. Параметр також визначає вікно, в межах якого сервер збільшує лічильник в процесі ресинхронізації. Це обмеження параметром служить для:
- Обмеження шансу підбору вірного значення пароля
- Запобігти зацикленню розрахунку значення в рамках однієї перевірки
Безпека
Надійність алгоритму
Системи захисту, побудовані з використанням HOTP, володіють високим ступенем надійності. Вони, в більшості своїй, стійкі до широко поширеним криптографічних атак, наприклад:
- Атака виду «людина посередині» (Man-in-the-middle). Зловмисник не може підробити пересланого запрошення повідомлення, так як пароль змінюється досить часто. Безліч методів криптографічного аналізу стають при цьому малопридатними. У деяких реалізаціях лічильник, який використовується для створення пароля, змінює значення після кожної пересилання. Якщо повідомлення зашифровані з використанням досить сильного шифру, то HOTP робить підбір пароля майже неможливим.
- Атака повторного відтворення. Тут успіх залежить від конфігурації самої системи. У випадку, наприклад, коли використовується сервер аутентифікації для надання прав на вхід користувача, у атакуючого виникає ряд проблем. Сервер після кожного прийому повідомлення збільшує значення лічильника на одиницю. Тому елементарна відправка дубліката повідомлення не пройде перевірку — повідомлення створювалося за допомогою одного значення, а перевірка проводиться іншим.
- Якщо ключ складається з довільних цифр, то ймовірність успіху атаки методом прямого перебору при наявності спроб аутентифікації до моменту блокування розраховується за формулою . Наприклад, при 5 дозволених спробах введення шестизначного пароля і розмірі допустимого вікна шанс успіху при атаці становить 0,015 %.
Часто зловмиснику вдається вкрасти з сервера аутентифікації хешований пароль, по якому відбувається перевірка достовірності. Однак алгоритм для створення пароля використовує також лічильник подій. Оскільки початкове значення лічильника вибирається сервером, воно зазвичай випадкове, що ускладнює злом каналу зв'язку навіть при наявності у атакуючого розподіленого секрету.
Способи посилення захисту
Дані зміни не є обов'язковими або рекомендованими авторами алгоритму розширеннями. Однак для підвищення рівня безпеки власної реалізації можна застосувати такі варіанти:
- Збільшення довжини значення HOTP.
Витяг кожного нового символу з результату різко зменшує шанси успішної атаки. Завдяки цьому можна зробити процес роботи з паролями зручніше. Наприклад, збільшити кількість спроб введення або розширити діапазон, в якому порівнюються значення лічильників сервера і клієнта.
- Алфавітно-цифрові значення.
Сенс цієї ідеї полягає в тому, щоб використовувати не тільки цифри для пароля, але ще і символи A-Z. Вірніше, мова йде про набір з 32 символів з алфавітно-цифрового множини. Відразу ж стає видно, як виріс рівень безпеки паролів, тому що тепер ймовірність успіху повного перебору складає для паролів, які складаються з 6 символів.
- Ресинхронізація на базі лічильника.
Якщо умови дозволяють клієнту відправляти не тільки значення HOTP, але і інші дані, то можна зробити процес ресинхронізації набагато зручніше і безпечніше, якщо разом зі значенням HOTP клієнт буде відправляти серверу стан лічильника подій. В цьому випадку значення клієнтського HOTP буде виступати в ролі імітовставки для стану лічильника.
Перевіряючи таким чином значення лічильника на достовірність і відповідність, можна відмовитися від використання параметра розсинхронізації, що дозволить також підвищити рівень захисту алгоритму, тому що в оновленій системі ймовірність успіху атаки прямим перебором буде становити всього .
Застосування
Об'єднання OATH, стандартизовало HOTP, без жодних вказівок з приводу реалізації алгоритму. Навпаки, свобода розробників дозволяє знаходити все нові рішення, прагнучи задовольнити потреби замовника та внести інноваційний внесок у технологію OTP.
Поширену реалізацію HOTP на Java можна знайти в пакеті org.jboss.security.otp, який входить у стандартні бібліотеки вільно розповсюджуваного вебсервера Apache Jboss.
Ще одна реалізація на мові Java представлена безпосередньо об'єднанням OATH в пакеті org.openauthentication.otp.
Можна також згадати реалізацію — проект OATH Toolkit, бібліотека liboath якого дозволяє створювати паролі в режимі HOTP і TOTP.
Велика кількість низькоінтеллектуальних пристроїв спеціально створено для генерації паролів або передачі даних за допомогою HOTP і TOTP (Feitian, SecuTech, SmartDisplayer, Vasco, Yubico, Protectimus). Алгоритм також використовується в домашніх мережах для управління периферією за допомогою пульта дистанційного керування або мобільного телефону.
Вимоги до реалізації алгоритму
- Необхідно підтримувати двофакторну аутентифікацію. У даному випадку мається на увазі, що першим чинником є генератор одноразових паролів, а другим — якийсь додатковий секрет, який додається до одноразового паролю
- Сервер повинен бути захищений від атак методом прямого перебору, тобто обліковий запис користувача повинна блокуватися після певного числа невдалих спроб аутентифікації
- Необхідно використовувати захищений канал
Додатково
HOTP заснований на SHA-1, яка більше не вважається досить стійкою до колізій. Проте, алгоритм HOTP використовує тільки факт випадковості числа, вирахуваного на її основі, тому наявність колізій безпосередньо не впливає на його роботу.
Одностороння аутентифікація передбачає, що клієнт за потреби намагається встановити зв'язок. Після чого сервер відправляє запит назад клієнтові і перевіряє його відповідь на справжність. Модифікація алгоритму OCRA дозволяє також і користувачеві провести аутентифікацію сервера.
Дивись також
Примітки
- Hoornaert, Frank, Naccache, David, Bellare, Mihir, Ranen, Ohad. (англ.). tools.ietf.org. Архів оригіналу за 6 квітня 2019. Процитовано 26 березня 2017.
- «Algorithm agility and OATH» by Burt Kaliski, RSA Laboratories.May 19, 2005.
- «HOTP-Based User Authentication Scheme in Home Networks» by Binod Vaidya, Jong Hyuk Park and Joel J.P.C. Rodrigues. 2009
- «OATH: yesterday, today, and tomorrow» by Nathan Willis, December 15, 2010.
- Nathan Schmidt. . nathschmidt.net. Архів оригіналу за 3 квітня 2016. Процитовано 27 березня 2017.
- . aldaris' blog (брит.). 28 лютого 2014. Архів оригіналу за 11 червня 2018. Процитовано 22 березня 2017.
- M. Bellare, R. Canetti and H. Krawczyk. .
- Krawczyk, H., Bellare, M., and R. Canetti. .
- «Attacks on SHA-1» by Initiative for Open AuTHentication,March 2, 2005.
- «Introducing the OATH Toolkit» by Simon Josefsson, 2011.
- . Архів оригіналу за 20 квітня 2018. Процитовано 4 квітня 2018.
Посилання
- RFC 4226 (англ.)
- (англ.)
- Онлайн-генератор одноразових паролів по алгоритму HOTP (англ.)
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
HOTP angl HMAC Based One Time Password Algorithm algoritm zahishenoyi avtentifikaciyi z vikoristannyam odnorazovogo parolya One Time Password OTP Zasnovanij na HMAC SHA 1 Ye algoritmom odnostoronnoyi avtentifikaciyi a same server vikonuye avtentifikaciyu kliyenta V yakosti parametra sho vidpovidaye za dinamiku generaciyi paroliv vikoristovuyetsya podiya tobto sam fakt generaciyi kozhnogo razu pri stvorenni novogo parolya lichilnik podij zbilshuye svoye znachennya na odinicyu i same ce monotonne zrostayuche znachennya vikoristovuyetsya yak osnovnij parametr algoritmu Drugim parametrom dlya rozrahunku odnorazovih paroliv ye simetrichnij klyuch yakij povinen buti unikalnim dlya kozhnogo generatora kliyenta i zakritim vid usih krim servera i samogo generatora kliyenta IstoriyaAlgoritm upershe formalno opisano komandoyu IETF v grudni 2011 Vin stav pershim realno uspishnim proektom Initiative for Open Authentication OATH Algoritmi generaciyi odnorazovih paroliv otrimali v cej chas shiroku populyarnist u zv yazku z rizkim rozvitkom mobilnoyi industriyi Buv neobhidnij nadijnij algoritm prostij v plani realizaciyi U 2008 roci HOTP podaruvav zhittya bilsh silnomu algoritmom Time based One time Password Algorithm TOTP yakij bagato v chomu uspadkovuye risi svogo poperednika U veresni 2010 na osnovi TOTP buv rozroblenij potuzhnij algoritm avtentifikaciyi OATH Challenge Response Algorithm OCRA Algoritm HOTP takozh vnis innovaciyi v tehnologiyu generaciyi odnorazovih paroliv Stijka po tim chasam hesh funkciya SHA 1 poyednuvalasya z netrivialnim rishennyam nayavnosti lichilnika podij Ci risi pidnyali HOTP na odin riven z takimi perevirenimi chasom algoritmami yak Lichilniki v HOTP i TOTPOsnovnoyu vidminnistyu mizh dvoma algoritmami ye generaciya parolya na osnovi mitki chasu yaku vikoristovuye v yakosti parametra algoritm TOTP Pri comu vikoristovuyetsya ne tochne znachennya chasu a potochnij interval mezhi yakogo buli vstanovleni zazdalegid napriklad 30 sekund HOTP generuye klyuch na osnovi rozpodilenogo sekretu i ne zalezhnogo vid chasu lichilnika Model cogo algoritmu zasnovana na podiyi napriklad kozhen raz koli generuyetsya chergovij odnorazovij parol lichilnik bude zbilshuvatisya Otzhe zgenerovani zgodom paroli povinni buti riznimi kozhen raz Zavdyaki comu osnova dlya lichilnika v HOTP algoritmi na vidminu vid inshih algoritmiv sho vikoristovuyut tajmer zahishena vid rozsinhronizaciyi peredavalnih pristroyiv abo zanadto velikoyi vidstani mizh nimi takoyi vidstani sho vidpovid vid otrimuvacha prihodit piznishe nizh zakinchitsya chas validnosti parolya Ce dozvolyaye HOTP parolyam zalishatisya dijsnimi protyagom neobmezhenogo kilkosti chasu v toj chas yak TOTP paroli perestanut buti dijsnimi cherez konkretnij promizhok chasu U pidsumku za umovi vikoristannya tiyeyi zh samoyi hesh funkciyi yak i v HOTP dana vidminnist u roboti algoritmu robit TOTP bilsh bezpechnim i krashim rishennyam dlya odnorazovih paroliv Shob pereviriti ta zrozumiti yak pracyuye algoritm HOTP na praktici mozhna skoristatisya onlajn generatorom odnorazovih paroliv HOTP Opis algoritmuPoznachennya K displaystyle K Sekretnij klyuch unikalnij dlya kozhnogo kliyenta i vidomij tilki jomu i serveru Dovzhina 160 bit rekomendovana abo 128 bit minimalna C displaystyle C Potochnij stan 8 bajtovogo lichilnika podiyi D displaystyle D Kilkist cifr v generovanomu paroli T displaystyle T Kilkist nevdalih sprob avtorizaciyi pislya yakih server zablokuye z yednannya z kliyentom s displaystyle s Parametr rozsinhronizaciyi Viznachaye maksimalnu rozbizhnist mizh lichilnikom servera i kliyenta pri yakomu odnorazovij parol bude prijnyatij Zagalnij opis Algoritm povinen povertati ne menshe 6 cifr dlya zabezpechennya dostatnoyi bezpeki parolya Zalezhno vid rivnya vimog do zahistu mozhna vikoristovuvati znachennya dlya HOTP sho skladayutsya z bilshoyi kilkosti cifr dlya otrimannya bilsh stijkogo do atak parolya Robotu algoritmu mozhna opisati nastupnoyu formuloyu H O T P K C T r u n c a t e H M A C S H A 1 K C displaystyle HOTP K C Truncate HMAC SHA 1 K C Proces roboti algoritmu mozhna rozbiti na nastupni etapi Stvoryuyetsya stroka H S textstyle HS 20 bajt zastosovuyuchi hesh funkciyu H M A C S H A 1 displaystyle HMAC SHA 1 inicializovana parametram K displaystyle K i C displaystyle C H S H M A C S H A 1 K C displaystyle HS HMAC SHA 1 K C Vibirayutsya pevnim chinom 4 bajta z H S displaystyle HS S b i t s T r u n c a t e H S displaystyle S bits Truncate HS Chotiri ostannih bita ostannogo bajta rezultatu S b i t s 19 displaystyle S bits 19 peretvoryuyutsya v chislo o f f s e t 0 15 displaystyle offset in 0 15 Poslidovnist bajtiv H S o f f s e t H S o f f s e t 3 displaystyle HS offset HS offset 3 peretvoryuyetsya v zminnu P displaystyle P T r u n c a t e H S displaystyle Truncate HS 31 bita P displaystyle P Prichina cherez yaku ignoruyetsya starshij bit P displaystyle P polyagaye v riznih variantah realizaciyi cilochiselnih obchislen u riznih procesoriv Rezultat roboti T r u n c a t e displaystyle Truncate peretvoryuyetsya do poslidovnosti z D displaystyle D cifr H T O P t o N u m b e r T r u n c a t e H S m o d 10 D displaystyle HTOP toNumber Truncate HS mod 10 D Priklad obchislennya 6 znachnogo znachennya HOTP Danij priklad demonstruye robotu algoritmu generuyuchogo shestiznachnij cifrovij parol z kodu autentifikaciyi rozmirom v 160 bit Nehaj na pevnomu kroci bulo obchisleno znachennya ryadka h m a c r e s u l t 0 h m a c r e s u l t 19 displaystyle hmac result 0 hmac result 19 z H M A C S H A 1 displaystyle HMAC SHA 1 int offset hmac result 19 amp 0xf int bin code hmac result offset amp 0x7f lt lt 24 hmac result offset 1 amp 0xff lt lt 16 hmac result offset 2 amp 0xff lt lt 8 hmac result offset 3 amp 0xff Todi rezultat bude viglyadati nastupnim chinom Indeks bajta 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Znachennya 1f 86 98 69 0e 02 ca 16 61 85 50 ef 7f 19 da 8e 94 5b 55 5a Ostannij bajt maye znachennya 0x5a Znachennya zsuvu otrimane z molodshih 4 bit 0xa ce daye nam chislo 10 Znachennya 4 poslidovnih bajtiv pochinayuchi z 10 ij poziciyi 0x50ef7f19 yake peretvoryuyetsya v dvijkovij kod DBC1 dynamic binary code MSB otrimane z DBC1 odno 0x50 Tomu DBC2 DBC1 0x50ef7f19 Dali dvijkovi znachennya rozglyadayutsya yak pozitivne chislo zapisane v poryadku vid starshogo do menshogo u yakogo pershij bajt maskuyetsya znachennyam 0x7f Dlya togo shob otrimati shestiznachne chislo dlya HOTP neobhidno vzyati chislo otrimane na poperednomu kroci po modulyu 106 H O T P D B C 2 mod 10 6 872921 displaystyle HOTP DBC2 pmod 10 6 872921 Perevirka odnorazovogo parolyaPerevirka znachen lichilnikiv Pri stvorenni novogo odnorazovogo parolya generatorom kliyentom znachennya lichilnika kliyenta zbilshuyetsya na odinicyu Nadali znachennya lichilnika C displaystyle C podayetsya na vhid hesh funkciyi H M A C S H A 1 displaystyle HMAC SHA 1 razom z klyuchem K displaystyle K Pislya cogo C displaystyle C bude vidpravleno servera autentifikaciyi de vono bude porivnyano zi znachennyam obchislenim serverom Yaksho znachennya zbigayutsya z urahuvannyam rozbizhnosti ne bilshe parametra rozsinhronizaciyi s displaystyle s to server zbilshuye na odinicyu znachennya svogo lichilnika Yaksho dani ne spivpali to server pochinaye resinhronizaciyu i povtoryuye yiyi v razi nevdachi poki ne bude dosyagnuta mezha nevdalih sprob avtentifikaciyi T displaystyle T Pislya cogo server blokuye oblikovij zapis koristuvacha Rozsinhronizaciya mizh kliyentom i serverom Yak bulo zgadano ranishe kliyent onovlyuye znachennya lichilnika podij pri kozhnij generaciyi odnorazovogo parolya U svoyu chergu znachennya lichilnika na serveri zbilshuyetsya tilki pislya uspishnoyi avtentifikaciyi Vihodyachi z cih tverdzhen mozhna opisati prichini chomu vprovadzhennya procesu resinhronizaciyi neobhidno Autentifikaciya ne projdena Kliyent onoviv znachennya lichilnika pislya stvorennya parolya a znachennya na serveri ne zminilosya Problema zv yazku Kliyent inkrementuvav znachennya lichilnika pislya vidpravki parolya ale parol ne dosyag servera Ce prizvodit do neobhidnosti vikoristannya parametra rozsinhronizaciyi s displaystyle s yakij bude vidpovidati za rozmiri vikna v mezhah yakogo znachennya lichilnika kliyenta i servera budut vvazhatisya sinhronizovanimi Resinhronizaciya lichilnika Resinhronizaciya provoditsya viklyuchno serverom Vona polyagaye v rozrahunku novogo znachennya dlya svogo lichilnika podij shob jogo znachennya spivpadalo z otrimanimi vid kliyenta v mezhah riznici mizh znachennyami ne bilshe s displaystyle s Yaksho cya umova vikonuyetsya to server onovlyuye znachennya vlasnogo lichilnika V inshomu vipadku server rozrahovuye zanovo stan lichilnika V hodi cogo procesu server mozhe zaprositi kilka raziv dodatkovi znachennya odnorazovih paroliv Ce zrobleno dlya pidvishennya rivnya bezpeki tak yak porivnyannya paroliv u comu vipadku vikonuyutsya dlya dvoh abo troh par Yaksho kilkist sprob bude vicherpano to server blokuye oblikovij zapis koristuvacha Parametr s displaystyle s takozh viznachaye vikno v mezhah yakogo server zbilshuye lichilnik v procesi resinhronizaciyi Ce obmezhennya parametrom sluzhit dlya Obmezhennya shansu pidboru virnogo znachennya parolya Zapobigti zaciklennyu rozrahunku znachennya v ramkah odniyeyi perevirkiBezpekaNadijnist algoritmu Sistemi zahistu pobudovani z vikoristannyam HOTP volodiyut visokim stupenem nadijnosti Voni v bilshosti svoyij stijki do shiroko poshirenim kriptografichnih atak napriklad Ataka vidu lyudina poseredini Man in the middle Zlovmisnik ne mozhe pidrobiti pereslanogo zaproshennya povidomlennya tak yak parol zminyuyetsya dosit chasto Bezlich metodiv kriptografichnogo analizu stayut pri comu malopridatnimi U deyakih realizaciyah lichilnik yakij vikoristovuyetsya dlya stvorennya parolya zminyuye znachennya pislya kozhnoyi peresilannya Yaksho povidomlennya zashifrovani z vikoristannyam dosit silnogo shifru to HOTP robit pidbir parolya majzhe nemozhlivim Ataka povtornogo vidtvorennya Tut uspih zalezhit vid konfiguraciyi samoyi sistemi U vipadku napriklad koli vikoristovuyetsya server autentifikaciyi dlya nadannya prav na vhid koristuvacha u atakuyuchogo vinikaye ryad problem Server pislya kozhnogo prijomu povidomlennya zbilshuye znachennya lichilnika na odinicyu Tomu elementarna vidpravka dublikata povidomlennya ne projde perevirku povidomlennya stvoryuvalosya za dopomogoyu odnogo znachennya a perevirka provoditsya inshim Yaksho klyuch skladayetsya z D displaystyle D dovilnih cifr to jmovirnist uspihu ataki metodom pryamogo pereboru pri nayavnosti T displaystyle T sprob autentifikaciyi do momentu blokuvannya rozrahovuyetsya za formuloyu p s T 10 D displaystyle p sT 10 D Napriklad pri 5 dozvolenih sprobah vvedennya shestiznachnogo parolya i rozmiri dopustimogo vikna s 30 displaystyle s 30 shans uspihu pri ataci stanovit 0 015 Chasto zlovmisniku vdayetsya vkrasti z servera autentifikaciyi heshovanij parol po yakomu vidbuvayetsya perevirka dostovirnosti Odnak algoritm dlya stvorennya parolya vikoristovuye takozh lichilnik podij Oskilki pochatkove znachennya lichilnika vibirayetsya serverom vono zazvichaj vipadkove sho uskladnyuye zlom kanalu zv yazku navit pri nayavnosti u atakuyuchogo rozpodilenogo sekretu Sposobi posilennya zahistu Dani zmini ne ye obov yazkovimi abo rekomendovanimi avtorami algoritmu rozshirennyami Odnak dlya pidvishennya rivnya bezpeki vlasnoyi realizaciyi mozhna zastosuvati taki varianti Zbilshennya dovzhini znachennya HOTP Vityag kozhnogo novogo simvolu z rezultatu H M A C S H A 1 displaystyle HMAC SHA 1 rizko zmenshuye shansi uspishnoyi ataki Zavdyaki comu mozhna zrobiti proces roboti z parolyami zruchnishe Napriklad zbilshiti kilkist sprob vvedennya abo rozshiriti diapazon v yakomu porivnyuyutsya znachennya lichilnikiv servera i kliyenta Alfavitno cifrovi znachennya Sens ciyeyi ideyi polyagaye v tomu shob vikoristovuvati ne tilki cifri dlya parolya ale she i simvoli A Z Virnishe mova jde pro nabir z 32 simvoliv z alfavitno cifrovogo mnozhini Vidrazu zh staye vidno yak viris riven bezpeki paroliv tomu sho teper jmovirnist uspihu povnogo pereboru skladaye s T 32 6 displaystyle sT 32 6 dlya paroliv yaki skladayutsya z 6 simvoliv Resinhronizaciya na bazi lichilnika Yaksho umovi dozvolyayut kliyentu vidpravlyati ne tilki znachennya HOTP ale i inshi dani to mozhna zrobiti proces resinhronizaciyi nabagato zruchnishe i bezpechnishe yaksho razom zi znachennyam HOTP kliyent bude vidpravlyati serveru stan lichilnika podij V comu vipadku znachennya kliyentskogo HOTP bude vistupati v roli imitovstavki dlya stanu lichilnika Pereviryayuchi takim chinom znachennya lichilnika na dostovirnist i vidpovidnist mozhna vidmovitisya vid vikoristannya parametra rozsinhronizaciyi sho dozvolit takozh pidvishiti riven zahistu algoritmu tomu sho v onovlenij sistemi jmovirnist uspihu ataki pryamim pereborom bude stanoviti vsogo T 10 6 displaystyle T 10 6 ZastosuvannyaOb yednannya OATH standartizovalo HOTP bez zhodnih vkazivok z privodu realizaciyi algoritmu Navpaki svoboda rozrobnikiv dozvolyaye znahoditi vse novi rishennya pragnuchi zadovolniti potrebi zamovnika ta vnesti innovacijnij vnesok u tehnologiyu OTP Poshirenu realizaciyu HOTP na Java mozhna znajti v paketi org jboss security otp yakij vhodit u standartni biblioteki vilno rozpovsyudzhuvanogo vebservera Apache Jboss She odna realizaciya na movi Java predstavlena bezposeredno ob yednannyam OATH v paketi org openauthentication otp Mozhna takozh zgadati realizaciyu proekt OATH Toolkit biblioteka liboath yakogo dozvolyaye stvoryuvati paroli v rezhimi HOTP i TOTP Velika kilkist nizkointellektualnih pristroyiv specialno stvoreno dlya generaciyi paroliv abo peredachi danih za dopomogoyu HOTP i TOTP Feitian SecuTech SmartDisplayer Vasco Yubico Protectimus Algoritm takozh vikoristovuyetsya v domashnih merezhah dlya upravlinnya periferiyeyu za dopomogoyu pulta distancijnogo keruvannya abo mobilnogo telefonu Vimogi do realizaciyi algoritmu Neobhidno pidtrimuvati dvofaktornu autentifikaciyu U danomu vipadku mayetsya na uvazi sho pershim chinnikom ye generator odnorazovih paroliv a drugim yakijs dodatkovij sekret yakij dodayetsya do odnorazovogo parolyu Server povinen buti zahishenij vid atak metodom pryamogo pereboru tobto oblikovij zapis koristuvacha povinna blokuvatisya pislya pevnogo chisla nevdalih sprob autentifikaciyi Neobhidno vikoristovuvati zahishenij kanalDodatkovoHOTP zasnovanij na SHA 1 yaka bilshe ne vvazhayetsya dosit stijkoyu do kolizij Prote algoritm HOTP vikoristovuye tilki fakt vipadkovosti chisla virahuvanogo na yiyi osnovi tomu nayavnist kolizij bezposeredno ne vplivaye na jogo robotu Odnostoronnya autentifikaciya peredbachaye sho kliyent za potrebi namagayetsya vstanoviti zv yazok Pislya chogo server vidpravlyaye zapit nazad kliyentovi i pereviryaye jogo vidpovid na spravzhnist Modifikaciya algoritmu OCRA dozvolyaye takozh i koristuvachevi provesti autentifikaciyu servera Divis takozhTime based One time Password algorithmPrimitkiHoornaert Frank Naccache David Bellare Mihir Ranen Ohad angl tools ietf org Arhiv originalu za 6 kvitnya 2019 Procitovano 26 bereznya 2017 Algorithm agility and OATH by Burt Kaliski RSA Laboratories May 19 2005 HOTP Based User Authentication Scheme in Home Networks by Binod Vaidya Jong Hyuk Park and Joel J P C Rodrigues 2009 OATH yesterday today and tomorrow by Nathan Willis December 15 2010 Nathan Schmidt nathschmidt net Arhiv originalu za 3 kvitnya 2016 Procitovano 27 bereznya 2017 aldaris blog brit 28 lyutogo 2014 Arhiv originalu za 11 chervnya 2018 Procitovano 22 bereznya 2017 M Bellare R Canetti and H Krawczyk Krawczyk H Bellare M and R Canetti Attacks on SHA 1 by Initiative for Open AuTHentication March 2 2005 Introducing the OATH Toolkit by Simon Josefsson 2011 Arhiv originalu za 20 kvitnya 2018 Procitovano 4 kvitnya 2018 PosilannyaRFC 4226 angl angl Onlajn generator odnorazovih paroliv po algoritmu HOTP angl