해시/암호화

TOTP Generator/Verifier

시간 기반 일회용 비밀번호(TOTP, RFC 6238) — 시크릿으로 현재 코드를 생성하고, 시계 오차를 허용하며 입력된 코드를 검증합니다.

------


                    

TOTP (Time-based One-Time Password, RFC 6238) is a two-factor authentication algorithm that generates a one-time code from a secret and the current time. It's exactly what runs under the hood in Google Authenticator, Authy, and similar apps.

How to use it

Common uses

Things to keep in mind

A TOTP code is only valid for a short window (usually 30 seconds) — that time limit is the main protection, not the secret alone.

Code accuracy depends directly on the device's clock being synced; a noticeable clock drift is the most common cause of rejected 2FA codes.

이 도구에 대한 아티클: TOTP: 인증 앱의 일회용 코드는 어떻게 작동하는가

자주 묻는 질문

생성된 코드가 왜 이렇게 빨리 만료되나요?

TOTP 코드는 시간 기반입니다 — 기본적으로 현재 유닉스 시간과 공유 비밀로 계산되어 30초마다 갱신됩니다. 이 짧은 창은 유출된 코드가 유용하게 남아 있는 시간을 제한합니다.

기기의 시계가 동기화되지 않으면 어떻게 되나요?

TOTP는 양쪽이 현재 시간에 대체로 동의한다는 것에 의존합니다. 대부분의 인증 앱과 서버는 약간의 시계 오차(보통 한 타임 스텝)를 허용하지만, 더 큰 오차는 유효한 코드가 거부되게 만듭니다.

여기서 코드를 생성할 때 제 비밀 키가 어딘가로 전송되나요?

아니요. TOTP 코드는 브라우저 내에서 완전히 계산됩니다 — 비밀 키는 기기를 벗어나지 않습니다.

TOTP는 피싱을 막아주나요?

완전히는 아닙니다. 피해자가 가짜 사이트에 비밀번호와 현재 TOTP 코드를 입력하면, 공격자는 코드가 유효한 동안 두 값을 즉시 실제 사이트에 사용할 수 있습니다. 이런 실시간 공격을 막는 것은 FIDO2/WebAuthn 표준의 하드웨어 키뿐입니다.

서버가 현재 시간 구간뿐 아니라 이전 구간도 받아주는 이유는 무엇인가요?

휴대폰에서 코드가 생성되는 시점과 서버가 이를 받아 확인하는 시점 사이의 약간의 네트워크 지연을 보완하기 위해서입니다. 이런 여유가 없다면 몇 초의 일반적인 지연만으로도 정상적인 코드가 거부될 수 있습니다.

아티클: 해시/암호화

Hash Generator: MD5, SHA-1, SHA-256은 서로 어떻게 다른가

MD5가 아직도 파일 무결성 검증에는 쓰이지만 비밀번호에는 쓰이지 않는 이유.

Checksum Verifier: 파일이 손상되지 않았는지 확인하는 방법

일치하는 체크섬이 파일의 무결성은 확인해주지만 누가 만들었는지는 확인해주지 않는 이유.

HMAC: 키가 있는 해시는 일반 해시와 어떻게 다른가

일반 SHA-256이 메시지 위변조를 막지 못하지만 HMAC은 막을 수 있는 이유.

Bcrypt: 비밀번호를 빠르게가 아니라 느리게 해시하는 이유

빠른 SHA-256이 비밀번호에는 나쁜 선택이고, 느린 bcrypt가 올바른 선택인 이유.

UUID: 거의 절대 중복되지 않는 식별자는 어떻게 만들어지는가

UUID v4를 수백만 대의 기계에서 충돌 위험 없이 독립적으로 생성할 수 있는 이유.

비밀번호 생성기: 비밀번호를 진짜로 강하게 만드는 것

사전 단어로 만든 긴 비밀번호가 기호와 숫자가 든 짧은 비밀번호보다 강한 이유.

AES: 대칭 암호화는 어떻게 동작하는가

AES에서 같은 키가 데이터를 암호화하고 복호화하는 이유, 그리고 이것이 비대칭 암호화와 다른 점.

Argon2: 이 알고리즘이 비밀번호 해싱 경진대회에서 우승한 이유

Argon2가 오래된 비밀번호 해싱 알고리즘보다 GPU를 이용한 공격을 더 잘 방어하는 방법.

Scrypt: 이 알고리즘이 왜 그렇게 많은 메모리를 필요로 하는가

scrypt가 ASIC 장치에서의 크래킹을 어렵게 만들기 위해 일부러 많은 메모리를 요구하는 이유.

PBKDF2: 가장 오래된 키 스트레칭 표준

PBKDF2의 권장 반복 횟수가 매년 늘어나는 이유.

X.509: SSL 인증서 안에는 무엇이 들어있는가

초록색 자물쇠를 보여주기 전에 브라우저가 사이트 인증서에서 정확히 무엇을 확인하는지.

PGP: 공개 키와 개인 키 암호화는 어떻게 작동하는가

PGP 공개 키는 자유롭게 공유할 수 있지만 개인 키는 절대 공유해서는 안 되는 이유.