마이크로소프트의 악성 소프트웨어 대응 센터(MMPC, Microsoft Malware Protection Center)에서 하는 실험적 프로젝트 중에 이런 것이 있습니다. 그럴 듯한 가짜 FTP 서버를 만들어 놓고 수많은 인터넷 사용자가 어떤 사용자 계정(ID)과 암호로 로그온하는지 조사하는 겁니다. 조사 결과는 여기에 있습니다.

사용자 계정으로 가장 많이 시도된 것은 역시 Administrator, 그리고 프랑스어인 Administrateur이네요. 압도적으로 1, 2위를 차지한 두 개 외에 3위 역시 admin으로 멀리 가지 못했습니다.

그렇다면 암호로 가장 많이 입력된 것은 무엇이었을까요? 의외로(?) 1111이나 1234의 순위는 낮습니다. 역시 흔히 예상되는 암호인 password와 123456의 순위가 높습니다. 대부분의 인터넷 사용자가 6-8글자 암호를 쓰기 때문에 이런 조합의 순위가 높다는군요.

예전에 마이크로소프트의 소프트웨어 교육 자료(일명 MOC, Microsoft Official Curriculum 또는 Courseware)에 있던 랩을 보면 암호가 Passw0rd나 passw0rd! 이런 식으로 조합된 것이 많았습니다. 대소문자도 섞이고 숫자와 특수문자까지 포함해서 추측하기가 쉽지는 않겠지만 이 암호를 실제 운영 서버에 쓰는 IT팀도 볼 수 있었습니다. 이 경우 비록 복잡성을 만족했다 할 지라도 password라고 쓴 것보다 하나도 나을 바가 없죠.

영어 o 대신 숫자 0을 쓰고, s나 S 대신 $를, 영어 대문자 I나 소문자 l 대신 숫자 1을 쓰는 소위 leet (l33t)라는 것 역시 흔히 알려져 있습니다. 사전식 공격(dictionary attack)으로 암호를 대입할 때 요즘은 이런 leet 치환까지 시도하는 것이 많다보니 이렇게 널리 알려진 단순한 치환은 암호를 복잡하게 하는 목적에 별로 효과적이지 못합니다.

많은 봇넷과 웜들이 자체 내에 암호 사전을 갖추고 있지요. 악성 코드에 감염되어 분통을 터뜨리는 고객께 해당 악성코드가 가진 암호 사전을 보여드리고 사용하시던 암호가 이 중 있냐고 여쭈면 슬그머니 얼굴을 붉히는 경우도 많이 겪었습니다.

그럼 암호는 어떻게 만들어야 좋을까요? 참 쉬운 답일 것 같지만 실 환경에서 잘 운영하기는 힘든 부분입니다. 남들이 추측하기 어려우면서도 암호의 주인은 암호를 기억하기 쉬워야 한다는 원칙이 있으니까요. 위 MMPC 블로그에서는 이렇게 세 가지를 권장하고 있습니다.

  1. 영어 문자, 숫자, 특수 문자를 섞어서 만들라.
  2. 영어의 대소문자를 섞으라.
  3. 길게 만들라.

많은 보안 전문가들이 같은 관점에서, password 대신 passphrase를 사용할 것을 권합니다.

한국 사용자는 한글 타이핑을 영어 상태에서 하는 경우도 흔한데 (예를 들면 ‘한’을 ‘gks’으로 입력하는 식) 일반적인 악성 코드의 사전에는 이런 치환은 드문 것 같습니다. 이렇게 암호를 만들면 대개 8글자 이상으로 쉽게 만들 수 있고 기억하기도 쉽죠. 적당한 위치에 특수 문자나 숫자를 넣기도 비교적 용이한 것 같습니다. 하지만 의도적으로 한국 사용자를 노리는 악성 코드가 생길 경우 이 역시 사전식 공격 대상에 들어가는 것은 시간 문제라고 봅니다.

암호 관리에 중요한 또 한 가지는 암호를 주기적으로 바꿔야 한다는 것 역시 잊으면 안 되겠습니다.