TOTP Generator
TOTP/HOTP 생성 및 검증 도구
알고리즘 세부사항
HMAC-SHA1 기반 TOTP (RFC 6238). 주기: 30초, 자릿수: 6. 모든 계산은 클라이언트에서 수행됩니다.
TOTP Generator 소개
TOTP 생성기는 Google Authenticator, Authy, Microsoft Authenticator를 포함한 모든 주요 2단계 인증(2FA) 앱이 사용하는 RFC 6238 사양에 따라 Base32 인코딩 비밀키에서 실시간 시간 기반 일회용 비밀번호(TOTP)를 생성합니다. Base32 비밀키를 입력하면 현재 6자리 TOTP 코드 생성이 즉시 시작되고 매 초마다 자동으로 업데이트됩니다. 색상 코딩된 진행 표시줄은 코드가 만료되어 새 코드가 생성되기까지 남은 시간을 보여줍니다.
이 도구는 2FA 통합을 구축하거나 테스트하는 개발자, 인증 앱 설정 시 TOTP 비밀을 검증하는 시스템 관리자, 모바일 기기 없이 TOTP 코드를 확인해야 하는 보안 전문가를 위해 설계되었습니다. 인증 앱을 사용할 수 없을 때 계정 접근을 복구하는 데도 유용합니다 — TOTP 비밀키를 저장해두었다면 여기서 현재 코드를 생성하여 로그인할 수 있습니다.
기술적으로 구현은 RFC 6238을 정확히 따릅니다. Base32 비밀키는 표준 A–Z + 2–7 알파벳으로 원시 바이트로 디코딩됩니다. 현재 Unix 타임스탬프를 30(주기)으로 나누어 카운터 값을 얻고, 이를 빅엔디안 8바이트 배열로 패킹합니다. Web Crypto API(HMAC-SHA1의 crypto.subtle.sign)를 사용해 디코딩된 키로 카운터에 대한 HMAC-SHA1을 계산합니다. 동적 잘라내기로 HMAC 출력의 마지막 니블이 나타내는 오프셋에서 4바이트를 추출하고, 6자리 코드는 결과를 10^6으로 나눈 나머지를 앞에 0을 채워 표현한 것입니다.
주요 기능
- HMAC-SHA1, 30초 주기, 6자리 코드의 RFC 6238 TOTP 완전 구현
- setInterval로 매 초 업데이트되는 실시간 표시
- 색상 코딩 카운트다운 바: 초록(10초 초과), 노랑(10초 이하), 빨강(5초 이하)
- 표준 Base32 인코딩 TOTP 비밀(A–Z 및 2–7 문자) 수용
- 현재 TOTP 코드를 클립보드에 원클릭 복사
- 코드 만료 전 남은 시간(초) 표시
- Web Crypto API HMAC-SHA1을 사용한 100% 클라이언트 사이드 — 서버 호출 없음
- 회원가입 불필요, 다운로드 불필요, 사용 횟수 제한 없는 완전 무료
자주 묻는 질문
TOTP란 무엇이고 어떻게 작동하나요?
TOTP(시간 기반 일회용 비밀번호)는 RFC 6238에 정의된 2단계 인증 알고리즘입니다. 공유 비밀키를 사용해 현재 Unix 시간을 30(초)으로 나눈 카운터에 대한 HMAC-SHA1을 계산하여 6자리 코드를 생성합니다. 코드는 30초마다 변경됩니다. 서버와 클라이언트는 비밀을 공유하고 동일한 시간을 사용하므로 독립적으로 동일한 코드를 계산합니다.
TOTP Base32 비밀키는 어디서 찾나요?
웹사이트나 서비스에서 2FA를 활성화하면 QR 코드와 함께 "JBSWY3DPEHPK3PXP"와 같은 텍스트 문자열이 표시됩니다 — 그것이 Base32 비밀키입니다. 인증 앱을 잃어버렸을 때 코드를 재생성하는 유일한 방법이므로 2FA 설정 시 이 키를 안전하게 저장해야 합니다. 저장하지 않았다면 서비스에서 2FA를 비활성화하고 다시 활성화하여 새 비밀을 얻어야 합니다.
Google Authenticator 및 Authy와 호환되나요?
네. 이 도구는 Google Authenticator, Authy, Microsoft Authenticator, 1Password, Bitwarden 및 기타 모든 표준 TOTP 앱이 사용하는 동일한 RFC 6238 표준을 구현합니다. 인증 앱으로 스캔한 것과 동일한 Base32 비밀키를 입력하면 어느 순간에든 동일한 6자리 코드가 표시됩니다.
TOTP 코드가 앱에서 보이는 것과 다른 이유는 무엇인가요?
TOTP 코드는 시간에 민감합니다. 기기 시계가 NTP(네트워크 타임 프로토콜)와 동기화되지 않으면 코드가 맞지 않을 수 있습니다. 대부분의 현대 기기는 시계를 자동 동기화하지만 드리프트가 불일치를 유발할 수 있습니다. 또한 정확한 Base32 비밀을 입력하고 있는지 확인하세요 — 단 하나의 잘못된 문자도 완전히 다른 코드를 생성합니다.
진행 표시줄의 색상은 무엇을 의미하나요?
진행 표시줄은 현재 코드가 만료되기까지 남은 시간을 나타냅니다. 초록은 10초 이상 남아 코드를 사용할 시간이 충분함을 의미합니다. 노랑은 10초 이하로 남아 코드를 빨리 입력해야 함을 의미합니다. 빨강은 5초 이하로 남아 코드가 곧 만료되며 경쟁 조건을 피하기 위해 다음 코드를 기다리는 것이 나을 수 있습니다.
이 도구에 TOTP 비밀을 입력해도 안전한가요?
도구는 Web Crypto API를 사용해 브라우저에서 완전히 비밀을 처리합니다. 서버로 전송되는 것은 없습니다. 그러나 온라인 도구에 프로덕션 TOTP 비밀을 입력하는 것은 주의가 필요합니다. 이 도구는 개발 테스트, TOTP 학습, 또는 인증 앱을 사용할 수 없을 때 코드 복구에 가장 적합합니다. 보안이 중요한 계정에 일상적으로 사용하는 것은 피하세요.
TOTP와 HOTP의 차이점은 무엇인가요?
TOTP(시간 기반 OTP)는 현재 시간에서 카운터를 파생하므로 사용 횟수에 관계없이 30초마다 코드가 변경됩니다. HOTP(HMAC 기반 OTP, RFC 4226)는 코드가 사용될 때만 증가하는 카운터를 사용하므로 사용할 때까지 코드가 동일하게 유지됩니다. TOTP는 클라이언트와 서버 간의 상태 동기화가 필요 없어 2FA 앱에서 더 일반적으로 사용됩니다.
TOTP 주기가 30초인 이유는 무엇인가요?
RFC 6238은 보안과 사용성 사이의 균형으로 30초 주기를 권장합니다. 짧은 주기는 사용자가 입력하기 전에 코드가 만료될 수 있습니다. 긴 주기는 공격자에게 도난된 코드를 사용할 더 많은 시간을 줍니다. 대부분의 TOTP 구현은 시계 드리프트를 감안하여 ±1 주기(±30초) 허용 범위를 제공하므로, 실제로 코드는 최대 90초 동안 유효합니다.