휴대폰 본인 확인 결과를 공급자 SDK, 서비스 계정 로직과 분리합니다.
휴대폰 OTP 인증은 사용자가 그 전화번호를 실제로 갖고 있는지를 수명이 짧은 일회용 코드로 확인합니다. 코드 발송과 검증은 채널 공급자에게 맡겨도 되지만, 번호 정규화·만료·시도 제한·검증 결과 계약은 공급자와 무관하게 유지해야 합니다.
예측하기 어렵고 수명이 짧은 코드를, 한 번만 쓸 수 있는 인증 도전으로 관리합니다.
전화번호를 국가 코드가 붙은 한 가지 형식으로 바꿔, 같은 번호를 다른 번호로 세지 않게 합니다.
공급자 응답을 그대로 넘기지 않고, 검증 시각과 전화번호를 담은 중립적인 결과로 돌려줍니다.
아래 증명은 글로 된 설명이 아닙니다. 버튼을 누르면 이 서버가 지금 직접 계산합니다.
6자리 코드는 짧아서 저장소가 유출되면 바로 추측할 수 있습니다. 그래서 원문 대신 digest만 저장하고, 전화번호도 용도별 가명으로만 남깁니다.
표준 문서에 실린 테스트 벡터를 그대로 넣어 같은 값이 나오는지 확인합니다.
6자리 코드는 추측할 수 있는 범위라서 시도 제한이 방어의 핵심입니다. 한도를 넘기면 진짜 코드도 통하지 않습니다. 코드를 가로채도 발급받은 번호가 아니면 검증되지 않습니다.
막아야 할 입력을 실제로 넣고 거부되는지 확인합니다.
규격 원문을 먼저 실었습니다. 사례는 이 분야에서 실제로 보안이 뚫린 일을 다룬 자료입니다.
SMS를 제한적으로만 인정하는 이유(SIM 스와프, PSTN 가로채기)가 나옵니다.
번호 정규화의 기준입니다. 같은 번호를 다르게 세지 않으려면 이 형식으로 맞춰야 합니다.
다음 단계
SMS 발송 adapter를 연결하고, 발송 실패·재전송·국가별 번호 정책을 소비 시스템에서 검증합니다.