우선 다음과 같은 가상의 비밀번호 3개를 만들어 봤습니다.
① 영문+숫자로 된 6자리 비밀번호 = Atomic
② 영문+숫자+특수문자로 된 5자리 비밀번호 = C4$b5
③ 영문+숫자+특수문자로 된 11자리 비밀번호 = dnjsWK$3fir
여기서는 컴퓨터가 무작위로 비밀번호를 만들어 로그인을 시도할 때, 1회 시도에 0.01초가 걸린다고 가정할게요. 첫째 자리에 들어올 수 있는 경우의 수는 70개 정도예요. 즉 한 자리로 된 비밀번호는 0.7초 만에 들키는 거예요. 어떻게 70개가 나왔냐고요?
영문은 A부터 z까지 26개의 문자로 이뤄져 있어요. 대소문자를 구분하면 총 52개지요. 숫자는 0부터 9까지 10개입니다. 특수문자는 적으면 5개, 많으면 20개 이상도 사용할 수 있지만 여기서는 8개로 가정했답니다. 즉 영문과 숫자, 특수문자를 모두 이용하면 매 자리수마다 70가지 경우의 수가 적용되는 거예요. 이를 계산해 보면
2자리 비밀번호는 70x70x0.01=49초
3자리 비밀번호는 70x70x70x0.01=3,430초(약 57분)
4자리 비밀번호는 70x70x70x70x0.01=240,100초(약 66시간)
5자리 비밀번호는 70x70x70x70x70x0.01=16,807,000초(약 194일)이 걸려요.
만일 영문만으로 이루어진 6자리 비밀번호를 사용하면 52x52x52x52x52x52x0.01=3,802,040초(약 44일)로, 세 종류를 모두 사용한 5자리 비밀번호보다 더 빨리 해커에게 들켜요.
보안에는 자리수가 더 중요
자리수가 많아질수록 이 차이는 더 커져요. 더 큰 수로 거듭제곱을 하기 때문이지요. 세 종류를 이용해 만든 ③번 11자리 비밀번호는 영문으로만 된 11자리 비밀번호보다 시간이 26배 이상 더 걸려요. 영문으로 된 11자리 비밀번호가 1년 만에 해킹된다면, 특수문자까지 이용한 10자리 비밀번호는 26년이 걸리는 셈이에요. 실제로는 앞에서 제시한 조건일 경우 세 종류로 만든 11자리 비밀번호를 알아내는 데 627억 년 이상이 걸린답니다.
비밀번호를 해킹당하지 않기 위해서는 자리수가 많을수록 좋다.
특수문자가 들어가면 분명 해킹 방지에 도움이 되는 것은 사실이지만 자리수를 10자리 이상으로 만드는 게 좋아요. 자리수가 한 자리 늘어날 때마다 해커에게 필요한 시간이 기하급수적으로 증가하기 때문이지요.
국내 사이트의 경우, 비밀번호에 특수문자를 넣도록 강제하는 것이 고객 개인정보 보호를 위해서라기보다는 사이트 관리의 편의성 때문이 아닌가 하는 생각이 들어요. 실제로 우리나라는 개인의 비밀번호가 해킹된 경우보다 사이트 전체가 해킹돼 수십 만~수 백만 명의 개인정보가 노출된 경우가 더 많거든요.
전편
왜 비밀번호에 특수문자를 넣으라고 하는 걸까?(1)-[바로가기]
글: 김택원 과학칼럼니스트
출처: https://www.ideamaru.or.kr/contentboard/graphicnews/20190125000001
'기타 > 잡동사니' 카테고리의 다른 글
UTF-8, UTF-16, ANSI (0) | 2020.01.05 |
---|---|
vagrant 설치하기 & Error (0) | 2020.01.03 |
HDLC Protocol (0) | 2019.06.19 |
CRC (순환 중복 검사) (0) | 2019.06.18 |
비밀번호에 영문+숫자+특수문자를 조합하라는 이유 (1) (0) | 2019.06.01 |