TOTP 2FA QR 코드 설명

otpauth:// URI 형식, base32 시크릿, RFC 6238 TOTP 수학에 대한 기술적인 심층 분석.

TOTP란 무엇인가요

TOTP (Time-based One-Time Password, RFC 6238)는 Google Authenticator, Authy, 1Password, Bitwarden 및 모든 인증 앱의 기반이 되는 알고리즘이에요. 공유 시크릿과 현재 Unix 시간을 기반으로 30초마다 변경되는 6자리 코드를 생성합니다.

otpauth URI

otpauth://totp/Issuer:account@example.com?secret=BASE32SECRET&issuer=Issuer&algorithm=SHA1&digits=6&period=30

URI 스키마는 otpauth://이고, 유형은 totp(다른 옵션은 카운터 기반의 hotp)이며, 그 다음 레이블, 쿼리 파라미터가 따라옵니다. 인증 앱들은 이 URI를 파싱하여 한 번의 스캔으로 사용자 저장소에 추가해요.

레이블

선택적 형식: Issuer:account@example.com. Issuer 접두사는 issuer 쿼리 파라미터와 중복되지만 대부분의 앱은 둘 다 인식해요.

시크릿

Base32로 인코딩된 바이트 문자열(A-Z 및 2-7, 패딩 없음)입니다. 최소 128비트를 권장하며 대부분의 서버는 160비트(32자 base32)를 사용해요. 시크릿을 URL 인코딩하지 마세요. 그냥 base32 원본 형태로 두세요.

알고리즘, 자릿수, 주기

algorithm: SHA1(기본값, 범용 지원), SHA256 또는 SHA512. digits: 6(기본값) 또는 8. period: 30초(기본값) 또는 60. 이유 없이 기본값을 바꾸지 마세요. 일부 인증 앱은 비기본 옵션을 구현하지 않거든요.

코드 계산 방법

30초 간격마다 인증기는 다음을 수행해요: HMAC-SHA1(secret, floor(unix_time / 30)), HMAC의 하위 4비트를 동적 오프셋으로 가져와 그 오프셋에서 4바이트를 읽고, 31비트로 마스킹한 뒤 106으로 나눈 나머지로 6자리 코드를 만듭니다.

Abundera QR로 생성하기

TOTP 생성기를 열고 발급자(브랜드 이름), 계정(사용자 이메일 또는 사용자명), base32 시크릿을 입력하세요. 알고리즘/자릿수/주기의 기본값은 거의 모든 서버에 맞아요. PNG를 다운로드해서 사용자에게 이메일이나 SMS로 보내거나, 등록 플로우에 삽입하면 됩니다.

개인정보 참고사항

TOTP 시크릿은 서버와 사용자 간의 공유 자격증명이에요. Abundera QR은 이를 전혀 받지 않아요. 모든 인코딩은 브라우저에서 처리됩니다. 전체 개인정보 처리방침 읽기.