본문 바로가기

IT 기술 정보

올바른 패스워드 작성규칙(길이 vs 복잡도)

반응형
개인정보의 기술적·관리적 보호조치 기준 제4조(접근통제) ⑦ 정보통신서비스 제공자등은 이용자가 안전한 비밀번호를 이용할 수 있도록 비밀번호 작성규칙을 수립하고, 이행한다.
 ⑧ 정보통신서비스 제공자등은 개인정보취급자를 대상으로 다음 각 호의 사항을 포함하는 비밀번호 작성규칙을 수립하고, 이를 적용·운용하여야 한다.

  1. 영문, 숫자, 특수문자 중 2종류 이상을 조합하여 최소 10자리 이상 또는 3종류 이상을 조합하여 최소 8자리 이상의 길이로 구성
  2. 연속적인 숫자나 생일, 전화번호 등 추측하기 쉬운 개인정보 및 아이디와 비슷한 비밀번호는 사용하지 않는 것을 권고
  3. 비밀번호에 유효기간을 설정하여 반기별 1회 이상 변경

 

 

2009년에 신설된 조항이다. 데이터3법으로 망법과 개보법이 일원화되고, 망법 고시였던 기술적 관리적 보호조치 기준이 개인정보보호위원회로 이관된 지금까지도 유지되고 있다. 이젠 한국 국민들에겐 너무 익숙한 정책이다. 다들 영문 + 숫자 + 특수문자로 구성된 8자리 이상의 비밀번호가 하나쯤은 있지 않은가?

 

사실 위 규정은 적용 대상이 "개인정보취급자"이다. 일반 사용자들에게 적용되는 것은 아니지만 많은 정보통신서비스에서 일반 사용자들에게도 동일한 기준을 적용하고 있다. 해설서에 유사한 예시가 있기 때문이기도 하다.

 

 

개인정보의 기술적 관리적 보호조치 기준 해설서(2020.12.)

 

그런데 저렇게 복잡하다고 좋은 것일까? 복잡하면 짧아도 되는 것인가? 비밀번호는 무조건 자주 바꾸라고 하고, 이전에 사용한 비밀번호는 못 쓰게 하는게 항상 좋은 것일까?

 

정책 입안자들이 이런 고찰을 꾸준히 하고 있는지 모르겠다. 미국의 기술연구·표준화 기관인 NIST에선 2021년 800-63B라는 인증 가이드라인을 개정하여 비밀번호의 복잡도 보단 길이가 더 중요하다고 새롭게 안내하였다. 그리고 특수문자를 강제로 넣도록 하는 지침이나 비밀번호를 강제로 변경토록 하는 정책 등은 부작용이 있다고 설명한다. 이용자들로 하여금 오히려 위험한 비밀번호를 사용하도록 이끌 수 있다는 이유에서다.

 

패스워드를 길게 만들도록 가이드 하는 것이 이용자 입장에서도 편하고 안전성 측면에서도 더 우월하다는 연구 결과는 개인적으로도 상당히 공감이 된다. 국내 가이드에선 8자 또는 10자의 길이, 그리고 영문 + 숫자 + 특수문자 구성 등에 관한 가이드만 있다 보니 많은 서비스들이 패스워드 최대 길이를 15자 정도로 설정해두곤 한다. 어떤 곳은 11자 초과 금지인 곳도 보았다. 가이드상의 10자를 최대 길이로 잘못 이해해버린 탓이다.

 

짧은 길이의 패스워드에 대소문자나 특수문자까지 포함시키려면 상당히 복잡한 집약적으로 복잡한 패스워드를 고안해 내야 한다. 이런 패스워드는 다양하기 힘들다. 그렇기 때문에 사이트마다 다르게 설정할 생각도 하기 힘들고, 자주 바꾸되 기존에 한번 쓴 패스워드는 사용하지 말라고 하면 특수문자만 !에서 @로 바꾸고 또 #로 바꾸는 등의 간단한 패턴만 적용이 된다. 여기서 "예전에 사용하던 비밀번호와 너무 유사해요" 라는 메시지를 뿌린다면 aa11을 bb22로 바꾸는 등의 패턴을 쓰느라 고작 8~10자 중 아까운 4자를 쉬운 스트링으로 허비해버릴지도 모른다.

 

오히려 NIST의 가이드처럼 패스워드 길이에 제한을 두지 않으면 패스워드에 url을 포함시킬 수도 있고, 분기별로 패스워드를 변경할 때 해당 달이나 분기를 보고 유추할 수 있는 값 등을 넣을 수도 있다. 가령 아래와 같은 패스워드일 수 있다.

 

headmypasswordsaltpeim.com203/4tail

ghdrlfehddkaghpeim.com6qnsrlRmx

 

물론 이는 매우 단순화된 예시이다! 실제 이용자들은 자기들에게 특징적인 단어를 사용하게 될 것이다. 본인에게 익숙한 이런 긴 내용들은 무작위 공격으로도 유추가 어렵고 곁눈질로도 볼 수 없으며 사이트마다 다르게 설정하기 좋아 크리덴셜 스터핑 공격 방어에도 매우 효과적이다.

 

각설하고, 국내에서도 패스워드 보안 정책에 대해서 연구 및 개정이 필요하다. 그리고 이 연구 과정에 NIST의 가이드는 상당히 참고할만 하다.

 

https://pages.nist.gov/800-63-3/sp800-63b.html

 

NIST Special Publication 800-63B

NIST Special Publication 800-63B

pages.nist.gov

 

 

KISA에서도 패스워드 선택 및 이용 안내서라는 괜찮은 가이드를 출간하고 있긴 하지만, 제도에는 전혀 반영되지 않는 듯 하다. 심지어 2020년 12월에 발간된 개인정보의 기술적·관리적 보호조치 기준 해설서에도 아직까지 특수 문자 섞인 8자리, 특수문자 없는 10자리를 예시로 들고 있으니 말 다 했다. 입안자들은 인공지능이나 마이데이터 같은 트렌디한 기술들에만 관심이 있지 철지난 패스워드 관련 규정엔 관심이 없는 것일까?

 

패스워드 선택 및 이용 안내서_2019.pdf
2.30MB
개인정보의_기술적_관리적_보호조치_기준(제2020-5호)_해설서(2020.12).pdf
1.31MB

 

개인적으로 패스워드 규칙에 관한 가이드는 해설서보단 한단계 내려간 안내서 수준에서 이루어져야 한다. 보안에 관한 사업자들의 창의적인 시도를 너무 제한해서는 안 된다. 

 

NIST의 가이드 중 일부를 발췌하고 번역(멋대로 의역)하여 공유하니 참고하도록 하자. 다른 건 몰라도 긴 패스워드를 입력할 수 있도록 하는건 꼭 제도화되거나 가이드 되었으면 좋겠다. 

 

(참고) NIST의 가이드라인

  1. 패스워드의 길이는 최소 8자 이상이도록 해야 하며 최대 64자 이상 입력 가능하도록 해야 한다.
  2. ASCII 문자 및 공백, 특수문자들을 모두 입력할 수 있도록 해야 한다. 
  3. "힌트"는 권장되지 않는다. (예: "첫 번째 애완동물의 이름은 무엇입니까?")
  4. 패스워드 설정 및 변경 시 너무 일반적인 단어나 유출된 것으로 알려진 값이 포함되어 있는지 확인해야 하며, 이를 포함하거나 이와 일치하는 경우 다른 비밀번호를 사용하도록 해야 한다.
    (1q2w3e4r와 같은 값, 패스워드 사전에 있는 단어, 유출된 패스워드 목록에 있는 비밀번호 등)
  5. 사용자가 강력한 암호를 선택하는 데 도움이 되도록 가입자에게 패스워드 보안 등급 미터와 같은 기능을 제공해야 한다. 
  6. 과도한 복잡도 규칙을 적용하지 않아야 한다. 암호를 짧은 주기적으로 변경토록 할 필요도 없다. 단, 침해 및 유출 흔적이 있는 경우 변경을 강제해야 한다.
  7. 암호를 입력할 때 "붙여넣기" 기능을 사용할 수 있도록 허용해야 한다. 
  8. 이용자가 암호를 성공적으로 입력할 수 있도록 서비스 제공자는 암호 전체를 별표나 점으로 치환해버리지 않는, 암호를 원본 그대로 표시할 수 있는 옵션을 제공해야 한다. 또한 각 문자를 입력한 후 짧은 시간 동안 사용자 장치에 개별 입력 문자를 표시할 수 있도록 허용해야 한다. 이는 특히 모바일 기기에서 필요하다.

이것들 많고도 내용은 많으나 국내에서도 일반적으로 알려진 내용들이라 생략하였다. 더불어, 비밀번호 길이와 복잡도에 관해 고찰한 부록은 내용이 길어 별도 글로 정리하였으니 한번 참고삼아 읽어보는 것을 권장한다.

 

 

반응형