비밀번호 8자리 vs 12자리, 경우의 수가 2.6조 배 차이나는 이유
"비밀번호는 8자리 이상이면 된다"는 2000년대의 상식입니다. 지금은 GPU 한 대로 초당 수십억 개의 해시를 계산할 수 있어, 짧은 비밀번호의 모든 조합을 시도하는 데 걸리는 시간이 크게 줄었습니다. 문자 종류와 길이가 비밀번호 강도에 어떤 영향을 주는지, 경우의 수 계산으로 보여드립니다.
요약 ① 비밀번호 경우의 수 = (문자 종류)^(길이) — 길이가 1 늘면 수십 배 뜁니다 ② 영문 소문자 8자리 = 약 2,088억 조합 — 최신 GPU로 수 초면 전수 탐색 가능 ③ 대소문자 + 숫자 + 특수문자 12자리 이상이면 현실적으로 전수 대입 불가
비밀번호가 뚫리는 원리 — 전수 대입(Brute Force)
해커가 비밀번호를 알아내는 가장 단순한 방법이 전수 대입입니다. 가능한 문자 조합을 처음부터 끝까지 하나씩 대입합니다.
이 공격에 대한 방어력은 가능한 조합이 몇 개인지로 결정됩니다. 계산은 단순한 거듭제곱입니다.
경우의 수 = (사용 가능한 문자 수) ^ (비밀번호 길이)
영문 소문자(a–z)만 사용하면 문자 수가 26개입니다. 8자리라면 26의 8제곱, 약 2,088억 개입니다. 많아 보이지만, 최신 GPU는 MD5 해시 기준 초당 수백억 개를 계산합니다. 수 초면 끝나는 양입니다.
길이와 문자 종류에 따른 조합 수 비교
| 구성 | 문자 수 | 8자리 | 10자리 | 12자리 |
|---|---|---|---|---|
| 영문 소문자 | 26 | 약 2,088억 | 약 141조 | 약 9.5경 |
| 소문자 + 숫자 | 36 | 약 2.8조 | 약 3,656조 | 약 474경 |
| 대소문자 + 숫자 | 62 | 약 218조 | 약 84경 | 약 32해 |
| + 특수문자 포함 | 95 | 약 6,634조 | 약 5,987경 | 약 5,403해 |
영문 소문자 8자리(2,088억)와 전체 문자 12자리(5,403해)는 약 2.6조 배 차이입니다. 길이 4자리, 문자 종류 변경만으로 이 정도 차이가 납니다.
주목할 점은 길이를 늘리는 것이 문자 종류를 늘리는 것보다 효과가 크다는 사실입니다. 소문자만 12자리(9.5경)가 전체 문자 8자리(6,634조)보다 약 1,400배 많습니다.
사람이 만든 비밀번호는 왜 약할까
위 표의 경우의 수는 모든 조합이 동등한 확률로 선택된다는 전제입니다. 사람이 직접 만들면 이 전제가 무너집니다.
- 영문 + 숫자를 쓰더라도 단어 + 생년월일 패턴을 씁니다
- 특수문자를 넣으라는 규칙에 끝에 느낌표를 하나 붙이는 사람이 대다수입니다
- 대문자를 넣으라고 하면 첫 글자만 대문자로 바꿉니다
해커는 이 패턴을 알고 **사전 대입(Dictionary Attack)**으로 흔한 비밀번호부터 시도합니다. 이론적 경우의 수가 아무리 많아도, 실제 탐색 범위는 크게 줄어듭니다.
안전한 비밀번호를 만드는 방법
직접 규칙을 지키며 만들기
아래 조건을 전부 충족해야 합니다.
- 12자리 이상 (가능하면 16자리)
- 대문자, 소문자, 숫자, 특수문자를 각각 1개 이상 포함
- 사전 단어, 이름, 생년월일을 포함하지 않음
- 다른 사이트와 겹치지 않는 고유 비밀번호
조건 자체는 간단한데, 사이트마다 다른 비밀번호를 수십 개씩 이 규칙으로 만들고 기억하기란 사실상 불가능합니다.
무작위 생성기 사용하기
비밀번호 생성기는 암호학적 난수(Crypto.getRandomValues)를 사용해 사람의 패턴이 전혀 개입하지 않는 비밀번호를 만듭니다. 길이와 포함할 문자 종류만 지정하면 됩니다.
브라우저 안에서 암호학적 난수로 생성 — 서버 전송 없음
생성된 비밀번호는 브라우저의 비밀번호 관리자나 전용 앱에 저장하세요. 외울 필요가 없으니 길고 복잡할수록 좋습니다.
자주 막히는 지점
| 상황 | 해결 |
|---|---|
| 사이트가 특수문자 일부를 허용하지 않음 | 포함할 특수문자 범위를 조절해서 다시 생성 |
| 비밀번호 최대 길이가 16자리로 제한됨 | 허용 범위 내 최대 길이로 생성 |
| 비밀번호를 자꾸 잊어버림 | 브라우저 내장 관리자나 전용 앱에 저장 |
| 내 비밀번호가 유출됐는지 궁금함 | haveibeenpwned.com에서 이메일로 조회 |
정리
- 비밀번호 강도는 **(문자 종류)^(길이)**로 결정됩니다. 길이를 늘리는 것이 가장 효과적입니다.
- 사람이 만든 비밀번호는 패턴이 있어, 이론적 강도를 제대로 활용하지 못합니다.
- 12자리 이상 + 대소문자·숫자·특수문자 조합이면 현재 기술로 전수 대입이 불가능합니다.
- 사이트마다 다른 비밀번호를 쓰되, 생성기로 만들고 관리 도구에 저장하는 것이 가장 안전합니다.
브라우저 안에서 암호학적 난수로 생성 — 서버 전송 없음
자주 묻는 질문
비밀번호를 주기적으로 바꿔야 하나요?
NIST(미국 국립표준기술연구소)는 2017년 개정 가이드라인(SP 800-63B)에서 정기 변경을 권장하지 않는다고 명시했습니다. 유출이 의심될 때만 바꾸는 것이 현재 권장 사항입니다. 잦은 변경은 오히려 비밀번호를 단순하게 만드는 부작용이 있습니다.
같은 비밀번호를 여러 사이트에서 쓰면 안 되나요?
한 사이트에서 비밀번호가 유출되면 해커는 같은 이메일·비밀번호 조합을 다른 사이트에 자동으로 대입합니다. 이를 크리덴셜 스터핑(Credential Stuffing)이라고 합니다. 사이트마다 다른 비밀번호를 쓰는 것이 필수입니다.
브라우저 비밀번호 저장 기능은 안전한가요?
Chrome, Safari, Firefox 등 주요 브라우저의 비밀번호 관리자는 기기 잠금(지문·PIN)으로 보호됩니다. 저장된 비밀번호는 암호화되어 있습니다. 비밀번호를 외우려고 단순하게 만드는 것보다 훨씬 안전합니다.
