crypto.getRandomValues로 문자, 숫자, 기호를 섞은 무작위 비밀번호를 만듭니다.
TOTP/HOTP 코드 생성기
도구 자체는 영어로 되어 있지만, 이 페이지에서는 귀하의 언어로 설명해 드립니다.
TOTP/HOTP 코드 생성기을(를) 사용하세요
기능
인증 앱과 동일한 방식으로 Base32 비밀번호에 대한 시간 기반(TOTP) 또는 카운터 기반(HOTP) 일회용 비밀번호를 생성하고, 코드가 일치하는지 확인합니다. 직접 설정한 2단계 인증(2FA) 구성을 테스트하는 데 유용합니다.
이 서비스는 전적으로 브라우저에서 실행되며, 사용자가 입력한 내용은 전혀 업로드되지 않습니다.
TOTP/HOTP 코드 생성기 사용 방법
- 비밀 키 입력. 본인 테스트 계정의 Base32 비밀 키를 Secret key (Base32)에 붙여 넣거나, Random을 눌러 32자짜리 새 비밀 키를 만듭니다.
- 앱 설정에 맞춰주세요. 코드 유형(TOTP(시간 기반) 또는 HOTP(카운터 기반)), 알고리즘 및 자릿수를 선택하세요. 대부분의 인증 앱은 TOTP, HMAC-SHA-1 및 6자리를 사용합니다.
- 코드 표시하기. TOTP의 경우 ‘Start TOTP’를 누르세요. 카운트다운과 함께 코드가 표시되며, 매초마다 코드가 새로 계산됩니다. HOTP의 경우 카운터를 설정한 후 ‘Show HOTP code’를 누르세요. ‘Next’를 누르면 다음 카운터로 이동합니다.
- 코드 확인하기. 앱이나 서버에서 받은 코드를 ‘코드 확인’란에 입력한 후 ‘확인’을 누르세요. 결과 화면에는 코드가 일치하는지 여부와, 해당 코드가 어떤 시간 단계 또는 카운터에 해당하는지가 표시됩니다.
- 중지 및 정리. 작업이 끝나면 ‘중지’를 누르세요. 마지막 코드가 화면에 그대로 표시됩니다. 비밀 입력란은 직접 비워 주세요.
예시
RFC 6238 테스트 비밀 키
GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ412568이것은 RFC 6238에 공개된 테스트 키 12345678901234567890을 Base32 형식으로 변환한 것입니다. 이 페이지에는 현재 6자리 코드와 다음 코드가 생성되기까지 남은 초 수가 표시되며, 이는 인증 앱에서 이 비밀번호에 대해 표시하는 코드와 동일합니다. 카운터 0인 HOTP로 전환하면 RFC 4226의 첫 번째 테스트 값인 755224가 표시됩니다.
검증 대상
| 신호 | 그 의미는 무엇인가 |
|---|---|
| 코드 | 시간 단계(TOTP) 또는 카운터(HOTP)의 HMAC로, RFC 4226 및 RFC 6238에 따라 6자리 또는 8자리로 잘라낸 값입니다. 유형, 알고리즘 및 자릿수가 모두 일치할 때만 앱과 일치합니다. |
| Ns 단위에서의 갱신 · 시간 단계 N | 현재 30초 시간 창에 남은 초 수와 기기의 시계에서 가져온 단계 번호입니다. 시계가 정확하지 않으면 이전 또는 다음 코드가 표시됩니다. |
| 카운터 N · ‘다음’을 누르세요 | HOTP 모드에서는 코드가 해당 카운터에 속합니다. 각 코드는 한 번만 사용되며, 서버는 그 후 다음 카운터를 기대합니다. |
| Base32가 아님: ... | 비밀번호에는 A–Z 및 2–7 이외의 문자(예: 0, 1, 8, 9 등)가 포함되어 있습니다. 공백, 하이픈, = 기호는 무시되며 소문자는 허용됩니다. |
| 비밀은 N비트뿐입니다 | 이 비밀키는 RFC 4226에서 요구하는 128비트(26개의 Base32 문자)보다 짧습니다. 코드는 여전히 표시되지만, 이러한 비밀키는 추측하기 더 쉽습니다. |
| 유효: ...와 일치하는 경우 | 필드에서 현재 시간 단계에 해당하는 코드 또는 HOTP 카운터를 확인했습니다. |
| 이전 단계 또는 다음 단계에 적용됩니다. | 이 코드는 현재 시점 전후 30초 이내의 한 단계에 해당합니다(주황색으로 표시됨). 일반적으로 두 기기 간에는 약간의 시간 차이가 있습니다. |
| 일치하는 항목이 없습니다 | 확인한 시간 단계도 카운터도 맞지 않습니다. 시크릿, 시계, 알고리즘 및 자릿수를 확인해 보세요. |
더 많은 예시
RFC 4226 테스트 키, HOTP
GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ코드 유형을 HOTP, HMAC-SHA-1, 6자리, 카운터 0으로 설정하면 코드는 755224가 됩니다. Next를 사용하면 카운터 1에 대해 287082가 나오며, 이는 RFC 4226에 공개된 테스트 값입니다.
한 칸 앞의 코드를 확인하세요
GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ카운터가 0인 HOTP 모드에서 ‘코드 확인’에 287082를 입력하면 다음과 같은 메시지가 표시됩니다. “카운터 1에 유효함, 카운터 필드보다 1 앞선 값입니다.”
Base32 형식의 비밀이 아님
0189"0", "1", "8", "9"는 Base32가 아닌 값이므로 오류가 발생했습니다. Base32는 A–Z의 영문자와 2–7의 숫자만 사용하기 때문입니다.
자주 묻는 질문
정확히 무엇을 계산하나요?
현재 시간을 기준으로 30초 단위로 생성된 TOTP 코드(RFC 6238) 또는 사용자가 설정한 카운터에 대한 HOTP 코드(RFC 4226)로, HMAC-SHA-1, SHA-256 또는 SHA-512를 사용하며 6자리 또는 8자리로 구성됩니다. 대부분의 인증 앱은 SHA-1과 6자리를 사용합니다. 코드가 현재 시간 단계와 그 전후 한 단계씩, 또는 HOTP 카운터와 그 다음 9개 단계를 시도하는지 확인하며, A-Z 및 2-7 범위를 벗어난 문자가 포함된 비밀번호는 오류 메시지와 함께 거부됩니다.
TOTP 코드가 피싱으로부터 저를 보호하나요?
완전하지는 않습니다. 중간자(adversary-in-the-middle) 피싱 키트는 사용자가 입력하는 코드를 실제 사이트로 그대로 전달하므로 코드가 비밀번호와 함께 탈취됩니다. 패스키와 FIDO2 보안 키는 실제 도메인에 묶여 있어 이 공격에 강합니다.
비밀 키가 어딘가로 전송되거나 저장되나요?
아니요. 코드는 웹 크립토 API를 통해 브라우저 내에서 계산되며, 비밀번호는 절대 업로드되거나 저장되지 않습니다. TOTP는 기기의 시계에 의존하므로, 시계가 정확하지 않으면 다른 코드가 생성됩니다.
RFC와 대조하여 코드를 어떻게 확인할 수 있나요?
테스트 키 12345678901234567890을 Base32 형식인 GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ로 사용하십시오. HOTP 모드에서 카운터 0은 755224를, 카운터 1은 287082를 반환합니다(RFC 4226). RFC 6238에는 1970년 1월 1일 UTC 기준 59초 후의 8자리 값으로 94287082가 명시되어 있으며, TOTP 모드는 항상 현재 시간을 사용합니다.
TOTP와 HOTP의 차이점은 무엇인가요?
HOTP(RFC 4226)는 사용 횟수를 집계합니다. 각 코드는 1씩 증가하는 카운터에 속합니다. TOTP(RFC 6238)는 카운터가 현재 30초 시간 단위로 설정된 HOTP이므로, 코드는 시계에 따라 변경됩니다.
제 앱에 다른 코드가 표시되는 이유는 무엇인가요?
먼저 시계를 확인하세요. 30초의 차이만 있어도 코드가 달라지기 때문입니다. 그런 다음 비밀번호에 오타가 없는지, 해당 계정이 SHA-256, SHA-512, 8자리 숫자 또는 시간 대신 카운터를 사용하는지 확인하고, 여기에서도 동일한 옵션을 설정하세요.
실제 2FA 비밀 키를 여기에 붙여 넣어도 되나요?
피하세요. 비밀 키는 브라우저에 머물지만, 그것을 보거나 복사한 사람은 해당 계정의 2FA를 재설정할 때까지 사용자의 코드를 만들 수 있습니다. 2FA를 새 휴대폰으로 옮기려면 계정 자체의 이전 또는 재설정 기능을 사용하세요.