TOTP란 무엇인가?
시간 기반 일회용 비밀번호 (TOTP)는 현재 시간을 키 요소로 사용하는 알고리즘에 의해 생성된 임시의 고유 코드입니다. 일반적인 일회용 비밀번호 (One-time password, OTP) 와 유사하게, TOTP는 한 번만 사용되지만, 고정된 수명을 가지며 일반적으로 30초에서 60초 사이입니다. 만료되면 새로운 코드가 자동으로 생성됩니다.
TOTP 표준은 인터넷 엔지니어링 태스크 포스 (IETF)에 의해 RFC 6238 로 정의되어 있으며, 다양한 2단계 인증 (2FA) 및 다단계 인증 (MFA) 시스템에서 널리 채택되고 있습니다. TOTPs는 클라이언트 (사용자 장치)와 서버 간의 동기화된 시간에 의존하기 때문에 높은 수준의 보안을 제공하며 예측하거나 재사용하기 어렵습니다.
TOTP 작동 방식
TOTP 생성 과정은 다음 단계로 이루어집니다:
- 공유 비밀: 초기 설정 동안, 공유 비밀 키가 생성되어 클라이언트와 서버 모두에 안전하게 저장됩니다. 이 키는 보통 QR 코드로 인코딩되어 사용자들이 인증 앱을 통해 스캔합니다.
- 시간 간격: 현재 시간이 보통 30초 간격으로 고정된 간격으로 나뉘어집니다.
- 알고리즘 적용: 공유 비밀 키와 현재 타임스탬프가 해시 기반 알고리즘 (흔히 HMAC-SHA1)에 입력되어 고유한 숫자 코드가 생성됩니다.
- 동기화: 클라이언트와 서버 모두 동일한 공유 비밀과 현재 타임스탬프를 사용하여 코드를 독립적으로 생성합니다. 둘 다 동기화되어 있을 때만 코드가 일치합니다.
- 검증: 사용자가 로그인하거나 중요한 거래를 수행할 때, 인증 앱에 표시된 TOTP를 입력합니다. 서버는 내부적으로 생성된 TOTP와 비교하여 검증합니다.
TOTP를 언제 사용해야 하나
대부분의 경우, 일반적인 OTP가 권장되지만 새로운 패스코드를 “트리거”할 수 없는 경우에는 TOTP가 권장됩니다.
- TOTP 예시: 인증 앱
- OTP 예시: 이메일, SMS
OTP와 TOTP의 차이점은 무엇인가?
주요 차이점은 TOTP가 시간 기반이라는 점으로, 장치가 서버에 연결되지 않을 때 적합합니다. 서버는 이메일 주소나 전화번호로 쉽게 새로운 패스코드를 보낼 수 있지만, 이는 이메일이나 전화가 온라인이어야 합니다. 하지만 인증 앱은 오프라인으로 유지하면서 “시간”을 이용해 패스코드를 검증할 수 있습니다.