Thinking Different





패스워드 이용 가이드?

요즘 인터넷 사이트를 가입하거나 기존의 사이트를 접속하다보면 패스워드를 안전하게 만들기 위해서 "특수문자, 대문자, 숫자등을 섞은 문자를 8자 이상"으로 암호화 하라고 뜨는 것을 볼 수 있다. 한국정보보호진흥원(KISA) 에서 발행한 "패스워드 선택 및 이용가이드" 에서도 아래와 같이 비슷한 내용들을 담고 있는 것을 볼 수 있다.


<한국정보보호진흥원(KISA)의 "패스워드 선택 및 이용가이드" 중에서>

패스워드 선택 및 이용가이드.pdf




초창기 스마트폰의 인증방식

초창기 스마트폰의 암호방식은 패턴, PIN 암호화 등이 주로 사용되었다. 패턴 암호화의 경우에는 기존 패스워드(알파벳, 숫자, 문자 등)를 입력하는 방식에서 새로운 암호방식으로 등장하여 편의성이 한층 증대된 암호화 방식으로 지금까지 가장 많이 쓰고 있는 형식이기도 하다

<패턴 인증>


사실 안드로이드에 사용되는 위와 같은 패턴 인증 방식의 경우는 "알파벳 3자리 수준의 보안" 정도로 밝혀지기도 하여 보안에 새로운 문제점으로 지적되기도 하였다. 안드로이드가 지원하는 패턴은 최소 점 4개를 연결해야 하며, 다른 점은 위를 통과하는 건 가능하다. 이런 규칙에 따라서 안드로이드가 지원하는 모든 패턴을 망라하면 패턴 수는 14만 704가지다. 많아 보이지만 대소문자를 구분하지 않은 알파벳 문자 3개 조합이 14만 608자리라는 점을 감안하면 거의 같은 수라는 걸 알 수 있다. 다시 말해 안드로이드가 지원하는 패턴 인증은 "알파벳 문자 3개 암호와 동일한 수준"의 보안이라는 얘기다.



생체 인증으로의 진화

현재 암호화의 방향은 Biometrics (생체인증) bio-security (생체암호) 방식으로 진화하였으며, 가장 대표적인 사용기기는 휴대폰이 아닐까 한다. 구글의 아이폰, 삼성 겔럭시 등 휴대폰의 인증 방식에서 지문인증이나 홍체인증을 이용한 인증체계를 사용하고 있다.


<지문 인증>


<홍체 인증>


구글의 경우 USB를 이용한 인증키 방식으로 새롭게 선보였으며, 이는 USB 방식이기 때문에 바이러스나 악성코드에 민감할 수 있고, 또한 USB를 잊어버렸을 경우에는 대처가 불가능할거 같다는 생각도 든다.

<구글 USB 인증키>


FIDO 와 패스워드

FIDO Alliance라는 연합체가 있다. 온라인 환경에서 생체인식기술을 활용한 인증방식인 FIDO 대한 기술표준을 정하기 위해 2012년 7월 설립된 협의회로써 삼성,  블랙베리, 구글, MS, 페이팔 등 대외의 많은 굵직한 테크 회사들이 참여하고 있다.(애플은 탈퇴)

FIDO는 패스워드를 대체할 인증용 오픈 스탠다드를 만들자는 업계의 공통된 노력에서 출발되었으며, 지문인식과 같은 하드웨어 생체인증기술과 온라인 서비스 인증을 연결하는 고리에 공통적인 스펙을 만드는 것이 요지이다. FIDO 에서는 Zero-Knowledge Proof 라는 프로토콜을 만들고 있는데, 이를 이용하면 사용자가 가지고 있는 모바일 기기(스마트폰)와 지문(생체인식)을 결합한 형태의 인증을 써서 접속하는 모든 인터넷 서비스를 쉽게 접근하게 할 수 있도록 한다. 이는 모바일 기기를 잃어버리거나 지문이 유출되는 경우가 발생할 수는 있지만, 두가지 경우가 동시에 일어나는 경우는 극히 드물기 때문에 기존의 패스워드 인증 방식보다 보안 레벨이 더 높아진다고 보고 있다. 하지만 기타 업계에서는 ‘패스워드를 죽이려는 음모’ 라는 말로 표현되곤 한다.


생체인식에 대한 의구심

많은 스마트폰 제조회사들이 지금 내세우고 있는 부분들은 바로 생체(지문, 홍체)인식, 인증이 될 것이다. TV에 나오는 CF들을 보면 다들 지문인식, 홍체인식을 통한 쉽고 빠른 보안 해결이라는 이미지를 내걸고 광고를 하고 있다. 과연 이 생체인식이 보안에 강력할 것인가? 라는 것이 의구심이 드는 부분이다. 왜냐하면 패스워드의 경우에는 암호가 유출이 되면 비밀번호를 재설정하여 변경하면 되지만, 홍체나 지문인식과 같은 생체인식의 경우 한번 노출이 되면 재설정이 불가능하다는 것이 아주 강력한 문제가 된다. 혹자는 그렇게 생각할지도 모른다. 지문이 유출되더라도 다른 손가락 지문으로 바꾸면 된다고 하는데 손가락이 수백 수천개가 있는것도 아니고 심지어 홍체의 경우 사람의 눈은 2개밖에 존재하지 않는다. 태어날때 생성되어 변경이 불가능한 생체정보의 경우 일단 한번 노출되면 되돌릴 수 없는 강력한 문제점이 존재하기 때문에 생체인증에 대한 위험성은 높을 수밖에 없다.


<생체 인증을 통한 금융거래 결제>


그리고 생체정보의 데이터 처리 및 관리 부분에 있어서도 그 위험성은 높을 수 밖에 없는데 생체정보를 가지는 수많은 회사들이 수년내에 보안유출사고가 안되리라는 보장이 없다는 것이 문제점이다. 한국에서는 대부분 큰 회사들(KB, 인터파크, NH 등)에서 보안유출사고들을 많이 겪은 것을 보면 과연 그 회사들이 기존의 정보도 제대로 지키지 못해 유출되는 입장에서 생체정보도 제대로 지킬 수 있을까? 라는 생각은 당연해질 수밖에 없는 부분이다.


















무차별 대입공격 (Burst-force Attack)

해커들이 비밀번호를 해킹하는 방법에는 "무차별 대입공격 (Burst-force Attack)" 이라는 방식으로 암호를 찾아내는데 모든 문자의 경우의 수를 대입하면서 비밀번호가 맞을때까지 공격하는 방법과, wordlist 를 이용한 공격 방법이 있다.

<wordlist를 이용한 무차별 대입 공격>


<RAR 패스워드를 찾기 위한 무차별 대입 공격>


이러한 무차별 대입 공격을 막는 방법은 사실 의외로 간단하다. 로그인 계정의 인증 횟수에 제한을 두고 재인증 시간을 지정하면 간단히 해결되는 부분이다. 



안전한 패스워드는 없는가?

수많은 보안사고사례나 패스워드 보안 경고에도 여전히 많은 웹 유저들이 '123456'이나 '12345', 'password', 또는 자판 순서대로 키를 누르면 되는 'qwerty' 등을 사용하는 것으로 밝혀졌다. 미국 패스워드 관리 솔루션 업체 스플래시데이터가 인터넷에 유출된 사례 300만 건을 조사한 결과로 이런 종류의 패스워드는 쓸모없는 것이나 마찬가지라고 지적했다.


KISA에서 제공되는 패스워드 이용가이드를 토대로 만들어지는 국내의 사이트들에서는 기본적으로 "대소문자, 특수문자, 숫자와 함께 8자리 이상" 으로 패스워드를 만들어라 라고 제시한다. 제시된 기준으로 패스워드를 만들게 되면 거의 대부분의 사람들은 앞자리 대문자 한자리와 영소문자 여러개 그다음 특수문자와 숫자를 맨 마지막에 적는 기준을 만들고 패스워드를 만들것이다. 예를 들면 다음과 같이 "Aasdf!@34" 이런 식으로 만들게 될것이다. 중간에 숫자나 특수문자를 섞어서 넣는다는 것은 사람이 쓰고 외우기가 쉽지 않은 단점이 존재한다. 그렇게 사용하는 사람들이 있다면 아주 높은 수준의 암호를 사용한다고 보면 된다. 하지만 대부분의 사람들은 그렇게 기억하고 사용하기가 쉽지 않다. 


기타 다른 보안 전문가들은 보안수준을 높히려면 인터넷에 존재하는 수많은 웹사이트들의 아이디와 비밀번호를 각자 다 다르게 생성하여 기억하고 사용해야 한다고 하는데, 그렇게 하면 얼마나 좋을까.. 사람이라는게 그러기가 쉽지 않다. 보통 대부분의 사람들은 하나의 아이디와 비밀번호를 가지고 다량의 웹사이트 계정들을 사용할 것이다.


최근 독일연방정부에서 발표한 안전한 패스워드를 만드는 몇가지 방법을 소개한 부분이 있어서 그 내용은 다음과 같다.


  ▲ 패스워드를 최소한 12자 이상 길게 만들어라. 암호화된 네트워크를 보호하려면 패스워드가 최소한 20자가 되어야 한다.

  ▲ 대문자와 소문자, 특수문자와 숫자를 섞어 만들어라.

  ▲ 이름이나 가족 생일, 흔히 사용하는 문자나 숫자의 조합을 피해라. 일련번호도 피해야 한다.

  ▲ 쉬운 속임수를 피해라. 'password'나 '123' 어느 것도 안전한 패스워드가 아니면 'password123' 역시 안전하지 않은 법이다.

  ▲ 영원한 패스워드는 없다. 보안을 위해 수개월마다 바꿔야 한다. 최소한 6개월마다 바꿔라.

  ▲ 패스워드 정보를 이메일로 보내거나 제3자와 공유해서는 안 된다. 이메일은 보안에 취약하다.



무엇보다도 안전한 패스워드를 만드는 가장 중요한 첫번째 요소는 패스워드의 길이이다. 국내외 사이트에서 사용하는 기본 최소 암호 길이는 8자리로 이는 보안에 아주 위험한 부분중 하나이다. 최소 12자리에서 20자리 정도로 지정하여야 보안에 안전하다고 한다.


유용한 사이트 중에 하나인 패스워드가 얼마나 안전한지 확인해주는 사이트 "HOW SECURE IS MY PASSWORD?" 가 있는데 패스워드를 입력하면 얼마만에 그 암호가 뚤릴수 있는지 시간으로 알려주는 사이트이다.

8자리 패스워드가 얼마나 위험한지는 아래 사이트를 이동하여 특수문자, 영소문자,숫자 등을 조합해서 8자리를 넣어보면 알것이다. 



https://howsecureismypassword.net/  비밀번호 안전 검사 확인 사이트



자 그렇다면 12자리 이상 20자리 이상의 패스워드를 만들면 어떻게 기억을 하냐? 라고 반문을 하실수 있는 분들이 있는데 그 방법은 의외로 간단한 것 같아서 소개해 드릴까 한다. 그 방법은 바로 문장으로 암호를 만들면 될 것이다. 또한 특수문자를 포함해준다면 암호의 보안 레벨은 더더욱 높아질 것이다. 


예를 들면 다음과 같이 영문자판으로 한글을 치면서 문장을 만드는 방법이다.

한글로는 "야호!대한민국815" 라고 치면 영문으로 "digh!EOgksalsrnr815" 가 해당되며, 길이도 19자리에 특수문자와 숫자 대소문자가 포함되었다. 자 이것을 위 비밀번호 안전 검사 사이트에서 돌려보면 아래와 같이 나온다.


<"야호!대한민국815" 비밀번호 검사 결과>


위 테스트와는 다르게 특수문자나 기타 숫자를 포함하지 않고 18자리 이상만 알파벳으로 생성을 하더라도 암호의 수준은 굉장히 높아지는 것을 확인할 수 있다. 


생체인식에 대한 다른 관점에 대해 생각해보는 계기가 되었으면 좋겠다 싶어 글을 작성하게 되었다. 이에 대한 반론이나 기타 의견이 있으신 분들은 많은 댓글 부탁드립니다.