비밀번호에 영문+숫자+특수문자를 조합하는 이유 (2)

2019. 6. 1. 15:01·기타/잡동사니

우선 다음과 같은 가상의 비밀번호 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

 

아이디어마루 - 국민의 아이디어를 가치화하는 대한민국 사업 아이디어 플랫폼

 

www.ideamaru.or.kr

 

'기타 > 잡동사니' 카테고리의 다른 글

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
'기타/잡동사니' 카테고리의 다른 글
  • vagrant 설치하기 & Error
  • HDLC Protocol
  • CRC (순환 중복 검사)
  • 비밀번호에 영문+숫자+특수문자를 조합하라는 이유 (1)
M_Falcon
M_Falcon
  • M_Falcon
    Falcon
    M_Falcon
  • 전체
    오늘
    어제
    • 분류 전체보기 (432)
      • Web (16)
        • Nodejs (14)
        • Javascript (23)
        • FrontEnd (4)
      • DataBase (39)
        • Fundamental (1)
        • Redis (4)
        • PostgreSQL (10)
        • NoSQL (4)
        • MySQL (9)
        • MSSQL (3)
        • Error (4)
      • Algorithm (79)
        • Algorithm (문제풀이) (56)
        • Algorithm (이론) (23)
      • JVM (65)
        • Spring (13)
        • JPA (5)
        • Kotlin (13)
        • Java (24)
        • Error (7)
      • 기타 (5)
        • Kafka (3)
        • Kubernetes (3)
        • Docker (13)
        • git (19)
        • 잡동사니 (27)
      • 재테크 (11)
        • 세무 (4)
        • 투자 (3)
        • 보험 (0)
      • BlockChain (2)
        • BitCoin (0)
      • C (32)
        • C (10)
        • C++ (17)
        • Error (3)
      • Low Level (8)
        • OS (3)
        • 시스템 보안 (5)
      • 네트워크 (3)
      • LINUX (30)
        • Linux (26)
        • Error (4)
      • 저작권과 스마트폰의 이해 (0)
      • 생각 뭉치 (6)
      • 궁금증 (2)
      • Private (4)
        • 이직 경험 (0)
        • 꿈을 찾아서 (1)
      • Android (21)
        • OS (4)
  • 블로그 메뉴

    • 홈
    • WEB
    • 알고리즘
    • DataBase
    • Linux
    • Mobile
    • C
    • 방명록
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    linux
    Spring
    ubuntu
    database
    PostgreSQL
    android
    kafka
    알고리즘
    JPA
    C++
    Programmers
    Kotlin
    백준
    java
    Git
    프로그래머스
    docker
    javascript
    algorithm
    Bitcoin
  • hELLO· Designed By정상우.v4.10.3
M_Falcon
비밀번호에 영문+숫자+특수문자를 조합하는 이유 (2)
상단으로

티스토리툴바