홈페이지 취약점 분석 이야기 | 파일 지도 사진 깨알 |
---|
>> 목록보이기 재미로 보는 비밀번호 복잡도
안전한 비밀번호는
"내 비밀번호는 얼마나 안전할까? (How secure is my passowrd?)"라는 비밀번호 안전성 검사 누리집이 있다.
비밀번호를 어떻게 만든 것이 좋은 지를 시험해볼 수 있다.
(
이 누리집의 인터페이스는 간단하다. 자신이 생각하는 문자열을 입력하면 얼마나 빨리 암호를 풀 수 있는 지를 보여준다. 우리가 생각하는 것보다 엄청나게 빨리 비밀번호가 풀릴 수 있다고 한다. "수퍼컴을 쓰나?" 마음 편하게 해커가 세상에서 가장 빠른 컴퓨터를 가지고 있다고 생각하고 결과를 보자 ^^
위의 그림은 https://howsecureismypassword.net/에 문자 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천년이 걸림 - 현실적으로 비밀번호 연산이 불가능해진다.
그런데 양자컴퓨터가 일반화되기까지는 아직 시간이 많이 걸리겠지만 가시권 내에 있는 것은 확실하다. 현재도 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으로 연락주시기 바랍니다. 문서의 시작으로 컴퓨터 깨알지식 웹핵 누리집 대문 |