Google OTP는 어떻게 동작하지?

·2024년 10월 21일

회사에서 ISMS 심사를 위해 관리툴 로그인에 2차 인증을 추가 할 업무가 주어졌고, Google OTP를 추가해보기로했다.

OTP

One Time Password의 약자로, 일회성 비밀번호를 생성하는 방법이다.

일회성이라는 특징 때문에 일반 비밀번호 입력이나 공인인증서 이용보다도 더 안전한 방법으로 알려져있다.

요즘에는 이메일 인증이나 깃 로그인시에도 활용되고 있는 것 같다.

찾아보기전까지는 몰랐지만 OTP 인증은 서버끼리 통신하는것이 아니라 같은 알고리즘을 이용하여 알고리즘을 통해 확인하는 방식이라고 한다.

OTP는 TOTP(시간)/HOTP(이벤트) 기반으로 생성된다고한다.

GoogleOTP는 TOTP 방식으로 사용된다.

TOTP는 시간 기반 OTP 생성 방식으로, 현재 시간과 공유 비밀 키를 사용하여 OTP를 생성하는 방식이다.

구글링해서 찾아 본 결과

TOTP는 RFC 6238에서 정의된 표준을 따릅니다. 이 표준에서는 HMAC-SHA-1을 기본 알고리즘으로 사용하도록 권장하고 있으며, 선택적으로 HMAC-SHA-256 또는 HMAC-SHA-512 같은 더 강력한 해시 알고리즘도 사용할 수 있다고 명시하고 있습니다. 라고 한다.

OTP 생성 방식

  1. 현재시간을 TimeStep으로 나누어 카운터값을 계산한다.
  2. HMAC-SHA-1(secret, count)을 계산하여 HMAC 해시 값을 생성한다.
  3. 해시값의 일부를 추출하여 OTP로 변환한다.
  4. 생성된 OTP사용자에게 전달된다.

OTP 인증 방식

  1. 서버는 현재 시간과 공유된 비밀키를 사용하여 TOTP를 생성하고, 사용자가 입력한 OTP와 비교한다.
  2. 시간 동기화 오차를 고려해서 서버는 인증 범위를 확장 후 현재 카운터와 ±1 구간(이전 30초와 다음 30초)을 포함하여 총 3개의 OTP를 생성하고, 사용자가 입력한 OTP와 비교하여 판단한다.

0개의 댓글