용어 사전
일회용 비밀번호(OTP)란? — TOTP/HOTP/SMS의 차이와 한계
일회용 비밀번호(OTP)는 한 번만·짧은 시간만 유효한 일회성 코드입니다. 인증 앱의 TOTP, 카운터식 HOTP, SMS 코드의 차이, 비밀번호 유출에 강한 이유, 그리고 중간자 피싱에는 돌파될 수 있다는 한계까지 방어 관점에서 설명합니다.
한 번만·일회성 — 그것이 일회용 비밀번호(OTP)입니다. 종류별 차이와, 의외로 알려지지 않은 한계(피싱에는 돌파될 수 있음)를 정리합니다(공격 절차는 싣지 않습니다).
종류: TOTP / HOTP / SMS-OTP
"일회성 코드"로 뭉뚱그려지기 쉽지만, 만들어지는 방식에 따라 3종류로 나뉩니다.
TOTP(시간 기반)
인증 앱이 비밀 씨앗 + 현재 시각으로부터 계산. 약 30초마다 바뀜. 오프라인에서 동작.
HOTP(카운터)
시각이 아니라 '횟수(카운터)'로 진행. 누를 때마다 다음 코드. 하드웨어 토큰 등에서 사용.
SMS-OTP
SMS로 코드를 전송. 간편하지만 SIM 스왑·중계에 약해 가장 취약한 방식.
어느 것이든 "한 번만·짧은 수명"이라는 성질은 같아서, 고정 비밀번호가 유출되어도 그 코드 자체는 재사용하기 어렵다는 것이 강점입니다. 특히 TOTP는 통신을 거치지 않고 앱 안에서 계산하므로, SMS 같은 가로채기 경로가 없습니다.
강점과 한계: 피싱에는 "넘겨줄 수 있다"
OTP는 고정 비밀번호의 약점을 보완하지만, 만능은 아닙니다. 결정적인 한계는 "사람이 코드를 읽고 입력한다"는 점에 있습니다.
OTP가 통하는 상황
- 비밀번호의 유출·재사용에 의한 탈취를 막음
- 훔쳐봐도 짧은 시간에 무효가 되어 재사용되기 어려움
- 인증 앱의 TOTP는 오프라인에서 동작하며 SMS보다 가로채기에 강함
OTP가 뚫리는 상황
- 중간자 피싱(AiTM): 가짜 사이트가 OTP를 진짜로 중계해 즉시 로그인
- SIM 스왑: 전화번호를 탈취해 SMS-OTP를 가로챔
- 근본 원인 = 코드를 사람이 가짜 사이트에 넘겨줄 수 있음(= 도메인에 묶이지 않음)
본 사이트의 견해: OTP는 경유지, 종점은 패스키
OTP는 "비밀번호만"에서 벗어나는 훌륭한 첫걸음입니다. 실제로 SMS든 TOTP든, 켜는 것만으로 탈취의 대부분은 멈춥니다. 다만 본 사이트는 OTP를 종점이 아니라 경유지로 자리매김합니다. 중간자 피싱이 현실의 위협인 이상, 최종 형태는 서명이 도메인에 묶여 원리적으로 가짜 사이트에 넘길 수 없는 패스키(FIDO2)입니다. 우선순위는 분명하며, 먼저 모든 계정에 OTP를 켜고, 왕국의 열쇠(이메일·도메인·결제)부터 순서대로 패스키로 끌어올립니다. "주의해서 가짜 사이트를 알아채는" 것에 의존하지 않는 것이 정도입니다.
다음으로 읽기
- 용어집: 2단계 인증(2FA)이란(OTP가 '두 번째 증명'으로 쓰이는 맥락) / 패스키란(OTP의 한계를 넘는 피싱 저항성)
- 용어집: 피싱이란(OTP를 중계하는 중간자 AiTM의 이해)
- 학습: MFA를 제대로 고르기(방식 선정을 실무에서)
FAQ
Q일회용 비밀번호와 일반 비밀번호는 무엇이 다른가요?
일반 비밀번호는 바꾸지 않는 한 계속 같아서(고정), 한 번 유출되면 변경할 때까지 악용될 수 있습니다. 일회용 비밀번호(OTP)는 한 번만·짧은 시간만 유효한 일회성이며, 쓰면 곧 무효가 됩니다. 그래서 훔쳐봐도 재사용되기 어려워 고정 비밀번호의 약점(유출·재사용)을 보완합니다. 많은 서비스에서 비밀번호에 '또 하나의 증명'으로 더하는 2단계 인증의 한 수단으로 쓰입니다.
QSMS로 받는 일회용 비밀번호는 안전한가요?
비밀번호만 쓰는 것보다는 확실히 강하지만, OTP 중에서는 가장 약한 부류입니다. SMS는 SIM 스왑(전화번호 탈취)으로 가로채이거나, 가짜 사이트가 중계하는 중간자 피싱으로 빼앗길 수 있습니다. 가능하면 인증 앱의 TOTP로, 더 중요한 계정은 패스키로 옮기는 것이 안전합니다.
Q인증 앱 코드는 왜 30초쯤마다 바뀌나요?
그것이 TOTP(시간 기반 일회용 비밀번호)이기 때문입니다. 앱과 서비스가 같은 비밀 씨앗(시크릿)과 현재 시각으로부터 같은 코드를 일정 간격(대개 30초)마다 계산합니다. 시간이 지나면 옛 코드는 무효가 되고 새 코드로 바뀝니다. 짧은 수명으로 만들어, 훔쳐봐도 쓸 수 있는 시간을 아주 짧게 억제하는 것입니다.