Apr 032013
 
Pinterest

두괄식으로 쓰자.

웹서비스 비밀번호 글자수 제한 좀 걸지 마!!

(더불어 아이디도 좀…)

보안의 기본 중의 기본은 비밀번호인데, 마음대로 설정하지 못하는 비밀번호 때문에 미추어 버리겠다.

기존의 웹서비스는 레거시 때문에 어쩔 수 없다고 치더라도(개편하는 경우 디자인 보다 이런거나 좀 고쳤으면 함) 앞으로 새로 만드는 서비스는 제발, 부디!!!

 

ID의 글자수 제한

웹서비스에서 언젠가부터 ID에 글자수 제한을 두기 시작했다.

해외 사이트는 글자수 제한에서 자유로운 서비스가 아직 많지만, ID의 글자수 제한(6글자 이상이라던지 최대 글자수 제한 같은)은 어느 정도 트렌드(?) 같다.

트위터처럼 _ a 1 같은 아이디도 지원하는 서비스가 여전히 존재하지만, 많은 서비스가 ID에 글자수 제한을 두고 있다. 디자인 문제 때문에 그럴 수도 있고, 보안이나 ID 자동 생성을 통한 아이디 선점을 해결하고자 하는 것일 수도 있다.

이것도 솔직히 좀 짜증 나는 일이긴 하지만, ID 길이의 최소값이 너무 크거나, ID를 만들 때 숫자를 반드시 조합시켜야 하거나(정말 병맛 돋는다), 최대값이 너무 작은 경우가 아니라면 딱히 문제될 것은 없다.

이 모든 것이 조합된 병맛 케이스: 주민등록번호 입력 대신 쓰겠다는 ipin의 경우 다른 곳도 그런지 모르겠지만 siren24에서 발급하는 경우 정말 병맛 돋는다. 아이디는 8~20자인데 (길이 최소값은 너무 크고 최대값은 너무 작다), 적어도 하나의 숫자가 반드시 들어가야 한다. 내가 기존에 자주 썼던 아이디는 다행히(?) 영문과 숫자가 들어가 있다. 하지만 길이가 7자이다. 5~7자의 아이디를 주력으로 사용했던 사용자도 많은 편이고, 아이디에 숫자가 들어가지 않은 사용자도 부지기다. 그런데 이런 제한을 두면 아이디를 새로 만들라는 말밖에 안 된다. 이게 ipin 설계시 의도한 바인지는 모르겠는데, 어쨌든 내가 ‘기억하기 쉬운’ 아이디가 아니라 ‘새로운 아이디’를 만들어야 한다는 것부터 보안에 문제가 생기기 시작한다[1].

해외 서비스의 경우는 딱히 아이디 길이 때문에 곤란을 겪은 적이 없다시피 하지만, 국내 서비스는 ID의 길이 제한을 하는 서비스가 자주 보여서 종종 패닉에 빠지곤 한다. 이런 경우 꼭 필요한 서비스가 아니면 가입 자체를 하지 않는다. 문제는 관공서 사이트나 강제로 가입해야 하는 사이트의 경우는 스트레스가 이만저만 쌓이는 것이 아니라는 것. ActiveX랑 같이 엮이면 그 스트레스는 진짜 미쳐버리기 직전까지 간다.

 

비밀번호 설정시 병맛

병맛 1: 비밀번호 글자수 제한, 특수문자 입력 제한

국내 인터넷쇼핑업체도 그렇고 포털서비스도 그렇고, 좀 자주 사용한다 싶은 사이트도 여지없이 비밀번호에 글자수를 제한하거나 비밀번호 생성 규칙을 이상하게 만들어 놨다.

비번의 글자수를 6~10자로 제한시켜 놓은 미친 사이트를 비롯해(이런 곳이 매출액 기준 국내 톱클래스 온라인 오픈마켓이라는 것이 짜증날 정도), 12자나 16자 정도로 제한해 놓은 사이트도 많다. 비밀번호를 만들 때 최근의 애플처럼 영어 대소문자, 숫자, 특수문자를 모두 섞어서 최소 글자수 이상으로 만들라고 강제하는 곳도 있기는 하지만, 애플의 경우는 아이폰/아이패드라는 ‘모바일’ 특성[2] 때문에 오히려 강력한 비번을 요구하는 것이 좀 이해가 간다. 문제는 그렇게 섞어서 쓰라고 해놓은 것까진 좋았는데 정작 글자수 제한을 걸어놓는 경우. 아주 미추어버린다.

비번의 글자수에 불필요한 제한을 가하거나 특수문자 입력이 애초에 불가능한 경우를 접하면, 솔직히 그딴 서비스가 ‘보안’에 신경썼을 거라는 생각이 전혀 들지 않는다. 그리고 실제로 국내 대형 사이트들은 개인 정보 유출 경험들이 있어서 심증을 확신으로 바꿔주고 있고.

내가 쓰는 비번은 모종의 규칙으로 사이트마다 다 다르고[5], 알파벳 대소문자와 숫자, 특수문자가 혼용된 형태로 최소 18자[4]이다. 지금까지 이 비번으로 해외 서비스를 쓰면서 제약을 받았던 적이 거의 없다. 그런데 국내에서 이 비번을 쓰면 애로사항이 꽃핀다. 특수문자 입력을 안 받아 주는 사이트, 비번 글자수 상한이 너무 적은 사이트의 경우가 그런데… 사실 뻥을 조금 보태면 국내 관공서 사이트와 대표 웹서비스는 거의 다 해당한다-_-;;;

 

병맛 2: 비밀번호 찾기의 이상한 절차

비번 찾기도 국내의 경우 글로벌 서비스랑 좀 다른데… 결론부터 얘기하면 역시 병맛 돋는 경우가 많다.

비번 찾기를 하면 친절하게도 이메일로 비번을 알려주는 사이트가 있는가 하면(비번 자체를 암호화하지 않고 평문으로 서버에 저장한다는 뜻이거나 엔지니어(혹은 관리자)가 맘만 먹으면 사용자 아이디/비번을 확인할 수 있다는 뜻이다.), 핸드폰 등으로 개인 인증(?)을 한 후, 비번을 바로 리셋해 버리는 사이트도 있다. 이건 내가 책에도 꽤 많은 지면을 할애해서 쓴 적이 있는데, 우리나라는 ‘가입자 인증’이라는 개념이 아니라 ‘실명 인증’이라는 개념 때문에 이런 병맛 돋는 절차가 표준처럼 자리한 게 아닌가 싶다.

이 둘의 차이는 명백한데 이해를 못하는 사람이 많은 것 같다. 조금 구체적으로 설명하면

가입자 인증은 서비스에 가입한 사용자 본인이 맞는지를 확인하는 것이다. 그래서 이름이나 개인 정보를 요구할 필요가 없다. 글로벌 스탠다드처럼 쓰이는 방식은 가입시에 유효한 이메일이 있는가를 확인하는 절차를 놓고, 나중에 비밀번호가 틀리면 사용자 요청에 따라 해당 이메일로 비밀번호를 ‘리셋’할 수 있는 링크를 알려주는 방식으로 동작한다. 정리하면 아래와 같다.

  • 가입절차
    • 가입폼(이메일 주소 포함)을 작성해서 서비스에 가입(이 때 개인 정보 입력이 필요 없는 경우, 개인 정보는 입력하지 않거나 입력하더라도 사실 여부를 확인하지 않음).
    • 서비스는 입력한 이메일 주소로 유효성 검증을 위한 링크를 포함한 메일 발송.
    • 제한된 시간 안에 링크를 클릭하여 메일이 유효하고, 해당 메일 내용을 확인할 수 있는 사용자임을 검증.
    • 인증된 사용자로서 서비스 사용.
    • 참고: 가입시 비밀번호를 잊었을 때 비밀번호 리셋을 위한 질문과 답변을 요구하기도 함.
  • 비밀번호 찾기 절차
    • 비밀번호 재설정 버튼/링크 클릭
    • 서비스는 가입시 유효성 검증을 통과한 이메일로 비밀번호 리셋을 위한 링크를 포함하여 메일 전송
    • 제한된 시간 안에 해당 링크를 클릭하여 비밀번호 리셋
    • 새로운 비밀번호 입력
    • 참고: 가입절차시 설정한 질문을 하고 입력된 답변을 통해 리셋 절차를 수행하기도 함.

심지어 요즘 서비스는 아이디/비번을 별도로 입력받지 않고 검증된 서비스를 통한 우회 가입을 시키기도 한다. 페이스북, 야후, 구글, 트위터 등에서 사용하는 아이디/비번으로 가입하면 써드파티 인증 프로토콜로 가입절차가 완료된다. 사용자는 의심스러운 사이트에 비번/아이디를 주지 않고도 서비스 사용이 가능하다.

실명 인증은 본인 인증과 동의어처럼 쓰이지만 본인 인증이라는 것은 사실 생체인식 같은 것을 쓰지 않는 이상 말장난에 불과하다. 인증할 수 없는 것을 인증하려고 애쓰는 것. 그래도 본인 인증을 하겠다고 ‘신용카드’, ‘본인 소유의 핸드폰’, ‘공인인증서’ 등을 보조 수단으로 삼는데, 이런 인증 수단의 문제는 인터넷에서 본인을 인증할 방법이 없는 사람도 많다는데 있다. 예를 들어 필자 어머니도 얼마 전까지는 본인 소유의 핸드폰이 없었고[6], 신용카드도 없었고, 은행 거래는 창구 거래만 하셨기 때문에 본인 인증 수단 가운데 어느 것도 사용할 수 없었다. 그리고 실명인증이나 본인 인증이 되었다고 서비스에 가입한 사람이 맞다는 보장도 사실 없다. 그럴 확률이 높을 뿐이지. 필자 핸드폰 누가 잠깐 가져가서 가입했을 것 같은 사이트에 가서 이메일을 바탕으로 아이디 입력하고 쉽게 얻을 수 있는 주민등록번호 이용해서 비밀번호 리셋 요청하고, 핸드폰 번호 입력하고 인증 번호 받아 입력해서 새 비밀번호 넣고 들어가는 경우, 본인 인증이라는 것이 무슨 소용인지-_-;; 오히려 비번 관리 잘한 사람의 경우 이메일 인증이 훨씬 안전할 수도 있는 것. 아니면 비밀번호 리셋을 위한 질문/답변 절차나.

우리 나라는 개인 정보를 하도 개떡같이 관리해서 맘만 먹으면 해킹같은거 안 하고도 개인 정보 얼마든지 얻을 수 있다. 재무/경리나 인사와 관련된 일을 하는 사람을 비롯, 많은 사람들이 관리의 편의를 위해 다른 사람의 이름, 주소, 주민등록번호, 계좌번호, 전화번호, 핸드폰번호, 이메일 주소는 물론 경우에 따라 가족관계, 출신지, 사진 정보 등을 갖고 있다. 댓글 달거나 성인 인증 사이트 가입 같은 경우 실명 인증이라는 거는 그냥 웃기는 상황.

 

병맛 3: 비번 입력 횟수 제한과 횟수 제한 넘겼을 때 병맛돋는 비밀번호 재설정 절차

은행 웹페이지의 경우 비번을 3회 이상 틀리면 심지어 지점에 직접 방문해서 비번을 리셋하라는 경우도 있는데… 이정도 되면 욕나오는 상황[3]. 24시간 운영하는 것도 아니면서 그런 패기는 어디서 나오는 것인지;;; (그렇다고 보안이 훌륭해지느냐 하면… 그렇게 훌륭하셔서 최근에도 몇몇 은행이 해킹을 당하셨지;;)

해외 서비스도 비번 입력 기회를 3~4회 주고 그 이상 틀리면 접근을 차단하는 경우가 아얘 없는 것은 아니다. 하지만 대부분의 경우 Capcha를 입력하도록 하여 귀찮음의 단계를 추가할 뿐 추가 기회를 충분히 준다. Capcha의 경우 기계적인 무차별 비번 입력을 통한 해킹을 방지하는 목적. 아니면 아얘 비번을 까먹은 것으로 간주하고 리셋 절차를 수행한다. 리셋 절차는 가입시 입력한 이메일로 리셋 링크를 보내 정해진 시간 안에 해당 링크를 클릭하도록 하여 접근 여부를 보고 새 비번을 입력시킨다[7]. 또는 가입시 가입자가 선택했던 질문을 2~3개 하고 답변을 주관식으로 받아 모두 일치할 경우 새 비번을 입력시키는 식이다. 아주 골치아파지는 경우는 가입시 입력한 이메일 사용이 불가능한 경우거나 질문의 답변이 틀렸을 경우인데… 이 경우 가입자 본인임을 증명하기 위해서는 담당자에게 이메일을 보내 지시사항을 따르거나 해야 한다. 최악의 경우 기존 계정 삭제, 새로 계정 만들어 사용으로 갈 각오도 해야 한다. 은행의 경우 이 정도 되어야 직접 방문해서 처리하라는 소리가 나오고.

 

종합하면, 언제 어디서 뭐가 잘못되어서 왜 이따구가 되었는지 좀 조사해서 논문을 하나 써보면 어떨까 할 정도. 웹서비스를 기획하고 만들어본 입장에서 비번에 글자수 제한을 둬야하는 이유를 알지 못하겠다. 누가 좀 알려주시라;;; 그렇게 제한 한다고 보안이 더 잘 될리는 만무하고, 글자수 제한을 둔다고 구현상에 큰 잇점이 있는 것도 아니고, DB에 비번이 차지하는 공간이 의미있게 줄어드는 것도 아니다.

 

참고로 좋은 비번 만드는 방법

여기 저기에서 얻은 지식을 바탕으로 종합하여 알려드린다. 참고로 이런 글에서 좋은 비번 만들기라고 소개된 방법은 대부분 개인적으로는 추천하지 않는 방법이다. 충분히 길지만 지정한 사람은 기억하기 쉬우면서 입력하기 쉽고 타인이나 컴퓨터는 유추하기 어려운 비번이 좋은 비번이다. 특히 어딘가에 적어놓지 않아도 충분히 기억할 수 있고 입력할 수 있어야 한다. 설사 실수로(예를 들어 id쓰는 곳에 비번을 입력했다든지) 타이핑된 비번을 남이 보더라도 기억하거나 유추하기 어려워야 한다.

국내에서는 위에서 말한 여러 병맛 돋는 제약사항 때문에 쓸모없지만, 유학생이나 해외 서비스를 주로 쓰는 분들은 참고할만 할 것이다. 규칙은 정하기 나름.

  • 관련없어 보이는 3~4개 이상의 단어 조합
    • 예를 들면 yard horse cream -> 사람은 기억하기 쉽고 컴퓨터는 유추하기 어렵다.
  • ‘규칙’을 통해 대문자 치환
    • 예를 들어 첫 단어의 마지막 글자, 두 번째 단어의 두 번째 글자, 마지막 단어의 첫글자 yarDhOrseCream
  • 규칙을 정해 단어 사이에 특수 문자와 숫자 삽입
    • yarD1hOrse*Cream)
  • 규칙을 정해 서비스나 domin과 관련된 힌트 넣기
    • 예를 들면 도메인(google.com의 google) 제일 앞글자를 비번 제일 앞에, 뒤의 두 글자를 비번 제일 뒤에 놓기 gyarD1hOrse*Cream)le
  • 새로 비번 지정하라고 하면 설정할 규칙 정해서 적용
    • 예를 들면 숫자 부분을 1->2->3->1 로 순환 또는 특수문자를 * -> & -> ^ -> * 순으로 순환
너무 늦지 않게 입력 가능하고 모바일 자판에서도 무리없이 입력 가능하다. 비번 생성 규칙 자체가 노출되지 않는 이상 새로 비번을 지정하더라도 어딘가 적어놓지 않고도 제한된 입력 횟수(보통 3~4회) 내에서 충분히 틀리지 않고 입력 가능하기도 하다.

 

Footnotes    (↵ returns to text)
  1. 아이디나 비번은 사람이 기억하기 쉬워야 한다. 사람이 기억하기 어려워서 어딘가에 ‘기록’해야 할 필요성이 생기는 그 순간부터 보안에 구멍이 뚫리는 것이다. 그런 의미에서 비번이 노출되었다는 징조가 없는데도 불구하고 비번을 ‘억지로’ 바꾸라고 하는 것도 사실은 보안에 나쁜 영향을 끼치는 것이다.
  2. 모바일은 항상 가지고 다니는 것이고, 그렇기 때문에 분실이나 악용의 여지를 생각해야 한다. 모바일이기 때문에 복잡한 비번은 보안에 필수라고 할 수 있다. 그리고 보안을 고민한 서비스라면 비번을 너무 자주 입력하도록 하는 것도 좋지 않다. 아이디/비번 패킷이 무선으로 날라다니는 ‘모바일’에서는 비번의 잦은 입력은 packet snooping이나 MITM에 노출되기 쉽기 때문.
  3. 지금이라도 사이트마다 같은 비번을 쓰시는 분들은 domain이나 서비스 이름과 관련된 비번 생성 규칙같은 것을 만들어 서로 다른 비번을 쓰시길.
  4.  예전에는 더 길었는데 입력하기 귀찮아서 좀 줄였다.
  5. 아버지 명의를 대표로 핸드폰을 개통해서 15년 가까이 썼기 때문.
  6. 비번이나 내가 원하는대로 설정할 수 있게 해주고 그러면 아주 쬐끔 더 이해해 줄 수 있겠다.
  7. 어느 이메일로 보냈는지조차 가르쳐주지 않는 경우도 흔하다. 아니면 가입시 입력했던 메일 주소를 입력하는 단계가 추가되기도 하고(일치하지 않으면 ‘그 메일주소 아닌데? 다시 입력 바람’ 이런 식으로 추가 확인을 한다). 이메일 주소의 일부만 보여줘서 힌트만 주는 경우도 있고, 명시적으로 이메일 주소를 명기해서 확인하라고 하기도 하지만, 이조차 본인이 아닐 경우 알려서 좋을 것 없는 정보라고 보는지 잘 안 알려준다.
Pinterest

 Posted by at 5:38 pm