Computer >> 컴퓨터 >  >> 네트워킹 >> 인터넷

웹사이트의 비밀번호 규칙이 오히려 보안을 해치는 이유

웹사이트의 비밀번호 규칙이 오히려 보안을 해치는 이유

최근 몇 년 사이에 온라인 계정을 하나라도 만들어 본 분이라면, 특정 조건에서 "안전하지 않다"며 비밀번호를 지적당하는 경험을 하셨을 것입니다. 경우에 따라서는 '가입' 버튼조차 누르기 전에 비밀번호 입력란 옆에 "약한 비밀번호입니다"라는 메시지가 먼저 뜨기도 합니다.

일부 사이트는 자신들이 약하다고 판단한 비밀번호로는 아예 가입 자체를 막아 버리고, 어떤 사이트는 경고만 한 뒤 사용자가 알아서 하도록 내버려 두기도 합니다. 어느 쪽이든 이런 사이트들에는 대체로 공통점이 하나 있습니다. 바로 그들의 "안전한 비밀번호" 기준은 정작 여러분을 안전하게 지켜주지 못한다는 점입니다.

나쁜 습관을 길들이는 비밀번호 규칙

웹사이트의 비밀번호 규칙이 오히려 보안을 해치는 이유

대부분의 웹사이트에서 가장 먼저 눈에 띄는 것은 "강력한" 비밀번호에 대한 기준이 사이트마다 거의 비슷하다는 점입니다. 대부분의 사이트가 요구하는 조건은 다음과 같습니다.

  • 최소 6~8자 이상
  • 숫자와 영문자 각각 최소 1개 포함
  • 경우에 따라 대문자 최소 1개 포함

이 기준이라면 "Ironclad1" 같은 비밀번호도 해당 웹사이트의 요건을 무난히 통과합니다. 대부분의 사이트가 이 정도 요구사항만 두다 보니, 사람들은 "Ironclad1", "Sallyepstein4", "Michael1985" 같은 비밀번호가 좋은 비밀번호라고 착각하게 됩니다. 사이버 보안 입문서의 첫 세 페이지만 읽어본 사람이라도 이것이 얼마나 위험한지 알 수 있습니다. 그럼에도 수백만 개의 웹사이트가 보안을 단 몇 줄의 코드로 처리하면 되는 부수적인 요소로 여기면서, 이런 관행이 묵인된 채 표준처럼 자리 잡고 있는 실정입니다.

해커는 사전 공격(dictionary attack)만으로 여러분의 비밀번호를 손쉽게 크랙할 수 있습니다. 그걸로 끝입니다.

구글처럼 일부 웹 서비스는 비밀번호에 "!"나 "$" 같은 특수문자 사용을 추가로 요구하기도 합니다. 하지만 이는 "$allyepstein4" 같은 비밀번호를 유효하게 만들어 줄 뿐이며, 사전 공격 기법 역시 시간이 지나면서 훨씬 더 정교해졌습니다.

그렇다면 좋은 비밀번호 습관이란?

웹사이트의 비밀번호 규칙이 오히려 보안을 해치는 이유

좋은 비밀번호의 조건에 대한 논쟁은 끊이지 않지만, 여기서는 세부적인 논점까지 파고들지 않고 누구나 동의하는 몇 가지 원칙만 살펴보겠습니다. 좋은 비밀번호란 다음과 같습니다.

  • 대문자, 소문자, 숫자 등 폭넓은 영숫자 조합을 포함합니다.
  • 특수문자를 예측하기 어려운 위치에 배치합니다. "@shley"보다 "@$_hley"가 더 안전합니다. 사전 공격은 보통 "@"가 "a"를, "$"가 "s"를 대체하는 패턴만 스캔하기 때문에 단어 중간에 언더스코어가 들어가면 훨씬 까다로워집니다.
  • 공백을 포함합니다(예: "I @te a S4nDw1ch").
  • 합리적인 길이 상한선까지 최대한 길게 작성합니다. "I l0v3 LuC#Y"보다 "Th1S p4ssword sH_oulD b3 h@rd to cr@ck"이 더 안전합니다.
  • 단어를 비정형적으로 변형합니다(예: should 대신 "schuld", beef 대신 "beffe", instead 대신 "inszteda", maketecheasier 대신 "mektekezier").

물론 가장 좋은 비밀번호 중 하나는 외우기가 쉽지 않습니다(예: "ifjecBucE083$&&8c ociefjC*#&$6c iof0e0($*#"). 위 예시는 앞서 소개한 모든 규칙, 심지어 공백 삽입까지 활용한 완전한 난수 문자열입니다. 이런 비밀번호는 가장 정교한 사전 공격조차 쉽게 뚫지 못합니다. 비밀번호 해시를 저장하는 데이터베이스가 안전하고 암호화 키가 올바르게 관리된다는 전제하에, 해커 입장에서는 크랙할 가치조차 없는 계정이 됩니다.

다만 모든 서버가 안전한 것은 아니며, 사용 중인 서비스가 유출 사고를 당해 비밀번호가 노출될 가능성도 언제든 있습니다. 그렇기 때문에 서비스마다 서로 다른 비밀번호를 사용하는 것이 무엇보다 중요합니다.

하지만 열다섯 개의 비밀번호를 전부 외우는 것은 불가능에 가깝고, 앞서 "최고의 비밀번호" 예시로 든 문자열을 외우는 것은 말할 것도 없습니다. 이를 보완하려면 고도로 안전한 싱글 사인온(SSO, 신원 관리 서비스라고도 함)을 활용해 비밀번호를 대신 관리하는 방법이 있습니다. 이런 서비스는 오랫동안 존재해 왔지만 아직 완전히 검증된 영역은 아니므로(적어도 필자의 전문적 견해로는) 신중하게 접근해야 합니다. 반드시 직접 조사하고, 서비스 이름 뒤에 "유출(breach)"이라는 단어를 붙여 검색해 과거 해킹 이력이 있는지 확인해 보세요.

문제를 해결하는 방법

웹사이트의 비밀번호 규칙이 오히려 보안을 해치는 이유

우리가 해결해야 할 과제는 웹에서 계정을 만드는 수많은 사람들에게 비밀번호 생성의 모범 사례를 이해시키는 것입니다. 굉장히 어려운 일처럼 들리지 않나요?

사실 적절한 위치에 정보를 제공하는 것만큼이나 간단합니다. 구글은 가이드라인을 통해 이를 꽤 잘 해내고 있지만, 아직 충분하다고 보기는 어렵습니다.

개인적으로는 비밀번호 입력란 옆에 이런 가이드라인 링크를 함께 제공해, 회원가입 단계에서 사용자가 쉽게 접할 수 있도록 하는 것이 가장 좋다고 생각합니다. 이를 무시하는 것은 사용자의 선택이겠지만, 적어도 그 시점부터는 관련 교육 자료를 읽을 기회조차 없었다고 말할 사람은 없을 것입니다.

유일하게 어려운 점은 계정 데이터베이스를 운영하는 수백만 개의 웹사이트를 설득해 이 방식을 도입하게 만드는 일입니다. 하지만 이런 웹사이트 대부분은 워드프레스나 드루팔 같은 범용 소프트웨어를 사용하므로, 개별 사이트보다는 해당 소프트웨어 개발사에 향후 업데이트에 이런 기능을 포함해 달라고 요청하는 편이 훨씬 효과적일 것입니다. 웹사이트들이 소프트웨어를 업데이트하는 순간, 가입 페이지에 자동으로 이런 가이드라인이 적용될 테니까요!

좋은 비밀번호에 대한 인식을 널리 퍼뜨리기 위해 우리가 할 수 있는 일이 또 무엇이 있을까요? 댓글로 의견을 나눠 주세요!