현대에 개인의 인증정보를 안전하게 보관하는 유일한 방법
현대에 개인의 인증수단은 과거에 비해 너무나 중요하며 이를 안전하게 보관할 유일한 방법은 패스워드 관리 프로그램을 사용하는 것 뿐입니다.
현대에 온라인에서 자신을 증명할 수단을 안전하게 보관하는 것은 단순히 아이디와 패스워드를 잘 기억하는 것 이상으로 중요한 일입니다. 이전 시대에는 단순히 아이디와 패스워드를 정한 다음 이를 기억하기만 하면 온라인에서 생활하는데 큰 불편함은 없었을 겁니다. 오래된 서비스에서 아이디는 서비스에 노출되어 물리적으로 자신을 다른 사람들과 구분하는 계정 이름으로 사용될 뿐 아니라 서비스 상에서 다른 사람들과 나를 구분하는 방법으로도 사용됩니다. 패스워드는 기억할 수 있는 문자열로 정한 다음 이를 잘 기억하고 있으면 됐고 만약 패스워드를 잃어버리면 이메일, 전화번호 같은 다른 인증수단을 제시해 패스워드를 변경할 수 있었습니다.
그런데 이런 평화로운 세계는 같은 아이디와 같은 패스워드를 여러 서비스에 사용할 때 여러 서비스 중 어느 하나의 보안 수준이 낮아 이 정보가 노출되면 같은 아이디와 같은 패스워드를 사용하는 모든 서비스를 다른 사람이 로그인할 수 있는 상황에 처하게 됩니다. 이는 보안이 약한 서비스를 만든 사람이나 그 서비스의 보안을 뚫은 사람, 그로부터 얻은 정보를 악용하는 사람, 그리고 같은 아이디와 패스워드를 여러 서비스에 사용한 나 자신을 포함해 누구의 잘못이라고 정의하기는 어렵습니다. 그저 현대에 여러 온라인 서비스에 걸쳐 나 자신을 증명하는 방법에 아이디와 패스워드를 사용하는 방식 자체가 이미 시대에 어울리지 않게 낡고 있으며 이런 상황에 대응하는 적절한 인증 방법, 인증수단 관리 요령이 사용자들에게 충분히 교육 되지 않았기 때문입니다. 또한 지금으로는 그런 안전한 인증수단 관리 방법이 평균적인 사용자들에게 권고하기에는 지나치게 어렵기도 합니다. 사실상 평균적인 사용자들을 위한 안전한 인증수단 관리 방법은 없다고 보는 편이 올바릅니다.
이미 현대에 인증수단을 안전하게 관리하는 방법은 사용자 대부분이 알고 있고 이를 강제로 실천하고 있습니다. 가령 아이디와 패스워드 조합 대신 이메일과 패스워드 조합을 사용하고 이메일 역시 준 비밀에 가깝게 보관하고 이를 서비스에 노출하지 않음으로써 공격자 입장에서는 사실상 패스워드가 두 개인 상태에 가까워지고 있습니다. 또 서비스마다 같은 패스워드를 사용해서는 안된다는 규칙은 이를 실제로 지키기는 아주 어렵지만 전혀 사려 깊지 않게 만들어진 사이트들은 서로 다른 패스워드 규칙을 사용해 사실상 같은 패스워드를 여러 서비스에 걸쳐 사용하기 불가능하게 만들었습니다. 이유를 전혀 이해할 수 없지만 어떤 사이트는 패스워드 길이를 12글자 까지만, 또 다른 사이트는 16글자 까지만 허용하고 또 어떤 사이트는 특수문자 사용을 강제하거나 영문 대소문자 구분 사용을 강제하거나 숫자 사용을 강제하며 특정 데이터베이스 쿼리 키워드 사용을 금지하고 특정 특수문자 사용을 금지하는 등 다양한 제약 덕분에 이전 시대처럼 같은 패스워드를 다시 사용하기 아주 어려워졌습니다. 덕분에 이전 시대에 비해 패스워드를 복구하는데 필요한 이메일과 전화번호를 잘 관리해야만 하게 됐지만요.
하지만 이것 만으로는 부족합니다. 근본적으로 아이디와 패스워드에 기반한 인증 방식은 고대에 하나 혹은 아주 적은 서비스를 사용하는데만 유효했습니다. 가령 고대에 인터넷 서비스는 극 소수였고 여기 한 번 로그인 하면 그 안에서는 다시 로그인을 요구하지 않았습니다. 그래서 아이디 하나와 패스워드 하나만 기억하면 되며 머릿속에 기억한 문자열은 서기 2023년 현재 기술로는 꺼낼 방법이 많지 않습니다. 불가능하지는 않은데 코리안 구글을 검색해 이미지 검색 결과를 보면 힌트를 얻을 수 있습니다. 머릿속에 저장한 패스워드는 이 방법을 제외하면 꽤 안전하기는 하지만 현대에는 그런 아이디와 패스워드 조합을 요구하는 서비스가 너무 많기 대문에 평균적인 인간의 한정된 지능으로는 서로 다른 아이디와 패스워드 조합 수 십 개를 기억하기는 불가능합니다.
이제 현대에는 패스키 같은 기계 기반의 인증 방식을 도입하는 추세이지만 이 방식 역시 기계에 대한 권한을 얻기 위해서는 또 다른 인증 방식이 필요하고 또 이런 최신 인증 방식이 모든 서비스에 도입되기 까지는 억겁의 세월이 필요할 것이 분명하기 때문에 앞으로 수 십 년 동안은 패스워드에 기반한 로그인 환경이 유지될 겁니다. 패스키를 사용하더라도 이런 간편한 인증 방식은 근본적으로 이전에 이루어진 인증에 무임승차하는 방식일 뿐이며 패스워드 없는 로그인. 인증의 연쇄에서 무임승차 과정과 체계를 설명한 적이 있고 아래에 비슷한 방식으로 패스키의 무임승차 과정을 나타내 보았습니다. 이런 상황에서 패스워드 없는 인증 방식이 대중화 되기를 기다리기 보다는 앞으로 오랜 세월에 걸쳐 남아 있을 아이디와 패스워드 조합의 인증 방식을 더 안전하게 유지하는 방법을 고민하는 편이 현실적이라고 생각합니다.
한번은 타임라인에 지나가는 Portable Secret - 암호를 안전하게 보관하기라는 글을 보고 portable-secret이라는 솔루션을 봤는데 누구나 편리하게 사용할 수 있는 방법이라고 하기에는 너무 복잡하고 또 너무 허술해 보였습니다. 사실 html 페이지에 암호화 하려는 데이터를 넣고 이를 브라우저 기능을 통해 암호화 하며 html 페이지에 내장된 암호화 및 복호화 인터페이스를 통해 원하는 데이터를 꺼낼 수 있다는 특징만 놓고 생각하면 꽤 괜찮은 방법처럼 보일 수도 있습니다. 그런데 한국에 사는 우리들은 이미 이와 완전히 똑같은 방식을 이미 아주 오래 전부터 사용하고 있습니다. 이메일을 통해 전송된 청구서, 신용카드 이용대금 명세서 따위가 이미 완전히 같은 방식으로 암호화 되어 있고 사업자등록번호나 주민등록번호 앞 여섯 자리를 입력해 복호화 하는 방식은 위 웹사이트에서 소개하는 솔루션의 사용 방법과 거의 동일합니다. 그런데 이 방법이 과연 편리하고 안전하던가요? 암호학적으로 유효한 방법이고 또 강력한 패스워드를 머릿속에 기억해 ‘코리안 구글’ 외에는 꺼낼 수 없는 상태로 유지한다는 점에서 좋은 접근이지만 온라인에 전혀 의존하지 않기 때문에 파일을 탈취한 다음에 일어나는 무작위 대입 공격에 취약합니다.
세계에는 이미 이런 암호학적으로는 유효하지만 실제 사용 시나리오에서는 취약할 수밖에 없고 또 개인이 개발한 불안정한 업데이트에 기대는 대신 좀 더 신뢰할 수 있는 집단이 개발하고 여전히 암호학적으로 안전하며 실제 세계의 사용 시나리오에서 좀 더 단단한 인증수단을 보관할 방법이 있습니다. 바로 패스워드 매니저 프로그램을 사용하는 겁니다. 패스워드 매니저 프로그램을 사용하라고 소개할 때 개인적으로 경험한 가장 큰 걸림돌은 지금까지 오랜 세월에 걸쳐 패스워드를 머릿속에 보관하는 상황을 당연하다고 생각한 나머지 패스워드를 머릿속이 아닌 어떤 다른 곳에 타이핑 해서 저장한다는 생각 자체를 불편하게 여기는 일종의 고정관념이었습니다.
너무 간단히 ‘패스워드 매니저에 보관한 패스워드가 털리면 어떻게 함?’ 같은 질문에 간결하게 답하기는 어렵습니다. 사실 같은 패스워드를 여러 서비스에 공유하다가 그 중 한 서비스가 털리는 상황에 비해 패스워드 매니저에 보관한 서비스마다 서로 다른 패스워드가 털리는 상황이 훨씬 안전하며 어차피 털린 패스워드는 바꿔야 하는데 서비스마다 서로 다른 패스워드를 사용해 일단 결함이 전파되지 않고 패스워드를 머릿속에 저장하지 않기 때문에 패스워드를 바꾸는데 부담이 훨씬 적다는 설명을 다 해갈 때쯤 되면 이미 다들 도망가고 아무도 없을 때가 대부분입니다.
또 패스워드 매니저 프로그램을 사용하라고 권하면 자주 듣는 이야기는 자신은 이미 머릿속에 서비스마다 서로 다른 패스워드를 만드는 규칙을 완전히 정립하고 있어 다른 프로그램의 도움 없이도 서비스마다 다른 패스워드를 사용하고 있다는 것입니다. 이론상 이 방법은 ‘코리안 구글’ 외에는 공격할 방법이 없기는 하지만 개인적으로 그리 신뢰할 만한 방법이라고 생각하지는 않습니다. 일단 머릿속에 정립한 그 규칙이 노출될 경우 새로운 패스워드를 다시 외우기는 쉽지만 패스워드를 생성하는 규칙 자체를 새로 만들어 머릿속에 안전하게 보관하기는 쉽지 않기 때문입니다. 또 서로 다른 패스워드를 생성하는 규칙 자체가 서로 다른 문자열을 만들어내는데는 효율적일 수 있지만 그 중 어느 한 문자열이 노출되면 이를 기반으로 다른 문자열을 유추하는데는 극도로 쉬울 수 있습니다. 가령 이론상 공유하는 패스워드 앞뒤에 사이트 주소에 기반한 어떤 문자열을 추가하는 규칙을 사용한다면 이 패스워드의 평문이 노출되면 사실 다른 사이트의 패스워드를 유추하기는 상당히 쉽습니다. 사람 입장에서 이 규칙이 꽤 복잡해 유추하기 어렵다고 생각할 수 있지만 현대의 컴퓨터는 이런 규칙을 알아내는데 점점 더 강해지고 있습니다.
현대에는 이전 시대에 비해 개인의 인증수단을 안전하게 유지하는 일이 이전에 비해 훨씬 중요해졌습니다. 아이폰을 절대로 잃어버리지 마세요에서 아이폰과 아이폰 패스코드를 한 번에 잃어버리면 무슨 일이 일어나는지 소개한 적이 있는데 오랜 세월에 걸쳐 구축한 사진, 메모, 앱 구매내역, 앱 각각으로부터 생산한 부가가치의 기록, 이 모든 것들에 기반한 기억, 돈 등 아이폰과 애플 계정에 기반한 거의 모든 것을 한 번에 잃어버릴 수 있습니다. 사실 이 사건은 애플이 아이폰 패스코드에 애플 패스워드보다 강한 권한을 부여했고 외부에서 아이폰과 패스코드를 동시에 훔칠 수 있는 시나리오가 있기 때문에 발생하는 사실상 애플의 잘못된 보안 인증 메커닉 때문에 일어난 문제이지만 현대에 인증수단을 안전하게 관리하는 일이 얼마나 중요한지 알 수 있는 사례입니다. 과거처럼 그저 패스워드를 머릿속에 기억해 코리안 구글로부터 공격 외에는 안전하게 보관하고 이를 여러 서비스에 걸쳐 사용하거나 약간의 변형을 거쳐 사용하는 수준 만으로는 현대에 개개인의 인증수단의 중요성에 비할 수 없습니다. 만약 머릿속에 저장한 뻔한 인증수단을 잃어버린다면? 현대에는 정말 말 그대로 ‘모든 것’을 잃게 됩니다.
현대에 개인의 인증수단, 즉 여러 서비스에 걸친 아이디와 패스워드, 가능한 모든 사이트에 설정한 OTP, 애플 기준으로 Hide My Email 같은 서비스를 적극적으로 활용해 사이트마다 달리 입력한 이메일 따위를 안전한 방법은 이들을 모두 암호학적으로 안전한 전문 관리 프로그램에 넣고 이 프로그램에 접근할 한 가지 패스워드만을 머릿속에 보관하는 것입니다. 패스워드가 하나 뿐이라면 이를 머릿속에 보관하기는 상대적으로 쉽고 또 여러 패스워드 중 일부가 노출되어도 하나 뿐인 패스워드를 유추하기는 아주 어려우며 가능한 사이트마다 설정한 OTP는 탈취한 패스워드만으로 나로써 행동하는데 어려움을 겪게 만들고 또 사이트마다 달리 입력한 이메일 주소는 일종의 두 번째 패스워드로 동작하고 여러 사이트에 걸쳐 각 계정이 내 계정이라는 사실을 연결하게 어렵게 만듭니다. 패스워드 매니저 프로그램을 사용하는 순간 방금 이야기한 이 모든 장점이 사람 머리만으로는 거의 불가능했던데 비해 프로그램에 붙여 넣고 저장해 두기만 하면 되는 쉬운 문제로 바뀝니다.
결론. 현대에 개개인의 인증수단을 안전하게 보관하는 문제는 이전 시대에 비해 엄청나게 중요해졌습니다. 이에 따라 패스키 같은 기계에 기반한 인증수단이 나타났지만 이 역시 기계의 보안을 통과할 다른 보조 인증수단을 요구하며 모든 서비스에 적용되는데 아주 긴 시간이 필요할 겁니다. 이전에는 그저 어느 웹사이트 보안이 뚫려 그 웹사이트만, 혹은 사용하는 모든 웹사이트의 패스워드를 바꾸는 수준의 문제를 일으켰다면 이제 인증수단을 잃으면 말 그대로 ‘모든 것’을 잃을 수 있습니다. 수 십 년에 걸쳐 쌓은 정보, 사진에 기반한 추억, 온갖 앱으로 만든 부가가치들에 영원히 접근하지 못하게 되거나 이를 다른 사람이 그대로 복제해 노출 시키게 만들 수도 있습니다.
머릿속에 인증수단을 저장하면 가장 안전하기는 하지만 현대에 아주 많은 서비스를 사용하는 시나리오에 원활히 대응하지 못하며 머릿속에 단순 문자열이 아니라 문자열을 생성하는 규칙을 저장하고 있다 하더라도 결과 문자열 중 하나라도 노출되면 규칙 전체를 유추 당할 수 있습니다. 현대의 컴퓨터는 이런 문제를 점점 더 쉽게 풀 수 있기도 합니다. 현대에 개인 인증수단을 가장 안전하게 보관할 수 있는 방법은 패스워드 매니저 프로그램을 별도로 사용하는 것 뿐입니다. 패스워드 매니저 프로그램을 사용하면 각 사이트마다 다른 패스워드를 사용하되 패스워드 생성 규칙 없이 무작위로 패스워드를 만들고 서로 다른 이메일 주소를 사용하며 가능한 모든 사이트에 OTP를 설정하는 등의 인증정보를 안전하게 보관하는 일이 아주 쉬운 일로 바뀝니다. 현대에 개인의 모든 정보가 온라인에 위치하면서 인증정보를 안전하게 유지하는 일은 엄청나게 중요하며 여기에 좀 더 관심을 가져야 합니다.