LINE Pay의 ‘Know Your Customer(KYC)’

LINE DEVELOPER DAY 2020에서 백누리 님이 발표하신 How to Know Your Customer (KYC) in LINE Pay 세션 내용을 옮긴 글입니다.

안녕하세요. LINE Fintech App Dev 팀에서 근무하는 Android 개발자 백누리입니다. 저는 LINE 내부의 Pay 서비스와 LINE Pay 앱을 개발하고 있으며, eKYC를 포함한 KYC와 웹 앱 지원을 주 업무로 담당하고 있습니다. 이번 글에서는 LINE Pay에서 ‘Know Your Customer(이하 KYC)’를 어떻게 진행하는지 공유하려고 하는데요. 먼저 KYC가 무엇인지 알아보고 LINE Pay의 eKYC에 대한 모든 것과 심사 경향, 앞으로의 계획 순으로 말씀드리겠습니다.

 

KYC와 eKYC

KYC는 서류를 통해 개인을 특정할 수 있는 정보를 확인하는 신원 확인과, 신원 확인을 진행하는 사람이 정말 본인이 맞는지를 확인하는 본인 인증, 이렇게 두 가지 과정으로 나누어 진행합니다. 고객을 정확히 식별해 부정행위를 최소화해야 하는 금융 서비스에서는 계정을 생성하거나 계좌를 개설할 때 필수적으로 진행하는 과정입니다. KYC는 자금 세탁 방지와 테러 확산 방지를 위한 수단으로써 각 나라마다 법률에 의거해 요구 사항이 정해져 있습니다. eKYC는 ‘Electronic KYC’의 약자로 오프라인이 아닌 온라인으로 진행하는 KYC를 의미합니다. LINE Pay에서는 기존에 제공하던 은행 연동 방식의 KYC와 함께 온라인에서도 본인 인증을 진행할 수 있는 eKYC도 추가로 제공하고 있습니다.

 

LINE Pay의 eKYC

그럼 LINE Pay의 eKYC 진행 흐름에 대해 간단히 설명하겠습니다. 사용자가 본인 인증 수단을 선택하는 화면으로 들어가 본인이 원하는 eKYC 수단을 선택하면 여러 과제가 제시됩니다. 사용자가 제시된 모든 과제를 수행한 뒤 신청을 완료하면 별도 심사를 거쳐 승인하거나 거절하며, 승인된 경우에만 KYC가 완료되는 정책입니다.

최신 버전의 eKYC 데모를 보며 상세 진행 흐름을 설명하겠습니다.

LINE Pay 설정에서 본인 확인 버튼을 눌러 휴대폰으로 인증을 선택하고 약관에 동의하면 eKYC 가이드 화면이 나타납니다. 각 단계별 과제에 대한 안내를 확인한 뒤 시작하기 버튼을 누르면 신분증 촬영이 시작됩니다. 사용할 신분증을 선택하면 앞면 촬영부터 시작해서 측면 촬영, 뒷면 촬영이 진행됩니다. 얼굴 촬영 단계에서는 얼굴 정면 촬영과 움직임 촬영이 진행되고, 이 단계를 통과하면 마지막으로 본인 정보를 입력합니다. 사용자가 본인이 입력한 정보를 한 번 더 확인하고 나면 신청이 완료됩니다. 신청 후 심사 결과는 LINE 메시지로 전달하고 있습니다. eKYC 진행 흐름이 대략 파악되셨나요? 그럼 각각의 과제에 대해서 좀 더 자세하게 알아보겠습니다.

 

신분증 촬영 

eKYC에 사용할 신분증은 기재된 6가지 종류에서 선택할 수 있습니다. 영상에서 보신 것처럼 신분증 앞면과 측면, 뒷면을 전부 촬영해야 하는데요. 신분증 측면은 신분증의 위조와 변조 여부를 판단하는 중요한 수단이 되며, 신분증의 두께와 얼굴, 주소 등의 정보를 모두 확인할 수 있도록 촬영해야 합니다.

 

얼굴 촬영

다음으로 얼굴 정면을 촬영합니다. 촬영한 얼굴은 신분증에서 인식한 얼굴과 비교합니다. 신청자 본인의 신분증이 맞는지 확인하는 본인 인증 과정입니다.

 

LIVENESS

정면 촬영 후에는 얼굴의 움직임을 촬영하는데요. 이를 ‘LIVENESS’라고 칭하겠습니다. LIVENESS에서는 눈 감기와 얼굴 돌리기 등 총 8가지의 과제 중 2가지 과제가 무작위로 제시됩니다. 사용자가 과제를 수행하는 것을 통해 사진이나 영상이 아닌 실제 얼굴로 eKYC를 시도하고 있는지를 판단합니다.

 

사용자 정보 입력

마지막으로 사용자 정보를 입력합니다. 성명과 생년월일, 주소는 물론 직업과 사용 목적도 필수로 입력해야 합니다.

 

외부 SDK를 이용했던 초기 eKYC

2019년 5월에 eKYC를 처음 도입할 때는 외부 회사의 SDK를 이용했습니다. 당시의 eKYC는 아래와 같이 본인 정보를 먼저 입력한 뒤 신분증 촬영과 얼굴 촬영 및 LIVENESS를 진행하고 마지막으로 신분증을 들고 얼굴이 보이게 동영상을 촬영하는 순서였습니다. 

초기 eKYC도 법률적 요구 사항을 만족하도록 신원 확인과 본인 인증을 모두 진행하는 것으로 구현했지만, 뒤에서 설명드릴 몇몇 제약 사항 때문에 만족할 만한 심사 결과를 얻지 못했습니다. 이에 저희는 1년 정도 서비스하면서 느꼈던 아쉬움을 LINE CLOVA AI 기술을 활용해 개선하게 되었습니다.

 

개선하기 위해 LINE CLOVA AI 기술 도입

저희가 활용한 CLOVA 기술은 문자 인식 기술인 CLOVA OCR과 얼굴 인식 기술인 CLOVA Face입니다. CLOVA와 협업하면서 개선한 부분 중 중요한 부분을 공유하겠습니다.

 

신분증 인식 및 검증 기능 추가

먼저 CardDetector SDK와 CLOVA OCR 기능을 활용한 신분증 인식 및 검증 기능을 추가했습니다. 기존에 이용했던 외부 SDK에서는 SDK 내에 정해져 있는 특정 항목에 대해서만 검증이 진행됐습니다. 그런데 서비스 릴리스 후 실제 데이터를 확인해 보니 얼굴 사진이나 이용할 수 없는 신분증을 이용한 심사 신청이 많이 들어왔고, 그로 인해 전체적인 심사 과정에서 어려움을 겪게 되었습니다.

이런 문제를 해결하기 위해 CardDetector SDK를 활용해 카드 모양을 감지하면 자동으로 촬영되도록 변경했습니다. 또한 촬영된 이미지를 서버에 업로드하면 서버에서 CLOVA OCR 기술을 활용해 신분증에 기재된 정보를 확인하는 방식으로 변경했습니다. 이를 통해 기존에 문제가 됐던 얼굴만 보이는 사진이나 유효기간이 지난 신분증 등을 미리 걸러내도록 개선할 수 있었습니다.

아래 왼쪽 첫 번째 이미지가 외부 SDK를 사용했을 때의 신분증 앞면을 촬영하는 화면입니다. 흰색 영역에 얼굴만 크게 나오게 촬영하더라도 사용자가 OK를 누르면 다음 단계로 넘어가는 것이 가능했습니다. 오른쪽에 개선된 화면을 보시면 얼굴만 보이도록 촬영하거나 유효기간을 확인할 수 없는 신분증을 촬영한 경우 에러 화면이 나타나서 다시 촬영해야 합니다. 모든 정보가 정상이라고 판단됐을 때만 다음 단계로 넘어갈 수 있습니다.

신분증 확인에 사용하는 CardDetector SDK의 샘플 동작을 보여드리겠습니다.

클라이언트는 CardDetector에 화면의 이미지와 인식 대상 영역의 프레임 정보를 넘깁니다. 해당 영역에 카드가 들어오면 SDK는 성공 여부에 함께 인식한 카드 이미지를 클라이언트로 넘겨줍니다. 영상에서는 인식 대상 영역의 프레임이 카드가 인식되었을 때는 파란색, 인식되지 않았을 때는 빨간색으로 설정되고 있으며, 우측 하단에 CardDetector에서 넘어온 카드 이미지가 보이고 있습니다.

 

카드 각도 인식 기능 추가

두 번째로 카드 각도 인식 기능을 추가했습니다. 아래 왼쪽 외부 SDK 화면에서 볼 수 있듯이 얼굴 아래에 신분증을 두고 동영상 촬영을 하는 기존 방식의 경우 사용자에게 안내가 정확히 전달되지 않아 신분증의 두께가 찍히지 않거나 앞면만 보이게 동영상을 촬영하는 사례가 많았습니다. 이를 개선하기 위해 두께를 촬영하기 위한 측면 촬영 단계에서 새로운 접근 방법을 시도했습니다. 촬영 화면에서 사용자가 신분증을 기울이면 CardDetector SDK를 통해 각도를 인식해서 측면 촬영이 되도록 변경해 두께를 확인할 수 있는 사진이 제출되도록 했습니다. 또한 CardDetector SDK를 통해 인식한 각도가 심사를 수행하는 관리자 측에서 인정하는 각도 범위에 포함됐을 때만 자동으로 촬영하는 방식을 적용해 관리자 측의 요구 사항도 반영했습니다. 

각도 인식 역시 CardDetector SDK 샘플 동작을 보여드리며 추가로 설명하겠습니다.

클라이언트는 SDK의 Card Angle Detector에 화면 이미지와 인식 대상 정보의 프레임 영역을 넘깁니다. Card Angle Detector는 대상 프레임의 연속 이미지를 분석해서 각도를 검출하며, 검출한 각도와 그 시점의 이미지를 클라이언트로 넘깁니다. 영상에서는 인식 대상 영역의 프레임이 각도가 인식됐을 때는 파란색, 인식되지 않았을 때는 빨간색으로 설정되며, 우측 상단에 Card Angle Detector에서 넘어온 각도 정보가 보입니다.

 

얼굴 인식 기능 강화

세 번째로 Face SDK와 CLOVA Face를 활용해 얼굴 인식 기능을 강화했습니다. 기본 SDK에서도 얼굴 인식 기능은 충분히 정확하게 제공되고 있었지만, SDK 구조 때문에 검증된 정보를 다른 단계나 서버에서 이용할 수 없었습니다. 이에 이미지에서 얼굴과 윤곽 정보를 인식하는 Face SDK를 활용해서 클라이언트에서는 인식한 얼굴을 검증이 필요한 단계에서 사용하고, 서버에서도 클라이언트에서 업로드된 이미지로 CLOVA Face를 이용한 검증을 진행해 검증의 정확도를 높이도록 개선했습니다.

얼굴 인식에 사용한 Face SDK 샘플 동작을 보여드리겠습니다.

SDK 내 Face Detector로 화면 이미지를 넘기면 얼굴이라고 인식한 영역을 Rect 형태로, 눈썹과 턱선 등의 윤곽 정보가 포인트 형태로 전달되며, 얼굴 기울이기와 얼굴 돌리기, 눈 감기 등의 동작 여부도 탐지합니다. 또한 얼굴과 얼굴을 비교해 동일한 인물인지 확인하고 이때 판단한 얼굴의 유사도를 클라이언트로 넘깁니다.

 

가이드와 에러 메시지 보완

마지막으로 가이드와 에러 메시지를 구체화했습니다. 진행 과정 전후로 안내 화면을 노출해 사용자가 정확한 크기로 촬영했는지 스스로 점검할 수 있게 했습니다. 또한 에러가 발생한 즉시 상세한 안내 메시지를 표시해 발생한 에러를 수정한 뒤 다시 시도해 신청을 완료할 수 있도록 만들었습니다.

저희가 사용한 CLOVA 기술에 대해서는 LINE CLOVA 공식 사이트의 eKYC 탭(참고)에도 상세하게 설명되어 있으니 참고하시기 바랍니다.

 

LINE CLOVA AI 기술 도입 후 결과

이와 같이 개선한 후 심사 결과는 어떻게 변했을까요? 결론부터 말씀드리면, 5월의 평균과 9월의 평균을 비교했을 때 승인율은 26% 상승했습니다. 정확한 수치는 대외비이기 때문에 변화한 비율로 안내드리는 점에 대해 양해 부탁드립니다. 

사실 LINE CLOVA를 이용한 eKYC를 도입하자마자 바로 승인율이 26% 상승한 것은 아닙니다. 6월에 집계한 통계에서는 오히려 승인율이 소폭 하락한 것을 보실 수 있습니다.

승인율이 기대와 다르게 나온 원인을 파악하기 위해 승인 거절 사유를 확인했는데요. 이미지에 신분증 전체가 보이지 않고 누락된 부분이 있다거나, 신분증 이미지가 흐리다거나, 신분증 측면 이미지에서 두께를 판별할 수 없다거나, 이 3가지가 승인 거절 사유의 대부분이었습니다.

 

신분증 일부가 누락된 이미지가 업로드되는 문제 개선

CardDetector SDK를 활용했는데도 왜 신분증 일부가 누락된 이미지가 업로드되는 현상이 발생했을까요? 원인은 CardDetector SDK에서 인식한 카드 이미지에 여백이 없어서 일부 영역의 이미지가 잘린 채로 업로드됐기 때문이었습니다. 예시를 살펴보겠습니다. 아래 오른쪽 사진을 보시면 신분증 좌측 상단 일부가 누락된 것을 확인할 수 있습니다.

이를 개선하기 위해 두 가지 방안을 적용했는데요. 먼저 촬영 화면에 가이드 이미지를 표시해서 사용자가 신분증 위치를 조절하도록 유도했습니다.

두 번째로 기존에는 CardDetector가 인식한 카드 이미지를 그대로 서버에 업로드했지만 카드를 인식한 시점의 인식 대상 영역의 이미지를 업로드하는 방식으로 변경해 신분증 이미지 영역을 확장했습니다.

위 두 가지 방안을 적용한 후 다시 릴리스한 결과 도입 첫 달에 비해 승인율이 13.2% 상승했고, 외부 SDK를 사용한 5월과 비교하면 12.3% 상승했습니다.

 

흐린 이미지가 업로드되는 문제 개선

다음으로 첨부된 이미지와 같이 신분증 이미지가 흐리다는 문제를 분석해 봤습니다. 문제의 원인은 카메라에 포커스가 잡히기 전에 CLOVA SDK로 카드 및 얼굴이 인식돼 흐린 이미지가 서버에 업로드된 것으로 추측했습니다.

저희는 해당 문제를 해결하기 위해 카메라 초기화가 완료된 뒤 일정 시간이 지난 후에 CLOVA SDK를 통한 탐지를 시작하도록 변경했고, CardDetector SDK에서도 대상 이미지가 흐린 경우 에러를 발생시켜 그에 맞는 메시지를 노출하고 사용자가 재시도할 수 있도록 안내했습니다.

 

두께를 확인할 수 없는 이미지가 업로드되는 문제 개선

마지막으로 신분증 측면이 촬영돼야 하는데 정면이 보이는 상태로 촬영된 경우나 측면 촬영 특성상 좌우가 잘려서 업로드되면서 신분증의 두께를 확인할 수 없는 이미지가 업로드되는 문제를 분석했습니다.

이 문제를 해결하기 위해, 물론 기존에도 셔터 버튼 근처에 이미 안내 문구가 존재했지만 추가로 프레임이 깜빡거리는 애니메이션을 넣어서 현재 자동으로 각도를 인식하고 있다는 것을 더욱 직관적으로 사용자가 알 수 있도록 안내했습니다.

또한 각도 인식 이후 서버에 업로드하는 이미지를 좌우로 확장했고, 하단의 셀프 체크 리스트를 더 쉽게 확인할 수 있도록 URL를 변경했습니다.

 

세 가지 문제 개선 후 승인율 26% 상승

위와 같이 출시 후 여러 번의 분석과 수정 과정을 거치며 승인율이 점점 상승했고, 지난 9월에는 외부 SDK를 사용한 5월과 비교해 앞서 말씀드린 대로 승인율이 26% 상승하는 긍정적인 결과를 얻을 수 있었습니다. 

 

향후 계획

저희는 이런 결과에 만족하지 않고 eKYC 승인율을 더욱 개선하기 위해 노력하고자 합니다.

먼저 업로드된 이미지뿐 아니라 이미지가 촬영되는 과정에서 획득한, 수치화할 수 있는 데이터를 함께 검토해서 승인이 거절된 사용자들의 데이터를 분석, 공통적으로 나타나는 현상이 있는지 찾을 계획입니다.

다음으로 본인 정보 입력 단계에서의 에러를 줄이고자 합니다. 앞서 말씀드린 CLOVA OCR 기술을 활용해 신분증에서 검출된 정보를 본인 정보 입력 화면에서 자동 입력해 주는 방식으로 사용자에게 편의를 제공하고 있는데요. OCR의 정확도를 높이면서 사용자가 자동으로 입력되지 않은 정보를 입력할 때 발생할 수 있는 실수를 최소화할 수 있는 방안을 찾고 있습니다.

마지막으로 안면 인식에서 안티 스푸핑(Anti-Spoofing) 정확도를 높이려고 합니다. 스푸핑은 불법으로 획득한 인물의 사진이나 영상으로 안면 인식을 시도하는 공격인데요. 대부분의 안면 인식 시스템에서 문제가 되고 있으며 스푸핑 기술이 점점 발전하면서 안티 스푸핑의 중요도도 더욱 높아지고 있습니다. 현재 eKYC의 경우 별도의 심사 과정을 진행하면서 사람이 직접 스푸핑 여부를 판단하고 있는데요. 신청 단계에서 바로 필터링되거나 심사에 참고할 수 있는 스푸핑 수치를 제공할 수 있다면 심사 시간을 더욱 단축할 수 있을 것이라고 생각합니다.

KYC 플랫폼에 대한 추가적인 계획도 수립하고 있습니다. 먼저 일본의 My Number Card 내에 기록된 전자 서명을 활용하는 JPKI를 KYC 수단에 추가해 간단하고 확실한 본인 확인을 추구하는 동시에 일본의 행정 서비스에 대한 대응을 적용하고자 합니다.

다음으로 포스트 코로나 시대가 도래한 만큼 민간 기업의 서비스나 지자체 공공영역 등 다양한 부분에서 KYC 기능을 필요로 하고 있는데요. 이를 LINE Pay의 eKYC를 사용해 진행할 수 있도록 플랫폼화하는 ‘LINE ID Passport’ 시스템을 준비하고 있습니다. 이를 통해 사용자 편의를 높이고 캐시리스 결제를 전제로 한 행정 서비스에 한걸음 더 다가갈 것으로 기대하고 있습니다.

 

마치며

이번 글에서는 LINE Pay에서 어떻게 KYC를 진행하고 있는지와 앞으로의 목표를 공유했습니다. 더 나은 KYC 서비스를 제공하기 위해 꾸준히 노력하겠으니 지금처럼 많은 관심 부탁드립니다. 아래에서 발표 영상도 확인하실 수 있습니다. 긴 글 읽어주셔서 감사합니다.