"비밀번호는 8자 이상, 특수문자 포함"이라는 규칙, 왜 있는 걸까요? 귀찮은 형식 검사처럼 보이지만, 그 뒤에는 명확한 수학이 있습니다. 해커가 비밀번호를 뚫는 원리를 이해하면, 어떤 비밀번호가 진짜 안전한지 스스로 판단할 수 있게 됩니다.
해커는 어떻게 비밀번호를 뚫을까: 무차별 대입 공격
가장 기본적인 공격은 **무차별 대입(brute force)**입니다. 말 그대로 가능한 모든 조합을 하나씩 대입해 보는 방식이죠. aaaa, aaab, aaac... 이런 식으로요.
무식해 보이지만, 컴퓨터는 초당 수십억 번의 시도를 할 수 있습니다. 특히 유출된 데이터베이스를 상대로 오프라인에서 GPU를 돌리는 경우, 시도 속도는 상상 이상입니다. 여기서 방어의 핵심은 하나입니다. 가능한 조합의 수를 천문학적으로 키우는 것.
조합의 수는 이렇게 계산됩니다.
조합 수 = (사용 가능한 문자 종류 수) ^ (비밀번호 길이)
지수 함수이기 때문에, 길이가 한 자리 늘어날 때마다 조합 수는 문자 종류 수만큼 곱해집니다. 이게 모든 비밀번호 규칙의 근거입니다.
조합 수 직접 계산해 보기
문자 종류별로 실제 조합 수를 계산해 보면 차이가 극적으로 드러납니다.
| 구성 | 문자 종류 | 8자 조합 수 | 12자 조합 수 |
|---|---|---|---|
| 소문자만 | 26종 | 26⁸ ≈ 2.1 × 10¹¹ (약 2,088억) | 26¹² ≈ 9.5 × 10¹⁶ |
| 대문자 + 소문자 | 52종 | 52⁸ ≈ 5.3 × 10¹³ | 52¹² ≈ 3.9 × 10²⁰ |
| 대소문자 + 숫자 | 62종 | 62⁸ ≈ 2.2 × 10¹⁴ | 62¹² ≈ 3.2 × 10²¹ |
| 대소문자 + 숫자 + 특수문자 | 약 94종 | 94⁸ ≈ 6.1 × 10¹⁵ | 94¹² ≈ 4.8 × 10²³ |
8자 소문자(26⁸)와 12자 풀 조합(94¹²)의 차이는 약 2조 배가 넘습니다. 같은 공격 장비라면, 앞의 것이 수 시간~수일 안에 뚫릴 수 있는 반면 뒤의 것은 사실상 수백 년 이상이 걸리는 수준입니다. (정확한 시간은 공격자의 하드웨어와 해시 방식에 따라 크게 달라지므로, "며칠 vs 사실상 불가능"이라는 규모의 차이로 이해하는 게 정확합니다.)
표에서 한 가지 더 눈여겨볼 점: 특수문자를 추가하는 것(가로 이동)보다 길이를 4자 늘리는 것(세로 이동)이 조합 수를 훨씬 크게 키웁니다. 길이가 지수에 들어가기 때문입니다.
무차별 대입보다 무서운 것: 흔한 나쁜 패턴
현실에서 해커는 모든 조합을 다 시도하지 않습니다. 사람들이 쓰는 패턴이 뻔하기 때문에, 그 뻔한 것부터 시도합니다.
- 사전 단어:
password,dragon,iloveyou같은 단어는 사전 공격(dictionary attack)으로 순식간에 걸립니다.p@ssw0rd처럼 흔한 치환을 해도 공격 도구는 이미 알고 있습니다. - 개인정보 조합: 생일, 전화번호 뒷자리, 가족 이름 + 연도(
minji2020). SNS만 봐도 추측 가능한 정보입니다. - 키보드 패턴:
qwerty,1q2w3e4r,asdf1234. 유출 비밀번호 상위권 단골입니다. - 재사용: 가장 치명적입니다. 한 사이트가 유출되면 해커는 그 이메일+비밀번호 조합을 다른 모든 사이트에 대입해 봅니다(크리덴셜 스터핑). 비밀번호 자체가 아무리 강해도, 재사용하는 순간 가장 약한 사이트의 보안 수준으로 떨어집니다.
좋은 비밀번호 전략 4가지
1. 길이가 왕이다 — 패스프레이즈 방식
위 표에서 봤듯 길이가 지수를 결정합니다. 복잡한 8자보다 긴 16자가 훨씬 강합니다. 기억하기 쉬운 방법이 **패스프레이즈(passphrase)**입니다. 서로 관련 없는 단어 여러 개를 이어 붙이는 방식이죠.
예:
파란고래-자전거-커피7잔스타일 (실제로는 본인만 아는 조합으로)
길이는 길지만 기억하기 쉽고, 조합 수는 압도적으로 큽니다.
2. 사이트마다 다른 비밀번호
재사용만 끊어도 유출 피해가 해당 사이트 하나로 격리됩니다. 모든 계정이 도미노처럼 무너지는 걸 막는 가장 확실한 방법입니다.
3. 2단계 인증(2FA)은 무조건 켜기
비밀번호가 뚫려도 2단계 인증이 있으면 계정은 지켜집니다. 이메일·금융·클라우드 등 핵심 계정부터 켜세요. SMS보다는 인증 앱(OTP) 방식이 더 안전합니다.
4. 비밀번호 관리자 활용
"사이트마다 다르고 긴 비밀번호"를 사람 머리로 다 기억하는 건 불가능합니다. 비밀번호 관리자에 맡기고, 사람은 **마스터 비밀번호 하나(강력한 패스프레이즈)**만 기억하면 됩니다. 브라우저 내장 관리자도 안 쓰는 것보단 훨씬 낫습니다.
유출 확인 습관 만들기
내 비밀번호가 이미 유출됐는지 확인하는 것도 중요합니다. haveibeenpwned 같은 서비스에 이메일 주소를 넣으면, 그 계정이 알려진 유출 사고에 포함됐는지 알려줍니다. 주요 브라우저와 스마트폰 OS에도 저장된 비밀번호의 유출 여부를 경고해 주는 기능이 내장되어 있으니, 경고가 뜨면 미루지 말고 바로 바꾸는 습관을 들이세요.
지금 바로: 강력한 비밀번호 생성하기
전략은 알았으니 실행이 남았습니다. 새 비밀번호가 필요할 때는 사람이 머리로 짜내는 것보다(패턴이 생깁니다) 랜덤 생성기를 쓰는 게 안전합니다. 길이와 문자 종류를 직접 조절하면서 강력한 비밀번호를 즉시 만들어 보세요.
마무리
비밀번호 보안의 핵심은 세 문장으로 요약됩니다. 길게 만들 것, 사이트마다 다르게 쓸 것, 2단계 인증을 켤 것. 특수문자 하나 추가하는 것보다 길이 네 자리 늘리는 게 수학적으로 훨씬 강력하다는 사실만 기억해도, 여러분의 계정은 오늘보다 훨씬 안전해집니다.