시간 기반 일회용 비밀번호(TOTP)란?
시간 기반 일회용 비밀번호(TOTP)는 로그인 확인을 위해 짧고 만료되는 코드를 제공하는 방법입니다. 휴대폰과 서비스가 모두 공유 시드(secret)와 현재 시간을 알고 있어, 서로 독립적으로 동일한 여섯 자릿수 코드를 도출합니다. 잠금장치 조합이 보는 동안 계속 바뀌는 모습이라고 생각하면 됩니다. 네, 그것이 바로 그렇게 간단합니다.
TOTP는 동작하는 데 전화 신호가 필요합니다. 아니요. 앱이 기기에서 시간과 공유 시드를 사용해 코드를 생성하므로 비행기 모드에서도 작동합니다.
시간 기반 일회용 비밀번호(TOTP)가 작동하는 방식
거래소나 지갑 로그인에 대해 활성화할 때의 흐름은 다음과 같습니다.
- 시작: 보안 설정에서 인증자 앱 옵션을 선택하고 QR 코드를 스캔합니다.
- 시크릿: 앱은 공유 시드, 보통 secret key를 저장하여 기기와 서비스의 페어링을 수행합니다.
- 동기화: 양측이 짧은 시간 구간에서 동일한 시계를 읽고 표준 수학을 실행해 여섯 자리 코드를 만듭니다.
- 입력: 로그인 시 타이머가 재설정되기 전에 코드를 입력합니다.
- 확인: 서비스가 같은 수학으로 코드를 확인하고 매칭되면 로그인합니다.
그게 다입니다.
시간 기반 일회용 비밀번호(TOTP)의 중요성
“그래서 뭐가 중요한가”를 쉬운 말로 답하면:
- 장점: 비밀번호를 알더라도 다수의 계정 탈취를 막아줍니다.
- 관점: SMS 코드의 취약점인 SIM 스와핑 등으로 인해 TOTP는 두 번째 강력한 단계가 됩니다. 대부분의 서비스는 인증자 앱을 사용한 2단계 인증 2FA를 활성화하게 합니다.
- 관련성: 거래소, NFT 마켓, DeFi 대시보드, 커스터디 포털 등에서 만날 수 있습니다.
설정 시 seed를 적어 두거나 안전하게 저장하고, 휴대폰 시계를 자동 업데이트로 유지하세요. seed를 잃으면 시계 오차로 인해 잠금이 걸릴 수 있습니다.
Key Characteristics of Time based One Time Passwords (TOTP)
알아두면 좋은 Quick traits:
- Expiry: 코드는 약 30초간 지속되었다가 변경됩니다.
- Offline: 한 번 설정되면 앱은 인터넷 없이 코드를 생성합니다.
- Shared: 설정 시 저장된 같은 시드에 양측이 의존합니다.
- Open: 공개 RFC를 기반으로 하므로 많은 앱이 이를 지원합니다.
시간 기반 일회용 비밀번호(TOTP)는 어떻게 계산되나요?
내부적으로 TOTP는 시간 값을 입력으로 하는 단방향 함수를 사용합니다. 손으로 계산할 필요는 없지만 아이디어는 다음과 같습니다:
TOTP code = Truncate(HMAC SHA 1(secret, counter)) mod 10^digits counter = floor(unix time in seconds divided by step) step = 30 and digits = 6 in most apps Variations
주로 볼 수 있는 주요 유형
- HOTP: 시간과 무관하게 사용될 때마다 증가하는 카운터 기반 코드.
- Push: 앱 프롬프트를 승인하는 방식으로, 코드를 입력하지 않는 TOTP의 친척.
- Hardware: 화면에 코드를 보여주거나 키 체인에 저장된 소형 토큰.
- Multi: 여러 계정과 복구 옵션을 저장하는 앱.
TOTP은 가짜 사이트에 유효한 코드를 입력하면 당신을 보호해주지 못합니다. 피싱 위험에 대한 경각심을 유지하고 확인하기 전에 주소창을 항상 확인하세요.
Example
암호를 입력하러 암호화폐 거래소에 로그인하고, 비밀번호를 입력한 뒤 인증자 앱을 열어 30초 동안 만료되는 여섯 자리 TOTP를 입력합니다.
Fun Fact
TOTP는 OATH 커뮤니티에 의해 RFC 6238로 표준화되었으며, Google Authenticator와 수많은 앱 뒤의 조용한 핵심입니다. 롤렉스가 Reddit 스레드를 만나는 것처럼, 로그인 코드의 세계에서 그렇습니다.
Wrap-Up
TOTP를 시계가 맞춰진 작은 잠금처럼 생각하면, 로그인 도난을 더 어렵게 만들고 사용하기는 더 쉬워집니다.