Tistory View

일단 이 내용은 많이 어려울 수도 있지만, 결론은 한가지밖에 없으니, 차근차근 읽어 주시면 감사하겠습니다.

 

인터넷 쇼핑몰이 너무 늘어나다보니, 사이트의 비밀번호를 정하는 것도 어려운 일이 되어 버린지 오래군요. 카카오나 네이버 구글 로그인 같은 것을 이용하는 방법도 있지만, 이 것들을 지원해주지 않는 사이트도 있고, 지원한다고 해도 이 것들을 쓰기 싫은 상황도 있을 수 있습니다. 그 때마다 사이트의 비밀번호를 정해야 하는 데, 만약 당신의 비밀번호가 털린다면,... 그 들은 책임지지 않을 겁니다. 정확히 책임이 너무 커서 질 수도 없고, 오히려 교묘히 빠져나갈 궁리만 할 확률이 높습니다. 따라서 안전한 비밀번호를 정하는 것이 스스로를 지키는 유일한 방법입니다.

 

사이트에서 회원의 비밀번호를 저장하는 방식

내가 아무리 멋진? 비밀번호로 보호해도 사이트에 문제가 있으면, 이 멋진? 비밀번호는 무용지물이 됩니다.

일단 사이트에 저장되는 내 비밀번호는 해당 사이트의 개발자조차 알 수 없도록 처리하는 방식을 씁니다. 세상의 누구도 알수 없도록 저장을 합니다. 내가 비밀번호를 정하면 사이트내에 비밀번호를 저장하게 되는 데, 이 방식은 원래의 비밀번호를 복원할 수 없는 방식을 씁니다. 이게 가능하냐구요? 네, 그 것도 아주 쉬운 작업입니다. 그리고 이 방식은 비밀번호를 아무리 길게 입력해도 처리할 수 있습니다. 무한대 길이의 비밀번호를 입력해도 처리가 가능합니다. 치는 사람 손가락만 아픕니다. 최소한 6만자까지는 안될 이유가 없습니다.

 

따라서 걸러야하는 사이트들이 있습니다.

0. 네트웍보안(SSL)이 적용되지 않은 사이트

이 건 뭔가 하실 수 있는 데, 간단히 알 수 있는 문제니, 어려워 하실 필요 없습니다.

사이트에 들어가면, 위에 주소 표시줄이 있습니다. 이 곳 맨 앞에 보면, 자물쇠가 있는 데, 이 자물쇠가 없거나 풀려있는 곳에서는 절대 가입해서는 안됩니다. SSL이란 내가 입력한 모든 정보가 해당서버가 날아갈 때, 암호화를 해서 날아가도록 하는 방식입니다. 내가 친 비밀번호가 암호화되지 않고 그냥 날아가게 만든 사이트는 걸러내야 합니다. 비밀번호가 날아가는 그 짧은 순간에 "어떻게 비밀번호를 탈취하냐?"라고 생각할 수도 있는 데, 날아가는 모든 정보에서 비밀번호 비슷한 것을 잡아내서 저장하도록 만들기만 하면 되는 거라, 이 작업은 통신쪽 개발자에게는 그리 어려운 작업이 아닙니다. 

한 10년전까지는 사용자의 비밀번호를 포함한 개인정보만 SSL을 이용했습니다. SSL은 암호화등의 이유로 계산을 많이 해야하는 데, 그 당시의 컴퓨터들은 이들을 다 감당하기에는 좀 느렸습니다. 그러다 암호화된 연결과 그렇지 않은 연결간에 문제를 Google같은 곳에서 슬슬 보안에 문제가 있다는 이유로 혼용하지 않도록 아예 바꿔버렸습니다. 재작년정도였던것 같습니다. 그 만큼 컴퓨터의 성능도 좋아졌기 때문에 이제 거의 대부분의 사이트에 들어가면 자물쇠가 있는 것을 볼 수 있습니다.

오해하지 말아야 할 것은 아주 단순히 정보만을 보내주는 사이트들은 이 보안이 필요가 없습니다. 사용자의 정보를 하나도 받지 않는 그런 곳은 이 자물쇠가 필요 없긴하지만, 현재의 시점에서는 이 보안연결은 필수가 되었습니다. 구글에서 안드로이드용 앱에서 동작을 기본적으로 이 보안연결로 하도록 유도해버려서 자물쇠가 없는 곳은 찾아 보기 힘들게 되었습니다.

이 보안연결을 위해서는 서버운영자가 보안인증을 하는 인증서를 구매해야 해서... 이게 좀 비쌉니다. 그래서 적용을 못한 곳이 많았지만, 번거롭긴하지만 이 보안인증서를 무료로 해주는 곳도 있기에 이 것을 적용되어있지 않다는 것은 문제가 있다고 봐도 됩니다.

 

주소표시줄의 자물쇠

 

1. 비밀번호를 그냥 저장하는 사이트

비밀번호를 위에서 언급한 방식으로 처리하지 않는 사이트는 걸러내야 합니다. 이 걸 알 수 있는 방법은 비밀번호 찾기를 해보면 됩니다. 비밀번호 찾기를 했을 경우, 화면에 내 비밀번호를 보여준다거나, 내 비밀번호의 일부라도 보여주는 사이트는 두말 없이 걸러야 합니다. 보통 회원가입시에 등록한 이메일로 날아 오는 데, 이 이메일에 내 비밀번호나 일부가 보인다면 바로 걸러야 합니다. 이 곳의 관리자는 당신의 비밀번호를 그냥 알고 있는 것입니다. 이를 이용해 당신이 이용하는 다른 사이트에 들어갈 수 있다는 뜻입니다.

위에서 언급했듯이, 비밀번호에 복호화 불가처리를 하지 않고 있는 사이트입니다.

2. 비밀번호 길이에 제한이 너무 짧은 사이트

위에서 언급했듯, 이 복원할 수 없는 방식은 무한대의 입력이 들어와도 문제가 없습니다. 그런데, 비밀번호를 16자리까지만 입력이 가능한 곳은 문제가 있는 것입니다. 필자는 주로 비밀번호를 32자에서 그 이상의 비밀번호도 쓰는 데(어떻게 기억하냐구요? 그 건 아래에.. 아.. 100글자 넘는 비밀번호도 있네요..) 16자리는 정말 적은 길이입니다. 32자도 긴 것이 아니기에 이런 제한을 두는 사이트에는 가입시에 한참 고민을 하는 편입니다. 

위에서 언급한 방식으로 잘 동작하도록 만든 사이트들도 길이의 제한을 두는 경우가 있습니다. 이 건 개발공부할 때, 그 후진 책에 그렇게 되어있어서 "그런가부다~"해서 발생하는 문제입니다. 또다른 이유는 너무 긴 비밀번호를 사용자가 칠 일이 사실상 없다고 판단해서 입니다. 저 같은 뵨퇘?는 없다고 보는 것이지요...근데 제가 과연 뵨퇘?일까요? 자세한 내용은 계속 읽어보시면 알게 되실 겁니다.

 

비밀번호의 형식

중요한 것은 길이

일단 비밀번호는 길면 길수록 안전해집니다. 해커가 비밀번호를 알아내는 방식을 무차별로(정확히 일일이) 다 입력을 해보는 겁니다. 이걸 사람이 하는 것이 아닌 프로그램으로 대입해 보는 것입니다. 4자리 비밀번호 푸는 것은 일도 아닙니다. 하지만 이게 한자리씩늘어날 때마다 푸는 시간이 기하급수로 증가하게 됩니다. 따라서 최대한 길게 하는 것이 무엇보도 중요한 문제 입니다. 

하지만 컴퓨터의 성능도 계속 좋아지고 있습니다. 그래서 시간이 지날수록 비밀번호가 더 길어져야 합니다. 처음에 언급한 복원할 수 없는 방식도 계속 이에 맞춰서 더 강력해지고 있습니다. 컴퓨터 성능이 좋아지는 만큼 비밀번호를 때려 맞추기 어렵게 계속 연산량이 많이 지고 있는 것입니다. 하지만 이 연산량을 늘리는 것은 오히려 성능을 떨어뜨리기 때문에 컴퓨터의 성능 증가 폭보다 이 연산량이 많이 지지는 않습니다. 정확히 그럴 필요가 없기 때문입니다. 이 부분은 이 글을 읽는 독자에게는 필요한 내용이 아니니 그냥 넘어가고.. 어쨋든 길이가 길어야 합니다. 현재의 시점에서 10자는 당연히 넘겨 두는 것이 좋습니다.

특수문자/숫자를 섞는 것은 더 안전한가?

네, 더 안전합니다. 하지만 길이가 더 중요합니다. 좀 재미있는 이야기를 해드리죠.

언제가 보안문제가 커지면서, 사이트에서는 특수문자와 숫자도 조합하고.. 어떤 곳은 연속된 숫자는 못쓰게 하고 있습니다. 그러다 보니 사람들이 다음과 같은 식의 비밀번호사용하기 시작했습니다.

 

{영문자 몇글자}{숫자1~2개}{특수문자1~2개}

 

대부분 이런 패턴으로 사용자들이 사용한다는 통계가 나와 버렸습니다.

여기서 잠깐.. "비밀번호를 모른다고 하지 않았냐?"라고 물으신다면, 모른다고는 안했습니다. 비밀번호가 있어야 풀 수 없는 형태를 만들어 낼수 있습니다. 따라서, 보안된 연결로 날아간 비밀번호는 저장소에 저장이 될 때 풀 수 없게 들어갈 뿐 이 작업이 이루어지는 사이에는 프로그램내에서 알 수 있습니다. 단지 개발자가 이 것을 자신도 모르게 할 뿐입니다. 개발자가 마음만 먹으면 그냥 다 알 수 있습니다. 그렇게 하지 않을 뿐입니다.

"그럼 이런통계는 어떻게 구했나?"는 이 넘어온 데이터를 변환하는 사이에 어떤 패턴인지만 분석을 한 것 뿐입니다. 사용자들이 올바르게 사용하고 있는 지, 어떤 문제가 발생할 수 있는 지 연구하려고 패턴만 뽑게 한 것일 뿐, 비밀번호를 드려다 보는 것은 아니니 그리 걱정하실 필요는 없습니다.

 

사용자들이 이런 패턴으로 저장하다보니 무차별대입도 이렇게 해서 사용자의 비밀번호를 알아내고 있습니다. 따라서 위와같은 형태로 비밀번호를 정하는 것은 영문자만 넣고 길게 하는 것보다 오히려 위험할 수 있습니다.

 

그럼 어떻게 해?

비밀번호는 외우기도 쉬워야하지만, 길이도 길어야 합니다. 이 것을 가능하게 하는 방법은 "문장"을 사용하면 됩니다.

예를 들면,

"오늘은 날이 밝아서 일하기 참 좋구나"

 

이렇게 넣으면 됩니다. 자판으로는 42글자가 됩니다. 여기에 숫자와 특수 문자를 중간에 심습니다. 가장 쉬운방법이 띄어쓰기위치에 특수문자와 숫자를 넣는 것입니다. 다음과 같이요.

 

"오늘은!날이1밝아서!일하기2참!좋구나"

 

이런 식이지요. 좀 더 강력하게 만들고 싶다면 다음의 방법이 있으나, 참고만 하시고 약간 자신만의 패턴을 가미하시면 됩니다.

"오늘은@날이#밝아서$일하기%참^좋구나"

 

좀 어려운 것 같지만, @#$%^는 키보드의 순서일 뿐입니다.

이 문장을 더 길게 하시기를 추천하며, 명언은 사용금지입니다. 말 그대로 유명한 말이니까요.

 

사이트마다 다른 비밀번호를 사용하는 것이 좋습니다.

이건 개발자가 공부를 덜한 상태에서 발생하는 문제입니다. 잘 만들어진 사이트들은 위의 제가 설명해드린 문장방식을 사용하면 같은 비밀번호라도 문제가 없어야 합니다. 하지만, 공부가 덜된 개발자들이 이런 실수를 해버리는 경우가 있습니다. 원래의 비밀번호를 알아 내진 못하지만 같은 비밀번호를 쓰고 있다는 것을 알 수 있게 만들어 버리는 경우입니다.

보통 이런 경우가 짧은 비밀번호를 사용할 때 주로 발생하는 데, 사용자A와 사용자B가 같은 비밀번호를 쓰면, 이 풀 수 없는 방식의 결과가 같은 것이 되어버립니다. 그러다 보면 사용자A의 것만 탈취되거나 풀려 버려도, 사용자B의 비밀번호도 알게 되기 때문입니다. 

문제는 "그럼 그 수많은 문장을 어떻게 기억하나?"라는 문제 입니다. 이 는 좀 더 후반부에..

 

우리에겐 생체인식이 있다. 개뿔~

지문이나, 안면인식, 홍채인식...(추가로 똥꼬인식?) 등이 있습니다. 뭐... 지문 같은 경우, 같은 지문을 가진 사람도 있지만, 그런거 없다고 치겠습니다. "전세계에서 유일하게 나만의 것이니 가장안전하다.." 고 생각하면 안됩니다. 현재 가장 강력한 생체인식은 DNA입니다. 500억분의 1의 확률입니다. 와 이건 정말 안전하구나 할 수 있지만... 이게 과연 안전할까요?

위의 그냥 비밀번호(PIN번호라고 하죠) 42자리는 숫자로만 만들어도 불교에서 만든 단위인 "정"를 넘어갑니다. 

 

( 만 조 경 해 자 양 구 간 [정] 재 극 황하사 아승기 나유타 불가사의 무량대수 )

 

500억분의 1의 확률은 그리 좋은 비밀번호값이 아닙니다. 이해를 도와드리면, 컴퓨터는 모든 것을 숫자로 바꿉니다. 지문이든 DNA든... 그럼 이 가짓수가 중요한 데, 500억밖에 되지 않는 것입니다. 오히려 위의 핀번호방식이 훨씬 더 안전합니다. 물론 이 것도 좀 잘 다루면 오히려 이 확률을 확~ 늘려 버릴 수 있습니다. 하지만...

생채인식은 치명적인 문제가 있습니다.

만약 나의 지문의 숫자값[컴퓨터로 저장되는]이 털리면... 어느 나쁜 해커놈이 지문값을 가지고 가버리면 이 건 답이 없습니다. 지문은 바꿀 수 없습니다. 손가락 바꿀 겁니까? 홍채면 눈 빼고 다른 눈 넣을 겁니까? DNA는 다른 사람 DNA 복사 할 건가요? 털리면 죽는 그 순간까지 아무 것도 할 수 없습니다. 지문하나만 털리면 세상의 모든 지문인식을 쓰는 곳 전부를 쓸 수 없습니다. 그 나쁜놈이 지문으로 다른 곳에 회원등록하는 것도 가능하게 됩니다. 사실상 모든 상황이 종료되고 그 나쁜 놈이 나쁜 쪽으로 쓰지 않기를 기도하는 것 밖에 답이 없습니다. 그냥 무방비로 당해야 합니다. 아마 머지않아, 사이트에 본인인증하고 "생체인식이 털렸으니, 영원히 이 방식을 사용하지 않겠습니다." 라는 등록페이지가 생길 겁니다.

 

생채인식보안이라는 환상을 절대 믿으시면 안됩니다. 

따라서, 생체인식은 아예 쓰지 말아야 하는 보안매체입니다.

 

개발자들마저 이 생채인식을 잘 못 이해하고 환상을 꾸는 경우가 많습니다. 절대 쓰지 말아야 되는 방식입니다.

생체인식은 그 사람이 맞는지 눈앞에서 확인하는 용도일 뿐, 사이트에 들어가는 비밀번호로 사용해서는 안되는 것입니다.

그럼 그 긴 비밀번호를 사이트마다 다르게 해야한다면 어떻게 외우나요?

외우는 것이 좋지만 많아지면 외우기 힘들어 지게 되죠. 알패스같은 어플을 이용할 수도 있지만, 이도 그리 좋은 방식은 아니라서...

 

필자의 경우 엑셀파일이 하나 있습니다. 이 곳에는 저의 모든 비밀번호가 담겨 있습니다. 

이 엑셀파일자체에 비밀번호가 있습니다. 유일하게 이 엑셀파일의 비밀번호만 외우고 있으면 됩니다. 물론 단점도 있습니다. 사람이 많은 곳에서는 열어 볼 수도 없으니, 하지만 워낙 비밀번호가 길어서, 옆에서 봐도...지만.. 카메라로 찍어 버릴 수 있으니 조심..

 

더 좋은 방법있으면 메일로 좀 보내주시길..

 

 

현재 가장 안전한 비밀번호는 그냥 타이핑으로 입력하는 길다란 비밀번호입니다.

 

일반사용자가 알아야 하는 정도는 이정도... 개발자용은 다음에 기회가 되면 올리도록하겠습니다. 더 신경을 써야 할 것이 많으니까요... 그럼

 

 

 

 

 

 

Replies
Reply Write