1. 개요


OTP란

One Time Password의 약자로, 우리말로 하면 일회용 비밀번호라 할 수 있다. 일회성이라는 특징 때문에 일반 비밀번호 입력이나 공인인증서 이용보다도 더 안전한 방법으로 알려져있다. 주로 금융권이나 일반 웹사이트 2차 로그인 인증으로 많이 활용되고 있다. OTP의 종류에는 원리에 따라 S/KEY방식, 시간 동기화 방식, 챌린지 응답 방식, 이벤트 동기화 방식 등이 있다. 그 중 Google OTP는 Google OTP(Authenticator) 앱으로 이중 시간 동기화 방식을 사용한 TOTP 인증 구현이다.

TOTP((Time-based One Time Password)의 원리

많은 사람들이 OTP 기기와 서버가 통신하는 줄 오해하는데, 실상은 그렇지 않다. OTP 기기와 서버는 모두 같은 알고리즘을 바탕으로 하기 때문에 통신이 필요치 않다. 서버쪽에서 해당 알고리즘으로 Key나 QR코드를 생성해주면 그걸 OTP 기기에 입력해준다. 그러면 기기에서는 그 Key나 QR코드를 기준으로 하여 30~60초 마다 계속하여 새로운 일회용 비밀번호를 생성한다. 그 일회용 비밀번호를 입력하여 서버로 전송하면 서버에서 그 비밀번호가 맞는지 알고리즘으로 확인하는 방식이다. 여기서 OTP 기기를 이용한다는 것은 스마트폰에 있는 Google OTP(Authenticator) 앱을 사용하는 것을 의미한다.

→ 알고리즘 기반이기 때문에 트래픽 제한, 구글 계정 필수여부와 같은 제약사항이 발생하지 않음

→ QR 코드 생성의 경우도 URL GET request를 통해 QR 코드를 생성해주는 구글 서비스를 이용

Google OTP를 사용 중인 사이트

2. 구현