50 likes | 190 Views
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
E N D
HOTP - HMAC-BasedOne-TimePasswordAlgorithm 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 • 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)
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] • Offset = StToNum(OffsetBits), ahol 0 <= OffSet <= 1 • P = String[Offset], … , String[Offset+3] • Az utolsó 31 bitje P-nek az output.
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 • HOTP = DBC2 modulo 106 = 872921