1 / 10

HOTP - HMAC-Based One-Time Password Algorithm

HOTP - HMAC-Based One-Time Password Algorithm. Készítette: Tóth Balázs Viktor. Motivációk. Kevés two-factor autentikáció Hardver-, és szoftvergyártók közötti együttműködés hiánya Nyílt szabványok hiánya (magas költségűek, nem elterjedtek…) Statikus jelszavak alkalmatlansága

march
Download Presentation

HOTP - HMAC-Based One-Time Password Algorithm

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. HOTP - HMAC-BasedOne-TimePasswordAlgorithm Készítette: Tóth Balázs Viktor

  2. Motivációk • Kevés two-factor autentikáció • Hardver-, és szoftvergyártók közötti együttműködés hiánya • Nyílt szabványok hiánya (magas költségűek, nem elterjedtek…) • Statikus jelszavak alkalmatlansága • nyílt szabvány → minden műszaki közösség által hozzáférhető • OTP: legegyszerűbb és leghíresebb • Fő előnye: nem kell semmilyen kliens szoftvernek installálva lennie a felhasználó gépére (roaming)

  3. A HOTP algoritmus - Jelölések

  4. A HOTP algoritmus • HS = HMAC-SHA-1(K,C), ahol HS egy 20 bájtos string • Sbits = DT(HS), ahol 4 bájttá alakítunk, DT 31 bittel tér vissza • Snum = StToNum(Sbits), ami S-t egy 0…231-1 értékek közötti számmá konvertálja. • D = Snummod 10Digit, ahol D egy szám 0…10Digit-1 között. • A Truncate függvény (2. és 3. lépés) : • DT(String), ahol String = String[0], … ,String[19] • Legyen OffsetBits a low-order 4 bitje String[19]-nek. • Offset = StToNum(OffsetBits), ahol 0 <= OffSet <= 15 • P = String[Offset], … , String[Offset+3] • Az utolsó 31 bitje P-nek az output.

  5. Példa Digit = 6-ra • Az utolsó bájt 19, aminek a hexa értéke: 0x5a. • Az alsó 4 bit értéke 0xa (ez az offset érték). • Az offset érték a 10. bájt (0xa). • A 4 bájt értéke, ami a 10. bájttól indul 0x50ef7f19, ami a DBC1 (DynamicBinaryCode). • Az MSB-je a DBC1-nek 0x50, így DBC2 = DBC1 = 0x50ef7f19 (1357872921) • HOTP = DBC2 modulo 106 = 872921 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) ;

  6. Biztonsági megfontolások, elvárások • T-nek és s-nek és Digit-nek van szerepe a biztonság terén • Nem szabad sérülékenynek lennie egy brute force támadással szemben • Egy biztonságos csatornán keresztül kell implementálni, hogy biztosítható legyen a felhasználók közötti interakciók biztonsága • A HOTP biztonságossága az alábbi formulával fejezhető ki: Sec = sv/10Digit

  7. A HOTP értékek validációja • A HOTP kliens növeli a számlálóját és utána kiszámolja a következő HOTP értéket • Ha az autentikációs server által fogadott érték megegyezik a kliens által számolt értékkel, akkor a HOTP érték validálva van • A server a sikeres validáció után növeli a számlálóját egyel • Ha a server által fogadott érték nem egyezik meg a kliens által számolt értékkel, akkor a server elindítja az újraszinkronizáló protokollját mielőtt egy újabb értéket kérne • Ha az újraszinkronizáció sem sikerül, akkor a server egy újabb autentikációs igazolást kér a protokolltól, amíg a maximális számú próbálkozást el nem éri • A maximum számú próbálkozást elérve a servernek ki kell (SHOULD) zárnia az ügyfelet és értesítenie a felhasználót

  8. Megelőzés a szerverben • A HMAC-SHA-1 érték egy rövidebb értékké alakítása lehetővé teszi egy brute force támadás sikerességét • A T érték egy akadályozási (throttling) paraméter, ami meghatározza a maximum számú lehetséges próbálkozást egy OTP validálására • A T értékét a lehető legalacsonyabbra kell állítani, hogy még ne zavarja a használhatóságot • Késleltetési séma: Minden sikertelen próbálkozásra, A-ra az autentikációs server vár T*A másodpercet

  9. A számláló újraszinkronizálása • Annak ellenére, hogy a server számlálója csak egy sikeres HOTP autentikáció után növekszik, a számláló a tokenen minden alkalommal növekszik, amikor a felhasználó egy új HOTP-t kér. • Emiatt a számláló értékek a serveren és a tokenen lehet, hogy nincsenek szinkronban • Az s look-ahead paraméter segítségével a server újraszámolja a következő s HOTP-server értéket és ellenőrzi a fogadott HOTP kliens értékkel szemben • Az s által meghatározott felső határ biztosítja, hogy a server ne ellenőrizze a HOTP értékeket örökké

  10. Itt a vége… Köszönöm a figyelmet!

More Related