「8자리 이상, 대문자·소문자·숫자 포함」——많은 서비스에서 보는 비밀번호 요건입니다. 그런데 이 조건만 겨우 통과한 비밀번호는 정말 안전한 걸까요? 현대 컴퓨터는 얼마나 빠르게 비밀번호를 해독할 수 있을까요? 보안 전문가들이 「복잡하게 말고 길게」를 강조하는 이유는 뭘까요? 이 글은 「어떻게 보호할 것인가」가 아니라 「어떻게 공격당하는가」에서 시작합니다. 공격 방식을 이해해야 진정으로 깨기 어려운 비밀번호를 만들 수 있기 때문입니다.
1. 비밀번호 저장의 진실:당신의 비밀번호는 평문으로 저장되지 않는다
공격 방법을 설명하기 전에 중요한 전제를 짚고 넘어갑니다. 제대로 설계된 시스템은 비밀번호를 직접 저장하지 않고, 비밀번호의 해시값(Hash)을 저장합니다.
비밀번호를 설정하면 시스템은 해시 함수(bcrypt, SHA-256 등)를 적용해 고정 길이의 문자열을 생성하고 이것을 저장합니다. 로그인 시에는 입력한 비밀번호를 다시 해시해 저장된 값과 비교합니다. 일치하면 인증 성공입니다.
즉, 데이터베이스가 탈취당해도 공격자가 얻는 것은 해시값일 뿐, 원래 비밀번호가 아닙니다. 문제는 해시값에서 원래 비밀번호를 역추적할 수 있느냐입니다.
뉴스에서 「어떤 사이트의 비밀번호가 유출됐다」고 할 때, 보통 두 가지 상황 중 하나입니다. 사이트가 비밀번호를 평문으로 저장했거나(설계 실수),또는 해시 데이터베이스가 탈취된 후 공격자가 다양한 기법으로 해독을 시도하는 것——이것이 본 글의 주제입니다.
2. 주요 비밀번호 공격 방법 세 가지
2.1 무차별 대입 공격(Brute-Force Attack)
가장 단순한 방법: 모든 가능한 조합을 하나씩 시도해 맞는 것을 찾을 때까지 반복합니다. 특별한 전략 없이 순수하게 전수 조사하는 방식입니다.
현대 GPU는 초당 수십억 번의 해시를 계산할 수 있어, 짧은 비밀번호는 연산 능력 앞에서 거의 무력합니다:
| 길이 | 소문자만(26자) | 대소문자 + 숫자(62자) | 예상 해독 시간 |
|---|---|---|---|
| 6자리 | 26⁶ ≈ 3억 | 62⁶ ≈ 570억 | 수 초~수 분 |
| 8자리 | 26⁸ ≈ 2,090억 | 62⁸ ≈ 218조 | 수 시간~수 일 |
| 12자리 | 26¹² ≈ 9.5×10¹⁶ | 62¹² ≈ 3.2×10²¹ | 수백 년(현실적으로 불가능) |
핵심 결론: 비밀번호 보안에 대한 영향은 복잡도보다 길이가 훨씬 크다는 것입니다. 8자리에서 12자리로 늘리면 가능한 조합이 백만 배 이상 증가합니다.
2.2 사전 공격(Dictionary Attack)
무차별 대입은 비밀번호가 완전히 무작위라고 가정하지만, 실제로 사람들은 의미 있는 단어나 예측 가능한 패턴을 사용합니다. 사전 공격은 이 약점을 이용합니다: 미리 준비한 단어 목록(사전)으로 하나씩 시도하는 방식입니다.
일반적인 사전에는 다음이 포함됩니다:
- 전 세계에서 가장 많이 쓰이는 비밀번호(password, 123456, qwerty…)
- 흔한 영단어와 그 변형(love → l0ve, lov3)
- 인명, 지명, 브랜드명
- 과거 대규모 유출 데이터베이스(수십억 건의 실제 비밀번호)
사전 공격은 무차별 대입보다 효율이 훨씬 높습니다. 대부분의 사람들의 비밀번호는 수 초 안에 찾을 수 있습니다.
2.3 레인보우 테이블(Rainbow Table)
레인보우 테이블은 사전 계산을 이용한 공격 도구입니다: 수십억 개의 비밀번호 해시값을 미리 계산해 대조표로 저장하고, 공격 시에는 실시간 계산 없이 검색만 합니다.
솔트가 없는 MD5 해시 데이터베이스를 입수한 공격자는 레인보우 테이블을 조회하는 것만으로 거의 즉시 원래 비밀번호를 찾아낼 수 있습니다.
현대 비밀번호 시스템은 해시 계산 시 무작위 문자열(「솔트」)을 추가합니다. 같은 비밀번호를 사용해도 모든 계정의 해시값이 달라집니다. 이렇게 되면 특정 솔트에 대한 레인보우 테이블이 존재하지 않으므로 공격이 무효화됩니다. 이것이 bcrypt나 Argon2가 MD5보다 훨씬 안전한 주요 이유입니다.
3. 비밀번호 엔트로피:강도를 수치로 측정하기
엔트로피는 정보 이론의 개념으로, 암호학에서는 비밀번호의 「예측 불가능성」을 수치화하는 데 사용됩니다. 엔트로피가 높을수록 추측하기 어렵고 안전한 비밀번호입니다.
계산 공식: 엔트로피 = log₂(문자 집합 크기비밀번호 길이)
비트(bit)로 표현하면:
- 소문자만(26종), 8자리: log₂(26⁸) ≈ 37.6 bits
- 대소문자 + 숫자(62종), 8자리: log₂(62⁸) ≈ 47.6 bits
- 대소문자 + 숫자 + 특수문자(94종), 12자리: log₂(94¹²) ≈ 78.7 bits
- 무작위 영단어 4개(7,776단어 중 선택): log₂(7776⁴) ≈ 51.7 bits
권장 기준: 일반 계정은 최소 50 bits, 은행·이메일 등 중요 계정은 80 bits 이상이 권장됩니다.
4. 흔한 비밀번호 오해
오해 1: 「문자를 기호로 대체하면(a→@, e→3)더 안전하다」
꼭 그렇지는 않습니다. 사전 공격 목록에는 이미 이런 「1337 스피크」 변형이 포함되어 있습니다. p@ssw0rd는 주요 비밀번호 사전에 올라와 있어 password와 크게 다르지 않습니다.
오해 2: 「비밀번호를 정기적으로 바꾸면 보안이 높아진다」
이 생각은 구식입니다. 연구에 따르면 강제적인 정기 변경은 오히려 사용자가 예측 가능한 패턴(Password1 → Password2)을 사용하게 만듭니다. 중요한 것은 처음부터 충분히 강한 비밀번호를 설정하는 것입니다.
오해 3: 「대소문자, 숫자, 특수문자가 있어야 안전하다」
복잡도는 도움이 되지만 길이만큼의 효과는 없습니다. 4개의 무작위 영단어를 조합한 correct-horse-battery-staple은 50 bits 이상의 엔트로피를 가지며, 대부분의 「복잡한」 8자리 비밀번호보다 안전하고 기억하기도 훨씬 쉽습니다.
5. 강한 비밀번호를 만드는 원칙
5.1 길이가 항상 첫 번째 우선순위
최소 12자리, 16자리 이상이면 더 좋습니다. 길이는 해독 시간을 지수적으로 늘립니다. 한 자리 늘릴 때마다 가능한 조합이 문자 집합 크기만큼 곱해집니다.
5.2 복잡한 규칙보다 진정한 무작위성이 중요
Tr0ub4dor&3보다 xkz7!qPm2vLn이 더 안전합니다. 전자는 인간이 예측할 수 있는 대체 패턴을 따르기 때문입니다. 비밀번호 생성기를 사용하면 인간의 뇌로는 만들 수 없는 진정한 무작위성을 얻을 수 있습니다.
5.3 계정마다 다른 비밀번호 사용
비밀번호 재사용은 가장 많이 악용되는 취약점 중 하나입니다. 한 사이트가 침해되면 공격자는 즉시 같은 계정 정보로 다른 사이트를 시도합니다(「크리덴셜 스터핑 공격」). 계정마다 다른 비밀번호를 사용하면 피해를 한 곳으로 제한할 수 있습니다.
5.4 비밀번호 관리자 활용
「계정마다 독립된 비밀번호」와 「충분히 길고 무작위한 비밀번호」를 동시에 달성할 수 있는 유일한 현실적인 방법은 비밀번호 관리자를 사용하는 것입니다. 강력한 마스터 비밀번호 하나만 기억하면 나머지는 소프트웨어가 관리합니다.
6. 자주 묻는 질문
무차별 대입으로 해독되지 않았는데 왜 비밀번호가 유출되나요?
유출 경로는 해독만이 아닙니다. 가장 흔한 경우는 피싱(가짜 사이트에서 비밀번호 입력 유도),평문 저장(사이트 설계 오류),키로거 악성코드 감염 등입니다. 강한 비밀번호는 「추측·해독」 유형의 공격에만 효과적이며, 소셜 엔지니어링이나 악성코드에는 별도의 대책이 필요합니다.
2단계 인증(2FA)을 켜면 비밀번호 강도가 여전히 중요한가요?
여전히 중요합니다. 2FA는 강력한 추가 방어선이지만 완벽하지 않습니다. SIM 스와핑, 실시간 피싱으로 2FA를 우회하는 공격도 존재합니다. 강한 비밀번호 + 2FA의 조합이 최선이며, 어느 하나만으로는 충분하지 않습니다.
7. 정리
비밀번호 보안의 본질은 「공격자가 올바른 비밀번호를 찾는 데 드는 시간이 그 동기를 상회하도록 만드는 것」입니다:
- 길이가 가장 효과적인 방어:한 자리 늘릴 때마다 해독 시간이 지수적으로 증가
- 무작위성이 복잡한 규칙보다 중요:컴퓨터가 결정하게 하고 인간의 뇌는 배제
- 계정마다 독립된 비밀번호:한 곳이 유출되어도 다른 계정에 영향 없음
- 강한 비밀번호 + 2FA 이중 보호:두 개의 방어선이 하나보다 훨씬 강력
무작위 비밀번호 생성기를 사용하면 「충분한 길이」와 「충분한 무작위성」 두 가지를 한 번에 해결할 수 있습니다. 강한 비밀번호 만들기의 가장 효율적인 출발점입니다.