흔히 보이는 인증 절차. 언제 어떻게 쓰는 걸까?
온라인 서비스를 이용하다보면 회원 가입, 또는 무언가를 구매하기 전에 인증 절차를 접할 수 있다.
대표적인 인증 방식으로는 본인인증과 점유인증이 있으며, 이 두 가지는 유사해 보이지만 각기 다른 목적과 역할을 가지고 있다. 이 포스팅에서는 본인인증과 점유인증이 무엇인지, 각 인증 방식이 어떤 상황에서 사용되는지 알아보고, 실무에서 인증 방식을 선택할 때 고려해야 할 점들을 살펴보고자 한다.
내가 00년생 홍길동 그사람 맞습니다요
본인인증은 사용자가 특정한 자신임을 증명하는 절차로, 주로 법적 신원 확인이 필요한 경우 사용된다. 본인인증은 사용자의 이름, 주민등록번호, 휴대폰 번호 등 개인의 신상정보를 기반으로 이루어진다.
- 휴대폰 본인인증: 본인 명의의 휴대폰 번호로 인증번호를 발송받아 이를 입력해 신원을 확인하는 방식
- 공동인증서(구 공인인증서): 개인이 발급받은 인증서를 통해 본인임을 증명하는 전자 서명 방식
외국 사이트들을 이용하다보면 딱히 이런 인증을 요구하지 않는데, 한국 서비스들은 유독 휴대폰번호 또는 PASS앱을 통한 본인인증을 많이 요구한다. 이는 법적 요구사항 때문인데,
정보통신망법: 서비스 제공자가 사용자의 신원을 정확히 확인할 의무가 있다고 명시
전자상거래법: 온라인 거래의 신뢰성을 높이기 위해 구매자의 신원 확인을 강화 (신분 도용이나 사기 거래 방지)
이러한 이유로, 온라인 쇼핑몰에서 상품을 구매하거나 금융 서비스를 이용할 때, 본인인증을 통해 사용자의 신원을 정확히 파악하는 것이다.
본인인증을 구현할 때는 대부분 외부 본인인증 서비스를 API로 연동해 사용한다. 주민등록번호 또는 휴대폰 번호 기반 본인확인 서비스가 대표적이다. 제공 회사 예시는 아래와 같다.
NICE평가정보
다날
한국모바일인증(KMC)
KG모빌리언스
등등
보통 사용자가 본인인증을 하면, 본인확인 서비스에서 회원사가 원하는 정보들을 리턴해준다.
이름, 성별, 생년월일, 내외국인여부, 이동통신사, 휴대폰번호, CI, DI
다만 이 정보들을 수집 및 활용하기 위해서는 개인정보 수집 및 활용동의에 반드시 기재해야 한다. 또한 CI같은 중요 정보는 본인확인 서비스에서 어떤 용도로 필요한 것인지에 대해 증빙을 요구하기도 한다.
장점
- 신원 확인의 정확도가 높다.
- 법적 요구사항을 충족하여 신뢰성을 확보할 수 있다.
- 본인인증을 통해 리턴받은 다른 정보들도 한번에 수집할 수 있다.
단점
- 개인정보 유출 위험이 존재한다.
- 복잡한 절차로 인해 사용자가 이탈할 수 있다.
- 본인확인 서비스 이용료가 발생한다. (이용량에 따라 금액 책정)
저 사람 맞아요.. 휴대폰도 있고 이메일도 있어요..
제가 이 번호(또는 이메일 주소)의 주인이 맞아요..!
점유인증은 사용자가 특정 기기나 정보를 실제로 소유하고 있는지를 확인하는 절차이다. 본인인증과는 달리, 사용자가 해당 기기를 물리적으로 가지고 있거나 접근할 수 있는지를 증명하는 방식이다.
너무 쉽게 가입해서 유령계정이 많아지는 것을 방지하거나, 2차인증을 통해 보안을 강화하는 수단으로 활용된다.
- SMS 인증: 문자메시지 또는 카카오톡으로 전송된 인증번호를 입력해, 해당 휴대폰번호의 소유권을 증명
- 이메일 인증: 이메일로 발송된 인증코드를 입력해, 해당 이메일 주소의 소유권을 증명
- OTP(One Time Password): 매번 새로운 비밀번호를 생성해 인증하는 방식으로, 모바일 앱이나 하드웨어 장치를 통해 사용
한국 서비스와는 달리, 외국에서는 가입할 때 이메일 주소만 확인하는 정도가 대다수인데, 그 이유는 다음과 같다.
▶ 법적 규제의 차이
외국에서는 본인인증을 법적으로 강제하지 않는 경우가 많다. 유럽이나 미국 같은 지역에서는 개인정보 보호법(GDPR, CCPA)을 통해 개인정보의 수집과 처리에 대한 규제를 하고 있지만, 한국처럼 사용자의 신원 확인을 필수로 요구하는 규정은 적다. 그 대신, 점유인증을 통해 사용자의 소유를 증명하는 방식이 많이 사용된다.
▶ 결제 방식의 차이
외국에서는 신용카드사나 결제 서비스(ex. 페이팔)에서 신원 확인 절차를 대체하는 경우가 많다. 이런 결제 서비스들은 자체적으로 사용자 보호 장치를 마련하고 있어, 별도의 본인인증 없이도 거래가 안전하게 이루어질 수 있다.
물론, 외국 서비스들에서도 신원 확인이 필요한 경우가 있다. 예를 들어 금융 서비스들에서는 KYC(Know Your Customer)라는 절차를 통해 사용자의 신원을 확인한다. (막 신분증을 들고 있는 셀카를 올려야 되는 곳들도 있음..) 하지만, 일반적인 전자상거래나 가입 시에는 한국처럼 강력한 본인인증을 요구하지는 않는다.
점유 인증을 서비스에 구현한다면 어떤 단계를 거쳐야 할지 간략하게 요약해보았다.
a. 인증 코드 생성
- 서버에서 임시 인증 코드를 생성한다.
- 이 코드는 일정 시간(ex. 5분)동안만 유효하며, 랜덤한 숫자나 문자로 구성한다.
b. 인증 코드 전송
- 생성된 인증 코드를 사용자의 휴대폰 번호 또는 이메일로 전송한다.
- SMS의 경우 SMS 전송 서비스 (Twilio, 카카오 알림톡 등)를 사용해 전송하고,
- 이메일의 경우 SMTP 서버 또는 이메일 전송 서비스를 통해 인증 코드를 보낸다.
c. 인증 코드 입력
- 사용자가 인증 코드를 입력하면, 유효한 코드인지 서버에서 검증한다.
d. 인증 처리
- 코드가 일치하고, 시간 내에 입력되었다면 성공으로 처리!
- 일치하지 않거나, 시간이 초과했다면 실패로 처리하고, 다시 시도할 수 있는 절차를 안내한다.
장점
- 비교적 간단한 인증 절차로 사용자의 부담이 적다.
단점
- SMS 가로채기 등 해킹에 취약할 수 있다.
- 기기 및 계정 소유 여부 외의 정보는 수집할 수 없다.
그러면 서비스에 인증을 도입하려고 할 때, 어떤 기준으로 본인인증과 점유인증을 선택해야 할까? 당연히 어떤 서비스냐에 따라 필요한 정보와 인증 범위가 다르겠지만, 아래와 같은 요소들을 추가로 생각해보아야 한다.
앞서 말했듯, 한국에서는 정보통신망법과 전자상거래법 등으로 인해 본인인증이 필수적인 경우가 있기 때문에 법적 요구사항을 먼저 체크해봐야 한다.
사용자에게 불필요한 인증을 시키면 사용자 경험이 나빠질 수 있다. 예를 들어, 점유인증 정도로 실제 사람인지만 체크해도 되는 부분에서, (당장 필요하진 않지만 언젠가는 도움이 될 것이라는 이유만으로) 사용자에게 본인인증을 요구하게 된다면 사용자 이탈이 늘어날 것이다.
외부 인증 서비스를 도입한다면 추가적인 비용이 발생할 수 있다. 본인확인 서비스 API나 SMS/카카오 알림톡 발송 서비스는 그 자체가 엄청 비싼 서비스는 아니긴 하지만... 비용이 발생하기 때문에 도입 시 반드시 고려되어야 할 점이다. 서비스의 규모와 요구사항에 맞춰 적절한 리소스를 배분해야 하기 때문이다.
(또한 인증횟수에 제한을 두어 비용이 마구 발생하는 것을 방지하는 것도 기억해두어야 한다. )
본인인증과 점유인증의 차이점과, 둘 중 하나를 선택할 때 어떤 점들을 고려하면 좋은지 살펴보았다. 현재 내가 맡고 있는 서비스에서도 인증 방식을 개선하는 작업을 진행 중인데, 그간 알고 있던 내용들을 기록상 남겨둔다. 이 글이 비슷한 고민을 하고 있는 분들에게 조금이라도 도움이 되길 바란다.