월별 글 목록: 2016년 7월월

비밀번호 잘 만들고 지키는 법

예전 회사 블로그에 기고를 요청받아서 쓴 글인데 채택이 되지 않았습니다.
오랜만에 다시 봐도 주변에 도움이 될만한 글인 것 같아서 제 블로그에 공개합니다.


비밀번호 잘 만들고 지키는 법
— 개발자가 들려주는 보안 이야기

최근 보안에 대한 관심이 날로 높아지고 있습니다. 금융권의 정보 유출 사고 소식도 자주 들리고, 해킹으로 인한 피해에 대한 이야기들도 많이 들려옵니다. 이런 이야기들에 제각각 다른 생각들을 하고 계실거라 생각합니다. 큰일이다 내 개인정보를 잘 지켜야겠다 하는 생각을 하시는 분도 계실거고, 어차피 이 쯤 털리면 지켜도 소용없다(?)고 생각하시는 분도 계실겁니다. 저는 이 글을 통해서 ‘개인 정보를 잘 지키고 싶다, 그런데 구체적인 방법을 모르겠다’ 하시는 분들에게 도움이 되는 정보들을 전달드릴까 합니다.

개발자가 하는 보안 이야기라고 해서 복잡한 이야기들을 하려는 것은 아니고요, 정말 단순하고 기본적인 부분에 대해서 이야기를 해드릴까 합니다. 바로 비밀번호에 대한 이야기입니다. 서버가 해킹을 당하는 것은 사용자가 노력을 할 수 있는 부분이 아니죠. 그것은 서버 관리자가 노력을 해야 할 부분이고요, 사용자 입장에서는 비밀번호를 잘 만들고 활용하는 것이 가장 중요합니다. 좋은 비밀번호를 만들기 위해서는 다음 세 가지를 기억하시면 됩니다.

  1. 최대한 길게 지어라
  2. 반복되는 부분이 없도록 지어라
  3. 영문, 숫자, 기호 최대한 섞을 수 있는 만큼 섞어라

어디선가 많이 본 것 같은 내용들이기도 하고… 좀 실망하셨나요? 그럼 좀 흥미로운 링크를 하나 보여드릴게요. How Secure Is My Password? ( https://howsecureismypassword.net ) 라는 사이트입니다. 한번 들어가보세요. 그리고 여러분의 비밀번호를 한번 입력해보세요. 내 비밀번호를 넣는게 꺼림칙 하시면 내 비밀번호와 유사한 다른 문자를 입력해보세요. 그럼 그 비밀번호를 뚫는데 걸리는 시간을 알려줍니다. ‘1234’ 같은 비밀번호는 시간 계산도 할 수 없을 만큼 곧바로 뚫린다고 나오고요, ‘p3a1s4s1’를 입력하니 11분이 걸린다고 나오네요. 몇 가지 테스트를 좀 해볼까요?

1111 – Instantly
abcd – Instantly
a1b2c3d4 – Instantly
p3a1s4s1 – 11 minutes
p3a1s4s1w5o9r2d6 – 63 million years (!!)

한글자가 길어질 때 마다 시간이 기하급수적으로 늘어나는 걸 알 수 있습니다. p3a1s4s1w5o9r2d6는 password와 31415926을 한글자씩 교차해서 만든 비밀번호인데요, 이런 형태가 가장 강력합니다. 어떤 비밀번호가 안전한지 한번 테스트 해보세요. 그런데… 이거 원리가 뭘까요?

– 여러분이 몰랐던 (사실 신경 쓸 필요도 없었던) 비밀번호가 서버에 저장되는 원리

복잡한 이야기 안한다고 했는데, 뻥이었어요. 죄송합니다. 기술적인 얘기를 정말 조금만 해볼게요. 바로 암호화에 대한 이야기 입니다.

어떤 문자를 읽기 힘든 형태로 만드는 것을 ‘암호화’라고 하고, 그 암호를 다시 쉽게 풀어내는 것을 ‘복호화’라고 합니다. 그런데 세상에는 암호화는 할 수 있지만 복호화는 할 수 없는 기술들이 있습니다. 복호화가 되는 방식을 ‘양방향 암호화’라고 합니다. 그럼 암호화만 되고 복호화는 되지 않는 방식을 ‘단방향 암호화’라고 하지요. 여러분의 비밀번호는 전부 단방향 암호화로 서버에 저장됩니다. 아까보다는 덜 재미있는 사이트를 하나 보여드릴게요. http://pajhome.org.uk/crypt/md5/ 를 들어가보세요.

암호계에서는 퇴역기술이 되어버린 md5라는 기술에 대한 페이지입니다. 화면에 있는 Input에 아무 문자나 넣고 Calculate의 MD5 버튼을 눌러보세요. 그럼 Result에 결과가 나올겁니다. pass3141 이라고 입력하니 88510fbb367105254f3c91e99f176879 라는 문자가 나왔습니다. 서버에 저장되는 여러분의 비밀번호는 이런식으로 암호화된 문자가 저장이 됩니다. 이건 절대로 거꾸로 복호화가 안돼요. 왜 안되는지는 꽤 복잡한 부분이니 정말 궁금하시면 ‘단방향 암호화’나 ‘md5’같은 키워드로 검색을 해보세요.

그럼 왜 금융권이나 통신사에서 정보가 유출된 후에 공지로 암호를 변경하라고 하는 걸까요? 해커들이 1, 2, 3, 4 … a, b, c, d… a1, a2, a3, a4 … pass3140, pass3141!! 까지 전부 암호화를 시켜본 후 비교하면서 비밀번호를 찾는다는 소릴까요? 네. 그렇습니다. 정말로 그렇게 대입을 해서 찾습니다. 당연히 손으로 하지는 않고, 대신 대입하는 프로그램을 만들어서 찾습니다. 이런 대입 방식으로 암호를 찾는 기술을 ‘레인보우 테이블’이라고 합니다.

그래서 비밀번호는 길 수록 안전하고, 복잡하게 생길 수록 안전한 겁니다.

– 하지만 너무나 귀찮습니다!

p3a1s4s1w5o9r2d6 같은 비밀번호는 입력하기도 힘들고요, 기껏 비밀번호 하나 고안해 놓으면 3개월이나 6개월 후엔 다른걸로 바꾸라고 하잖아요. 이거 정말 귀찮습니다. 그래서 이 귀찮음을 해소해주는 몇 가지 프로그램을 알려드리고 이 글을 마칠까 합니다.

Lastpass – https://lastpass.com

라스트패스는 비밀번호를 대신 관리해주는 프로그램입니다. 데스크탑은 무료이고 모바일 앱은 유료입니다. 모바일 앱 유료 결제가 싫다면 모바일 웹을 이용하면 무료로 이용할 수도 있습니다. 사이트별로 아이디와 비밀번호를 저장하고 관리할 수 있습니다. 웹브라우저 확장기능을 이용해서 로그인 창에서 아이디와 비밀번호를 대신 입력해 주는 기능도 제공합니다. 예를 들어 페이스북 비밀번호는 f3a1c4e1b5o9o2k6 으로 하고 트위터 비밀번호는 t3w1i4t1t5e9r2 로 저장할 수 있습니다. 입력은 대신 해주니까 기억은 할 필요가 없죠. 암호를 대신 만들어 주기도 합니다. 내 컴퓨터가 아닌 다른 컴퓨터를 사용할 때라면? 라스트패스 홈페이지에 로그인 하면 자신이 저장한 정보들을 모두 열람할 수 있습니다.

장점만 있는 것은 아니고요, 단점도 있습니다. 앞서 말한 장점이었던 서버에 저장된다는 점은 단점으로 지적받기도 합니다. 서버에 저장이 된다는 건 서버가 해킹당해 정보가 유출될 가능성도 있다는 거니까요. 라스트패스에서는 그래서 자신들의 서버 보안이 얼마나 철통같은지를 늘 강조하고 있습니다. 그래도 못 미더우시다면 다른 선택이 있습니다.

1Password – https://agilebits.com/onepassword

1Password는 Lastpass와 기능적으론 거의 동일합니다. 다만 큰 차이점이라면 1Password는 절대 내용을 서버에 저장하지 않는다는겁니다. 반드시 사용자의 컴퓨터에 저장이 됩니다. 물론 사용자가 원한다면 Dropbox나 iCloud에 저장할 수도 있습니다. 강제로 서버에 저장하지 않고 선택권을 사용자에게 주는 거죠. 서버에 저장되는 것이 아니다보니 공공장소에서 잠깐 쓸 일이 생기면 모바일에 설치한 1Password로 암호를 확인하고 일일히 옮겨 적어야 하는 상황이 생기기도 합니다. 50자로 구성된 KWTgn9BGsmw3YfsNWVYJsqXQZzXPfEuWUWRzLVvPdMhfinfQPW 같은 암호를 옮겨 적고 있다보면 귀찮기가 이루 말할수가 없지만, 귀찮음 없는 보안이란 없는 거니까요.

단점이라면 무료로 제공되지 않습니다. 30일간 체험해 볼 수는 있지만, 모바일은 체험판이 제공되지 않습니다.

– 남은 과제들

보안에 있어서 가장 기본적인 부분인 비밀번호를 잘 만들고 사용하는 방법에 대해서 이야기해보았습니다. 사실 보안에 있어서 남은 과제는 아직도 너무나 많죠. 바이러스, 방화벽, 악성코드… 기회가 된다면 이런 부분들에 대해서도 다뤄보면 좋겠습니다. 여러분이 스스로 검색해 보시고 정보를 얻으신다면 더 좋겠고요.

그럼 다들 안전하고 즐거운 인터넷 생활 즐기세요!