TOTP

Untitled

Time-Based-One-Time-Password의 약자로 일회성 비밀번호 생성을 위해 공유 비밀키와 시간정보를 사용하여 일회성 비밀번호를 생성합니다. 일회성 비밀번호를 전달하지 않아도 됩니다. TOTP는 HMAC과 HOTP 알고리즘이 사용되므로 해당 개념들을 이해해야 합니다.

HMAC

HMAC은 Hash-based Message Authentication Code의 줄임말로서, 사용자의 Secret Key를 평문과 조합하여 해시를 발생시키고 메세지와 함께 전달함으로써 무결성을 확인하는 매커니즘입니다.

Untitled

HMAC의 구현

HMAC(Key, message)  =  SHA1(Key XOR Opad + SHA1(Key XOR Ipad + message))

HMAC의 예시

  1. Key XOR Ipad
  2. Key XOR Ipad + message "abcde"
  3. SHA1(Key XOR Ipad + message "abcde") ⇒ fe5ce5adc135af4e081618a100a6c7000e350452
  4. Key XOR Opad
  5. Key XOR Opad + SHA1(Key XOR Ipad + message)
  6. SHA1(Key XOR Opad + SHA1(Key XOR Ipad + message))

HOTP