패스워드 없는 로그인. 인증의 연쇄
패스워드 없는 간편한 로그인은 근본적으로 다른 누군가가 이미 수행한 로그인에 무임승차합니다.
지금 읽고 계신 Thinking Machine 뉴스레터는 예전에 블로그를 통해 공개했던 글은 제한 없이 읽을 수 있지만 지난 4월 말 첫 뉴스레터를 보낸 시점부터 작성한 글은 끝까지 읽기 위해 뉴스레터 가입을 요구하고 있습니다. 이 뉴스레터와 블로그 웹사이트를 운영하는데는 고스트라는 서비스를 사용하고 있는데 고스트는 사용자 등록에 이메일 주소를 요구할 뿐 패스워드를 설정하게 하지 않습니다. 사실 패스워드를 받는 순간부터 이를 안전하게 저장하고 매 인증 때마다 사용자가 입력한 패스워드를 인터넷을 통해 안전하게 전송 받아 안전하게 저장해 둔 패스워드와 비교해 올바른 패스워드를 제출했는지 확인한 다음에야 로그인 시킬 수 있습니다. 또 패스워드 만으로는 충분히 안전하지 않을 수 있으니 2FA를 제공하면 더 좋은데 이 모든 인증 수단은 상당한 기술력을 들여 신중하게 만들어야 하기 때문에 함부로 이를 구축할 생각을 하기 어렵습니다.
아마도 그런 인증 시스템 구축 비용을 줄이기 위해 고스트는 등록과 로그인에 오직 이메일 주소에만 의존하는데 간단히 등록, 로그인 양쪽 모두 이메일 주소만 넣으면 인증 문자열을 포함한 웹 주소를 메일을 통해 발송하고 이 링크를 통해 접속하면 로그인 된 상태를 만들어 줍니다. 서비스를 만드는 입장에서는 패스워드를 안전하게 보관할 고민을 하지 않아도 되고 사용자 입장에서는 그렇잖아도 모든 장소마다 다른 패스워드를 사용하라는 보안 규칙 때문에 골머리를 앓는 마당에 기억해야 할 또 다른 패스워드를 만들지 않아도 됩니다. 고스트 로그인 과정은 로그인 폼에 이메일을 입력하고 서브밋 하면 몇 초 안에 메일이 도착해 링크를 클릭해 바로 로그인 할 수 있어 나쁘지 않습니다.
한번은 이런 오직 이메일을 사용한 인증 과정을 곰곰이 생각해 보다가 이메일 만을 사용한 인증 절차는 편리하지만 근본적으로 서비스에 필요한 인증을 서비스 자기 자신이 수행하지 않는다는 느낌을 받았습니다. 가령 이메일을 통한 인증은 이메일 주소로 메일을 보내고 사용자가 이 메일 주소로 발송된 메일에 접근할 수 있는 권한이 있는지 확인하는 것과 같습니다. 개인 이메일은 구글 워크스페이스를 통해 사용하고 있는데 고스트 로그인에 개인 이메일을 제출해 로그인 한다는 의미는 제 구글 계정에 이메일 주소, 패스워드, 2FA를 모두 제시해 메일을 읽을 수 있는 상태임을 증명해야 합니다. 고스트 로그인 과정에는 구글 로그인 과정이 완전히 생략되기는 했지만 이메일을 통한 패스워드 없는 로그인 과정에는 인증 절차를 다른 서비스에 의존한다고 볼 수 있습니다.
한번은 인증 절차를 직접 개발하는 대신 외부 인증 서비스를 활용해 보려고 제품을 검토하는데 한 제품이 패스워드 없는 로그인을 강력하게 내세우며 온보딩 과정에 장애물이 없음을 어필하고 있었습니다. 그래서 어떻게 패스워드 없이 로그인하고 또 온보딩 할 수 있는지 문의했는데 너무 당연하게 그냥 이메일 주소만 넣으면 끝이라는 답변을 받습니다. 게임에 로그인 하기 위한 인증 절차는 현대에 고객이 투입한 시간과 비용을 제어할 권한을 부여하는 아주 중요한 절차입니다. 하지만 이 절차를 안전하게 만들기는 아주 어려워 앞에서 소개한 대로 직접 만들기 보다는 구글이나 페이스북 같은 다른 로그인 서비스 제공 업체의 인증 시스템을 경유하도록 하곤 합니다. 하지만 이렇게 개발하면 회사가 직접 고객들을 관리할 수 없기 때문에 미래에 비즈니스 관점의 문제가 생길 가능성이 없지 않습니다.
귀찮은 절차 없는 온보딩, 다시 말하면 이메일 주소만 입력하면 끝나는 온보딩 과정을 다시 떠올려 보다가 근본적으로 이런 인증 체계는 사실 다른 누군가가 개발한 인증 절차와 시스템을 그대로 사용하는 일종의 무임승차가 아닌가 하는 생각을 해봤습니다. 이메일 로그인 절차로 돌아가 생각해봅시다. 고스트에 로그인 할 때 이메일을 입력하면 이 주소로 인증 문자열이 포함된 주소가 도착하고 이 주소를 클릭하면 고스트는 제가 이 메일에 접근할 수 있다고 판단하고 저를 로그인 시켜 줍니다. 그런데 고스트로부터 발송된 로그인 주소를 포함한 메일을 읽기 위해서는 구글에 이메일, 패스워드, 2FA를 제공해서 로그인을 해야 했습니다.
여기서 조금 더 나아가 처음에 구글 계정을 생성할 때 구글은 직접 이메일 서비스를 제공했고 이후 구글 자기 자신이 런칭하는 여러 서비스에 구글 계정 로그인을 요구했습니다. 즉 초기에 구글 계정을 생성할 때 구글은 사용자들에게 직접 이메일을 제공해 별도의 인증 수단을 요구하지 않고 계정을 생성할 수 있게 했습니다. 즉 이 시점까지만 놓고 보면 구글은 스스로 사용자를 인증하는 역할을 수행하고 있다고 볼 수 있습니다.
그런데 현대에 구글 계정을 새로 만들려면 전화번호를 제출해야 합니다. 다른 나라에서는 어떨지 모르겠지만 적어도 한국에서 새 구글 계정을 만들기 위해서는 메시지를 받을 수 있는 한국 전화번호를 제출해야만 하고 전화번호 없이는 아예 계정을 만들 수 없습니다. 새 구글 계정을 생성하는 과정에서 전화번호를 제출하면 이메일 인증과 비슷한 방식으로 전화번호로 메시지를 보낸 다음 이 메시지에 포함된 숫자를 입력해야 다음 단계로 진행할 수 있습니다. 구글은 처음에 자체 메일 서비스를 통해 스스로 사용자를 인증했지만 현대에는 전화번호를 요구해 전화 회사와 전화기 제조사의 인증 체계에 기대고 있다고 볼 수 있습니다.
이번에는 여기서 한 단계 더 나아가 제가 구글이 전송한 메시지를 받기 위해 필요한 절차를 생각해 봅시다. 먼저 최초에 전화 회사에 가입하기 위해 전화 회사 대리점에 찾아갑니다. 전화 회사에 가입하기 위해서는 올바른 정보가 기입된 국가가 인증한 신분증을 제시해야 하고 형식적으로나마 가입 과정을 수행하는 직원은 신분증의 사진과 이 신분증을 제시한 사람이 같은 사람임을 확인해야 합니다. 다음으로 개인 정보를 입력 받아 가입 절차를 마치면 전화 기계를 전화 회사의 네트워크에 등록해 전화번호로 메시지를 받을 수 있게 됩니다.
그런데 신분증을 제시하고 전화 회사에 가입했다고 해서 바로 구글이 전송한 인증 메시지를 받을 수 있지 않습니다. 이번에는 전화 기계 제조사의 인증이 동시에 필요한데 아이폰을 사용하는 사람 입장에서 애플 계정이 필요합니다. 현대에 새 애플 계정을 만들기 위해서는 기존에 사용하던 이메일 주소가 필요하고 패스워드를 생성해 가입해야 합니다. 애플 스스로도 구글과 마찬가지로 이메일 서비스를 제공해 다른 서비스에 의존하지 않고 스스로 이메일 인증을 수행할 수 있지만 여기서 그치지 않고 계정을 생성할 때 유효한 신용카드 또는 체크카드 번호를 요구합니다. 이 말은 애플 계정을 만들기 위해서는 기존에 거래하던 은행이나 카드회사의 인증 체계에 의존한다는 의미입니다.
어떻게든 애플 계정을 만들고 아이폰에 생체정보를 등록해 아이폰을 언락 할 수 있게 만들면 이제 구글이 전송한 메시지를 받을 수 있습니다. 구글로부터 인증 메시지 하나를 받기 위해 전화 회사에 신분증을 제출해야 했고 전화 기계 제조사에 은행 또는 카드회사에 등록된 카드번호를 제출해야 했습니다. 구글 계정을 만들기 위해 인증 메시지를 받아 제출하는 과정은 단순히 메시지를 받는데 그치지 않고 이전에 이미 수행된 신분증 확인, 은행이나 카드회사의 인증 과정이 올바르게 수행된 상태를 요구하는 것이라고 볼 수 있으며 또 다시 말하면 이런 기존에 이미 수행된 인증에 의존하고 있다고 볼 수 있습니다.
복잡하게 꽤 멀리 온 것 같지만 아직 끝나지 않았습니다. 이번에는 은행에 계좌를 만드는 과정을 생각해봅시다. 현대에 은행에 계좌를 만들려면 전화 회사에 가입할 때와 비슷하게 신분증이 필요합니다. 이번에도 형식적으로나마 가입 과정을 진행하는 직원이 신분증의 사진과 신분증을 들고 온 사람을 비교해 같은 사람인지 판단한 다음 가입 절차를 진행하게 됩니다. 이번에도 전화 회사에 가입할 때와 비슷하게 여러 가지 개인 정보를 제출한 다음 계좌를 만들 수 있습니다. 체크카드는 계좌를 만들며 수행한 인증에 기반해 발급 받을 수 있습니다. 신용카드는 이와 비슷하지만 여기에 수입 증명 과정이 추가되는데 수입 증명을 위해서는 주로 회사로부터 재직증명서를 발급 받아 제출해야 하고 재직증명서를 발급 받기 위해서는 입사할 때 사대보험 가입을 위해 주민등록 등본을 제출해야 합니다. 다시 주민등록 등본을 발급 받으려면 신분증이 필요한데 이 과정은 뒤에서 설명하겠습니다.
슬슬 지루해지고 있지만 아직 끝까지 오지 못했는데 이번에는 아까 전화 회사에 가입할 때, 그리고 은행이나 카드 회사에 가입할 때 제출한 신분증을 어떻게 발급 받았는지 생각해보기로 합니다. 과거를 돌이켜 보면 고등학교에 다니던 어느 날 왜 그날은 집에 있었는지 잘 기억 나지 않지만 낮에 자다가 일어나 동사무소에 가서 의료보험증을 보여준 다음 동사무소에 있던 사진 찍는 기계로 사진을 찍고 또 지문 찍는 기계로 열 손가락 지문을 찍고 또 이름과 주민등록번호 따위를 기록하고 주민등록증을 발급 받았습니다. 그 때 들고 간 의료보험증에는 제 이름과 주민등록번호가 기입 되어 있었는데 이는 부모님이 의료보험료를 납부하며 저를 피부양자에 등록했기 때문입니다. 그래서 주민등록증을 발급 받는 절차는 크게 의료보험증을 통해 개인 증명을 하고 이 증명을 요청한 개인이 출생 등록 되어 있는지 확인하는 절차를 거치게 됩니다.
이제 다 왔습니다. 마지막으로 제가 의료보험증에 부모님의 피부양자로 등재되기 위해서는 출생 신고 과정을 거쳐 주민등록번호가 부여되어야 하고 출생 신고를 하려면 부모님들 중 적어도 한 분이 그 이전에 그분들의 부모님들의 유효한 인증에 기반한 신분증을 제시할 수 있어야 합니다. 한국에 주민등록 제도가 도입된 이후 개인의 인증은 근본적으로 그 개인의 이전 세대가 이미 수행한 인증에 기반해 수행 되고 있다고 볼 수 있습니다.
지금까지 길게 나열한 절차를 이메일 주소를 통해 고스트에 로그인 하는 과정이 어떤 의미를 가지는지 생각해 보겠습니다. 태초에 이미 국가에 인증을 받은 상태인 부모님 중 적어도 한 분의 출생신고에 의해 제가 주민등록 시스템에 등재됩니다. 출생 등록에 기반해 의료보험증의 피부양자 란에 제 이름과 주민등록번호가 등재됩니다. 이어서 의료보험증에 기반해 사진과 지문을 등록해 주민등록증을 발급 받습니다. 주민등록증을 제시하고 전화 회사에 가입합니다. 주민등록증을 제시하고 주민등록 등본을 발급 받아 회사에 제출합니다. 회사로부터 재직증명서를 발급 받은 다음 주민등록증과 함께 제출해 신용카드 회사에 가입합니다. 구글에 전화번호를 제출하고 이메일 주소를 생성합니다. 애플에 이메일 주소와 전화번호를 제출해 애플 계정을 생성합니다. 그리고 아이폰에 애플 계정으로 로그인 한 다음 생체정보를 등록해 아이폰을 언락할 수 있게 만듭니다. 이제 고스트에 이메일 주소를 제출합니다. 구글 워크스페이스 이메일 계정으로 이메일이 전송됩니다. 생체정보에 기반해 아이폰을 언락해 제 이메일 주소로 도착한 이메일에 포함된 링크를 터치합니다. 고스트에 로그인 됩니다.
이런 패스워드 없는 로그인 절차는 겉보기에는 오직 이메일 주소나 전화번호를 입력하는 폼 하나만을 보여주면 되니 간단해 보이고 또 실제로 사용하기에도 그리 나쁘지 않습니다. 하지만 이런 단순한 인증 시스템은 간편한 인증의 근본에서 소개한 적 있는 이미 다른 누군가가 수행한 인증에 일종의 무임승차를 하는 행동이라고 해석할 수 있다고 생각합니다. 또한 이런 인증의 연쇄는 근본적으로 저 자신의 이전 세대가 수행한 인증에 기반하며 주민등록 제도가 도입된 이레 단순히 이메일 주소를 입력하는 로그인 방식에서조차 이 길고 복잡한 인증의 연쇄를 요구하고 있다고 볼 수 있습니다.
결론. 현대에 와서야 블록체인이라는 개념이 널리 활용되는 것처럼 보이지만 실은 패스워드 없이 이메일이나 전화번호를 통해 로그인 하는 시스템조차 자신의 이전 세대의 인증으로부터 시작된 여러 가지 인증의 연쇄, 인증의 체인을 통하고 있습니다. 간편한 인증은 다른 누군가가 이미 수행한 인증에 기반하며 이 인증의 근원을 거슬러 올라가면 이전 세대, 그리고 국가를 운영하는 근본이 되는 주민등록제도가 튀어나옵니다. 간편한 인증은 결코 간편하지 않습니다. 누군가 이미 수행한 인증을 재확인할 뿐입니다.