항상 잊어먹는 비밀번호 좀 더 쉽게 사용할 수 없을까?
에빙하우스의 망각곡선 이론을 들어본 적이 있을 것이다. 인간이 무언가의 특정 정보 또는 패턴을 기억할 때 그 한계가 한 달 뒤면 20%까지 감소한다는 것이 망각곡선 이론의 핵심이다. 이렇듯 우리는 우리가 보고 기억한 모든 것들을 완벽하게 기억할 수 없다. 우리는 컴퓨터가 아니기 때문에 별도의 노력을 하지 않는 한 모든 기억은 휘발성을 띄고 있다.
회사에서 그리고 학교에서 심지어 집에서 조차 기억해야 할 것들이 산더미인데 하물며 우리가 자주 사용하는 비밀번호는 오죽하겠는가. 오늘은 UX 디자이너 관점에서 바라본 비밀번호에 관한 이야기이다.
개인정보의 기술적·관리적 보호조치 기준 제4조(접근통제) ⑦ 정보통신서비스 제공자 등은 이용자가 안전한 비밀번호를 이용할 수 있도록 비밀번호 작성규칙을 수립하고, 이행한다.
⑧ 정보통신서비스 제공자 등은 개인정보취급자를 대상으로 다음 각 호의 사항을 포함하는 비밀번호 작성규칙을 수립하고, 이를 적용·운용하여야 한다.
1. 영문, 숫자, 특수문자 중 2종류 이상을 조합하여 최소 10자리 이상 또는 3종류 이상을 조합하여 최소 8자리 이상의 길이로 구성
2. 연속적인 숫자나 생일, 전화번호 등 추측하기 쉬운 개인정보 및 아이디와 비슷한 비밀번호는 사용하지 않는 것을 권고
3. 비밀번호에 유효기간을 설정하여 반기별 1회 이상 변경
현재 법적으로 명시된 개인정보 보호조치 기준에 따르면 특정 규칙에 따라 비밀번호를 생성하도록 규정하고 있다. 개인정보 보안이 중요해진 만큼 비밀번호는 되도록 보안 이슈가 발생하지 않도록 유추하기 어려운 복잡한 문자열을 사용하는 것이 타당하게 들릴지도 모른다. 이런 비밀번호 규칙이 정립되기 시작한 건 2003년 미국 국립표준기술연구소(NIST)에서 만든 방침에서부터다. 하지만 2017년 6월 NIST는 비밀번호 생성 규칙에 관한 규정(특수문자 입력, 비밀번호 만료 기한 설정 권고)을 삭제했다.
규정을 삭제한 이유는 단순했다. 복잡한 비밀번호 규칙이 보안에 큰 도움을 주지 않았기 때문이다. 제아무리 여러 문자를 혼용한 복잡한 규칙을 제시해도 사용자는 그 안에서 규칙을 기억에 용이한 패턴으로 단순화시키고 있던 것이다. 그리고 이를 통해 해커들은 이런 패턴 파악을 통해 더욱 쉽게 침투할 수 있게 되었다. 오히려 생성규칙이 역효과를 낸 셈이다.
이전 편에서 언급했듯 인간은 본래 복잡함보다는 단순함에 더 가까운 존재이다. 복잡함을 유지한 채로 다른 생성규칙을 제안해 봤자 결국 똑같은 문제가 발생할 것이다. 따라서 보안 문제를 예방하기 위해서 어느 정도의 복잡함은 갖추되 사용성을 떨어뜨리지 않는 선에서 단순화할 필요가 있어 보인다. 기술의 복잡함을 인정하되 그것을 우리가 단순하다고 느끼게끔 만들어야 하는 도널드 노먼이 말한 UX 디자인이 필요한 시점이 바로 지금이다.
그래서 새롭게 개정된 NIST의 비밀번호 생성 권고사항 및 다양한 사례를 참고하여 아래와 같이 비밀번호 UX 설계 시 참고해야 할 사항들을 정리해 봤다.
새롭게 개정된 NIST의 비밀번호 생성 권고사항에 따르면 비밀번호에 특정 규칙을 적용하는 것보다 긴 문장의 형태로 생성할 것을 추천하고 있다. 따라서 비밀번호 생성 규칙이 필요하다면 규칙을 강제하기보다 권고하는 수준에서 이루어져야 하며 대신 생성하려는 비밀번호의 보안 등급을 제시하여 보다 안전한 비밀번호를 생성할 수 있도록 유도해야 한다.
어쩔 수 없이 복잡한 비밀번호 규칙을 유지해야 한다면 가장 먼저 해야 할 것은 복잡한 비밀번호를 입력하는 상황에서 사용자 오류를 최대한 줄이는 일이다. 오류를 방지하는 최고의 방법은 사용자가 지금 무엇을 하고 있는지 실시간으로 보여주는 방법이다. 비밀번호 입력 시 원본을 그대로 표시하는 옵션을 제공해 주자. 사용자는 자신이 입력하고 있는 비밀번호를 실시간으로 확인하게 되면서 오류 발생률은 현저히 저하된다.
두 번째로 오류 발생을 줄이는 방법으로 사용자가 입력하는 비밀번호에 맞춰 충족 조건을 실시간으로 보여주는 것이다. 기껏 힘들게 생각한 비밀번호를 입력하고 회원가입 버튼을 눌렀을 때 조건이 충족되지 않았다는 메시지를 받을 때의 기분은 어떻겠는가, 사용자가 실시간으로 조건을 확인하면서 비밀번호를 생성하도록 규칙과 충족 상황을 실시간으로 보여주는 것만으로도 비밀번호 생성의 복잡성을 현저히 줄일 수 있다.
세 번째 오류를 최소화하는 방법으로 비밀번호 입력 시 Capslock과 Numlock의 활성화 여부를 실시간으로 알려주는 기능이다. 아주 사소해 보이는 간단한 기능처럼 보일 수도 있으나 오류 방지를 통한 원활한 사용성은 유용성으로 이어지고 곧 사용 만족도가 향상되는 선순환 구조를 만들 수 있음을 기억하자.
새롭게 개정된 NIST의 보안 권고 사항에 따르면 비밀번호를 주기적으로 변경토록 할 필요도 없다고 하였다. 단, 침해 및 유출 흔적이 있는 경우 변경을 강제해야 한다. 따라서 주기적인 비밀번호 변경 요청보다는 정보 유출이 발생했거나 그러한 시도가 있었을 경우에 한에 비밀번호 변경을 강제하도록 해야 한다.
비밀번호 입력 상황에서 가장 좋은 UX는 역설적이게도 비밀번호를 입력하지 않게끔 하는 것이다. 그리고 실제로 그 방법은 유효하고 많은 서비스에서 다양한 방법으로 비밀번호 없이 로그인할 수 있도록 하고 있다. 가장 널리 쓰이는 대표적인 방법으로는 서드파티(소셜 서비스) 로그인이 있다. 모바일 환경에서는 기기 자체에서 제공되는 생체정보 인식 기능을 통해 비밀번호 없이 생체 정보 인식 만으로 로그인할 수 있도록 하고 있다.
비밀번호 입력 UX는 보안이라는 기능성과 오류 방지라는 사용성의 균형을 맞추는 일이라 생각한다. 따라서 가장 좋은 방법은 기능성과 사용성을 모두 충족시키는 방법을 찾는 것이겠지만 현실적으로 찾기가 어렵다. 따라서 서비스의 맥락과 사용자가 처한 상황을 면밀히 관찰 후 기능성과 사용성 사이의 적절한 균형을 찾는 것이 UX 디자이너가 할 일이라고 생각한다.
참고 및 출저
8 UI/UX tips about password design :
https://medium.com/@indieklem/8-ui-ux-tips-about-password-design-9564da937490
올바른 패스워드 작성규칙(길이 vs 복잡도) :