it-box

OTP 코드 생성기

다중 인증용 시간 기반 OTP(일회용 비밀번호)를 생성하고 검증합니다.

OTP 코드 생성기 도구 열기

TOTP 방식의 일회용 인증 코드(RFC 6238)를 브라우저에서 계산해 보여 줍니다. base32 비밀키를 입력하거나 무작위 키를 만들어 인증 앱과 같은 코드가 나오는지 확인할 때 씁니다.

사용 순서

  1. Secret 칸에 base32 비밀키를 입력합니다. 새로고침 아이콘을 누르면 무작위 키가 생성됩니다.
  2. 이전, 현재, 다음 30초 구간의 6자리 코드를 확인합니다.
  3. QR 코드나 Open Key URI 버튼으로 인증 앱에 키를 등록합니다.
  4. Epoch 값으로 기기 시간이 맞는지 확인한 뒤 인증 앱의 코드와 비교합니다.

예시

비밀키 GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ(ASCII 문자열 12345678901234567890의 base32)를 시각 59초에 계산하면 287082가 나옵니다. RFC 6238의 테스트 벡터와 같은 값입니다. 화면에는 현재 시각 기준의 코드만 나옵니다.

한계

인증 코드를 검증하는 기능은 없고 생성과 표시만 합니다. 기간은 30초, 자릿수는 6자리, 해시는 SHA-1로 고정되어 있습니다. 등록용 URI의 발급자는 IT-Tools, 계정 이름은 demo-user로 고정되어 바꿀 수 없습니다. 기기 시계가 실제 시간과 어긋나면 코드가 맞지 않습니다.

보안 주의

화면의 비밀키와 QR 코드는 그 계정의 2단계 인증을 복제할 수 있는 값입니다. 실계정 키를 넣은 상태로 화면을 공유하지 말고, 사용이 끝나면 페이지를 닫으세요.

배경 지식

TOTP는 공유 비밀키와 현재 시각을 함께 HMAC에 넣어 짧은 숫자를 만드는 방식입니다. 시각을 30초 단위로 나눈 번호를 카운터로 쓰고, HMAC-SHA1 결과에서 동적 절단으로 4바이트를 뽑은 뒤 10의 6제곱으로 나눈 나머지를 코드로 씁니다. 서버와 인증 앱이 같은 키와 시계를 가지면 같은 코드가 나오므로, 코드를 네트워크로 주고받을 필요가 없습니다.

비밀키는 base32 문자열로 전달되며, 두 기기가 같은 키를 가지는 한 보안이 유지됩니다. QR 코드는 otpauth:// 주소를 담고 있어 인증 앱이 키와 발급자 이름을 한 번에 읽습니다. 시계가 어긋나면 코드가 맞지 않으므로 서버는 보통 앞뒤 한 구간을 허용합니다. 이 도구는 이전과 다음 구간의 코드를 함께 보여 주어 그 허용 범위를 눈으로 확인하게 합니다.

자주 묻는 질문

인증 앱의 코드와 이 도구의 코드가 다르면 무엇을 확인해야 하나요?

먼저 기기 시간을 자동 설정으로 맞췄는지 보세요. 키를 옮겨 적다가 실수하는 경우도 많으니 base32 문자열이 같은지 확인합니다. 인증 앱이 SHA-1이 아니거나 8자리 설정을 쓰는지도 함께 확인하세요.

같은 키를 두 번 등록하면 문제가 되나요?

인증 앱에 항목이 중복으로 생길 수 있을 뿐, 코드 계산 방식은 바뀌지 않습니다. 다만 서비스에서 키를 여러 번 재발급하면 이전 키가 무효가 되는지 확인해야 합니다.

30초보다 짧은 간격으로 코드를 받을 수 있나요?

기간은 서비스가 정한 값을 따라야 합니다. 이 도구는 30초로 고정되어 있어 다른 기간을 쓰는 서비스의 코드와는 맞지 않습니다.