홈페이지 취약점 분석 이야기 파일 지도 사진 깨알






>> 목록보이기
#비밀번호 복잡도 #안전한 비밀번호 #기억하기 쉬운 비번 #취약한 비밀번호 #John the Ripper #무작위대입공격 #양자컴퓨터 #Quantum Computer

재미로 보는 비밀번호 복잡도

안전한 비밀번호는 대문자, 소문자, 숫자, 특수기호를 모두 넣어서 14자리 이상이면 좋다.
외우기 쉬운 비밀번호는 자신만이 아는 사실을 포함하는 세가지 정도의 단서를 사용하면 된다.
  - Dudgml!50522spdlqj ("내사랑 영희15년 5월 22일에 만났지. 여기는 네이버 누리집.")
  - Ekdma!50522dudgml ("여기는 다음 홈페이지. 15년 5월 22일에 만난 내사랑 영희.")
첫번째 문자는 대문자로 한다. 첫번째 숫자는 Shift를 눌러서 특수문자로 입력되게 한다. 그리고 비번 변경이 필요하면 위의 세 가지 단서의 위치를 바꾸면 된다.

"내 비밀번호는 얼마나 안전할까? (How secure is my passowrd?)"라는 비밀번호 안전성 검사 누리집이 있다. 비밀번호를 어떻게 만든 것이 좋은 지를 시험해볼 수 있다. (그렇다고 내 비밀번호를 직접 입력하지는 말 것!!!)

비밀번호 안전도 검사 누리집
[ https://howsecureismypassword.net/ 접속 화면 ]

이 누리집의 인터페이스는 간단하다. 자신이 생각하는 문자열을 입력하면 얼마나 빨리 암호를 풀 수 있는 지를 보여준다. 우리가 생각하는 것보다 엄청나게 빨리 비밀번호가 풀릴 수 있다고 한다. "수퍼컴을 쓰나?" 마음 편하게 해커가 세상에서 가장 빠른 컴퓨터를 가지고 있다고 생각하고 결과를 보자 ^^

비밀번호 안전도 검사 누리집 시험
[ https://howsecureismypassword.net/ 비밀번호 시험: "Aa1!Aa1!Aa1!Aa" ]

위의 그림은 https://howsecureismypassword.net/에 Aa1!Aa1!Aa1!Aa를 입력했을 때의 비번을 풀 수 있는 시간이다. 2억400만년이다. 현실적으로는 풀기 불가능하다는 뜻이다. 여러가지 입력하다 보니 두 가지 규칙이 있는 것을 알 수 있다.

문자 1종(영어 소문자)으로 만들 경우

 43210987654321
       aaaaaaaa  0.00년
      aaaaaaaaa  0.00년
     aaaaaaaaaa  0.00년
    aaaaaaaaaaa  0.00년
   aaaaaaaaaaaa  0.08년
  aaaaaaaaaaaaa  2.00년
 aaaaaaaaaaaaaa  51.00년

비번 문자열이 길수록 시간이 많이 걸린다.

문자 2종(영어 소문자, 숫자)으로 만들 경우

 43210987654321
       a1a1a1a1  0.00년
      a1a1a1a1a  0.00년
     a1a1a1a1a1  0.00년
    a1a1a1a1a1a  0.08년
   a1a1a1a1a1a1  4.00년
  a1a1a1a1a1a1a  100.00년
 a1a1a1a1a1a1a1  5000.00년

비번 문자열이 길수록 시간이 많이 걸린다. 같은 길이라도 문자 1종을 사용하는 것에 비해서 연산시간이 100배 정도 늘어났다.

문자 3종(영어 소문자, 대문자, 숫자)으로 만들 경우

 43210987654321
       aA1aA1aA  0.00년
      aA1aA1aA1  0.01년
     aA1aA1aA1a  0.67년
    aA1aA1aA1aA  41.00년
   aA1aA1aA1aA1  3000.00년
  aA1aA1aA1aA1a  15,8000.00년
 aA1aA1aA1aA1aA  1000,0000.00년

비번 문자열이 길수록 시간이 많이 걸린다. 같은 길이라도 문자 2종을 사용하는 것에 비해서 연산시간이 2000배 정도 늘어났다.

문자 4종(영어 소문자, 대문자, 숫자, 특수문자)으로 만들 경우

 43210987654321
       aB1@aB1@  0.00년
      aB1@aB1@a  0.08년
     aB1@aB1@aB  6.00년
    aB1@aB1@aB1  4000.00년
   aB1@aB1@aB1@  3,4000.00년
  aB1@aB1@aB1@a  300,0000.00년
 aB1@aB1@aB1@aB  2,0400,0000.00년

비번 문자열이 길수록 시간이 많이 걸린다. 같은 길이라도 문자 3종을 사용하는 것에 비해서 연산시간이 20배 정도 늘어났다.

(영어 소문자, 대문자, 숫자, 특수문자) 조합의 수에 따른 비교

 문자 1종 예: abcdefghijklmn           51년
 문자 2종 예: a1b2c3d4e5f6g7         5000년
 문자 3종 예: aA1bB2cC3dD4eE    1000,0000년
 문자 4종 예: aB1@bC2@dE3#eF  2,0400,0000년

14자리 비밀번호를 소문자/대문자/숫자/특수문자 중 사용하는 종수에 따라 시간을 비교해 보았다. 종의 수가 늘어날수록 비밀번호 해독연산에 필요한 시간도 늘어나는 것을 볼 수 있다.

결론

안전하게 비밀번호를 만들려면 가능한 길게 만들 것. 그리고 대문자/소문자/숫자/특수문자를 모두 포함할 것.

앞으로 벌어질 일에 대한 예측

현재 이 문서를 작성하고 있는 노트북의 경우에는 John the Ripper를 돌렸을 때 각 CPU thread가 초당 300개 이상의 비번을 계산한다. 쓰레드 수가 8개이니 초당 2400개 정도를 연산할 수 있다는 뜻이다. 이 노트북의 CPU는 "Intel(R) Core(TM) i7-3635QM CPU @ 2.40GHz"이다. 2016년 현재 데스크탑용 스카이레이크 i7-6700K CPU의 각 쓰레드는 초당 900개 정도의 비밀번호를 계산할 수 있다. 모든 코어를 사용하면 초당 7200개 정도의 비번을 연산할 수 있다. i7-6700K CPU로 하룻동안 7200*3600*24 = 6,2208,0000 (6억2천만) 번의 비밀번호 연산을 할 수 있다는 뜻이다.

숫자로만 구성된 비밀번호의 예를 들어보자. 8자리 숫자라면 경우의 수는 10^8 즉 1,0000,0000의 경우의 수를 가지므로 i7-6700K CPU로는 대략 네시간 정도면 풀어낼 수 있다 (수학적 평균으로는 2시간 정도이다). 9자리의 숫자라면 최대 10,0000,0000/6,2208,0000=1.6일, 평균적으로는 0.8일(19시간18분)이면 풀어낼 수 있다.

숫자는 문자의 수가 총 10개이므로 단순하다. 여기에 영어 소문자 26개, 대문자 26개, 특수문자 33개가 포함되면 - 사용할 수 있는 문자의 종류는 총 95개 - 문자열의 길이가 늘어날 수록 경우의 수는 기하급수적으로 늘어나게 된다. 예를 들어 문자열이 8자리이면 경우의 수는 95^8(6634,2043,1289,0625 = 6634경)이 되므로 - i7-6700K CPU로 연산하는 데 최대 2만9천년이 걸림 - 현실적으로 비밀번호 연산이 불가능해진다.

그런데 양자컴퓨터(Quantum Computer)가 개발되고 있다. 2011년 5월 11일, 캐나다의 D-Wave Systems에서 128큐비트 프로세스가 장착된 세계최초의 상용화 양자컴퓨터인 D-Wave One을 내놓았으며, 미국 록히드마틴에서 100억 원에 구입했다고 한다. NASA와 구글은 차기작을 구매하였다. 2015년 말, 구글과 나사에서 특정 알고리즘에서 일반컴퓨터 보다 약 1억 배 더 빠르다고 주장하는 양자컴퓨터의 실물을 공개했다. 1억배 더 빠르다고 한다.

양자컴퓨터가 일반화되기까지는 아직 시간이 많이 걸리겠지만 가시권 내에 있는 것은 확실하다. 현재도 1억배 이상의 성능을 낼 수 있다고 한다. i7-6700K가 약 3만년이 걸리던 일을 양자컴퓨터는 2.6시간이면 연산해낼 수 있게 될 것이다. 비밀번호 8자리는 너무나 취약한 것이 된다는 뜻이다.

재미있는 사실은 HowSecureIsMyPassword 누리집에서 대문자/소문자/숫자/특수문자를 모두 사용한 8자리 비밀번호는 모두 9시간이면 풀 수 있다고 나온다. 양자컴퓨터의 세시간과 비숫한 수준이다. 이 홈페이지 개발자가 양자컴퓨터를 염두에 두고 알고리즘을 설계하고 시간을 계산한 것일까?

[처음 작성한 날: 2016.12.03]    [마지막으로 고친 날: 2016.12.03] 


< 이전 글 : 오늘의 웹서버 공격 로그, w00tw00t (DFind) (2016.12.04)

> 다음 글 : 2016.12.01-02 웹서버 공격 로그, armgg DDoS 악성코드 (2016.12.02)


크리에이티브 커먼즈 라이선스 이 저작물은 크리에이티브 커먼즈 저작자표시 4.0 국제 라이선스에 따라 이용할 수 있습니다.
잘못된 내용, 오탈자 및 기타 문의사항은 j1n5uk{at}daum.net으로 연락주시기 바랍니다.
문서의 시작으로 컴퓨터 깨알지식 웹핵 누리집 대문
 __
( 소프트웨어 설계를 하는 두가지 방법이  )
( 있다. 하나는 빠진 게 없는지 쉽게  )
( 확인할 수 있게 최대한 단순하게 만드는  )
( 것이고, 또 한가지는 빠진 게 없는지  )
( 확인할 수 없게 최대한 복잡하게 만드는  )
( 것이다.  )
(  )
( - C.A.R. Hoare, Quick Sort의 고안자  )
 --
o                             .       .
 o                           / `.   .' " 
  o                  .---.  <    > <    >  .---.
   o                 |    \  \ - ~ ~ - /  /    |
         _____          ..-~             ~-..-~
        |     |   \~~~\.'                    `./~~~/
       ---------   \__/                        \__/
      .'  O    \     /               /       \  " 
     (_____,    `._.'               |         }  \/~~~/
      `----.          /       }     |        /    \__/
            `-.      |       /      |       /      `. ,~~|
                ~-.__|      /_ - ~ ^|      /- _      `..-'   
                     |     /        |     /     ~-.     `-. _  _  _
                     |_____|        |_____|         ~ - . _ _ _ _ _>
.. -- -- | - .. .... | ... / .. .../ ... {] . .. .. .. ..| ...... .../ .../ .. ...... ... ... ] .. [ .../ ..../ ......./ .. ./// ../ ... .. ... .. -- -- | - .. .... | ... / .. .../ ... {] . .. .. .. ..| ...... .../ .../ .. ./// ../ ... .. ... ...| ..../ ./ ... / ..| ....| ........ / ... / .... ...... ... ... ] .. [ .../ ..../ ......./ .....| ..../ ./ ... / ..| ....| ........ / ... / .... ...| ..../ ./ ... / ..| ....| ........ / ... / .... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .