HOTP - HMAC-Based One-Time Password Algorithm

5
HOTP - HMAC-BASED ONE-TIME PASSWORD ALGORITHM Készítette: Tóth Balázs Viktor

description

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 - PowerPoint PPT Presentation

Transcript of HOTP - HMAC-Based One-Time Password Algorithm

Page 1: HOTP -  HMAC-Based One-Time Password Algorithm

HOTP - HMAC-BASED ONE-TIME PASSWORD ALGORITHM

Készítette: Tóth Balázs Viktor

Page 2: HOTP -  HMAC-Based One-Time Password Algorithm

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)

2

Page 3: HOTP -  HMAC-Based One-Time Password Algorithm

A HOTP ALGORITMUS - JELÖLÉSEK

Szimbólum Jelentés

C 8 bájtos számláló érték. Ennek az értéknek szinkronizálva kell, hogy legyen a HOTP generátor (kliens) és a HOTP validátor (szerver) között.

K Szerver és kliens közötti titkos érték. Minden HOTP generátornak különböző K-ja van.

T A sikertelen autentikációs kapcsolódások száma, amely után már a szerver nem enged csatlakozni.

s Újraszinkronizációs paraméter. A szerver megpróbálja verifikálni az autentikátort s egymást követő számláló értéken keresztül.

Digit Számok darabszáma egy HOTP értékben, rendszer paraméter.

3

Page 4: HOTP -  HMAC-Based One-Time Password Algorithm

A HOTP ALGORITMUS

1) HS = HMAC-SHA-1(K,C), ahol HS egy 20 bájtos string

2) Sbits = DT(HS), ahol 4 bájttá alakítunk, DT 31 bittel tér vissza

3) Snum = StToNum(Sbits), ami S-t egy 0…231-1 értékek közötti számmá konvertálja.

4) D = Snum mod 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. 4

Page 5: HOTP -  HMAC-Based One-Time Password Algorithm

PÉLDA DIGIT = 6-RA

Byte Number00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19

Byte Value1f 86 98 69 0e 02 Ca 16 61 85 50 Ef 7f 19 Da 8e 94 5b 55 5a

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 (Dynamic Binary Code). Az MSB-je a DBC1-nek 0x50, így DBC2 = DBC1 =

0x50ef7f19 HOTP = DBC2 modulo 106 = 872921 5