TOTP는 HOTP의 이동 인자를 시간 구간으로 바꾼 일회용 비밀번호 알고리즘이다. RFC 6238에 정의된다.
원리
현재 시각에서 기준 시각을 빼고 정해진 시간 간격으로 나눈 값을 카운터로 사용한다. 생성기와 검증기는 같은 비밀 키 및 시간 설정을 공유한다.
예시
인증 앱과 서버가 30초 간격을 사용하면 해당 구간에 대응하는 코드를 계산할 수 있다. 서버는 정책에 따라 제한된 시계 오차 범위를 허용한다.
주의할 점
시간이 지나면 바뀌는 코드도 피싱으로 즉시 전달될 수 있다. 성공한 코드의 재사용 방지, 시도 제한, 비밀 키 보호와 복구 절차를 함께 설계해야 한다.