이 글은 공개적으로 이용 가능한 사이버 보안 연구, 업계 보고서, 그리고 널리 받아들여지는 보안 관행을 바탕으로 작성되었습니다. 개인적인 경험이 언급될 경우, 명시적으로 표시합니다.
요약
- 사람이 만든 비밀번호는 예측 가능한 패턴을 따르며, 공격자는 이를 사전 공격과 규칙 기반 공격으로 악용합니다.
L!nk3d1n2020처럼 "영리해" 보이는 비밀번호조차 흔한 치환 규칙을 따르기 때문에 몇 분 만에 뚫립니다.- CSPRNG로 생성된 비밀번호는 공격자의 가장 강력한 무기인 사전과 규칙을 무력화합니다.
- 강력한 마스터 비밀번호를 사용하는 비밀번호 관리자를 이용하고, MFA를 활성화하며, 비밀번호를 재사용하지 마세요.
짧은 답변
침투 테스트 분야에서 15년 넘게 일하면서, 사람이 만든 비밀번호가 보안 평가에서 일관되게 가장 약한 고리라는 것을 확인할 수 있었습니다. 공격자는 비밀번호를 하나씩 추측하지 않습니다. 수십억 개의 실제 비밀번호가 담긴 사전과 규칙 기반 변형을 이용해 공격을 자동화합니다. Tiger2021! 같은 비밀번호가 몇 분 만에 뚫리는 이유는, 단어, 대문자, 끝에 붙는 숫자처럼 사람이 어쩔 수 없이 사용하게 되는 패턴을 따르기 때문입니다. 유일하게 진정한 방어책은 암호학적으로 안전한 무작위 생성을 통해 이러한 인간의 예측 가능성을 완전히 제거하는 것입니다.
빠르게 생성하려면 비밀번호 생성기를 사용하세요. 더 깊이 알고 싶다면 비밀번호 엔트로피 설명, 비밀번호 관리자 vs 브라우저, 비밀번호는 얼마나 길어야 할까요?, 온라인 생성기를 사용해도 안전할까요?를 읽어보세요.
대부분이 잊고 있는 유출 사건 — 하지만 잊어서는 안 되는
2012년, LinkedIn은 당시 역사상 가장 큰 데이터 유출 사건 중 하나를 겪었습니다. 이후 분석에 따르면 약 1억 6,700만 개의 계정 정보가 노출되었고, 그중 약 1억 1,700만 개에는 이메일 주소와 비밀번호 해시가 포함되어 있었습니다.
보안 팀이 해독된 비밀번호를 살펴봤을 때, 결과는 뼈아플 정도로 익숙했습니다. password1, linkedin123처럼 성의 없는 선택들이 수백만 건씩 발견되었습니다. 더 흥미롭고—더 우려스러운 점은—L!nk3d1n2020처럼 영리해 보이는 비밀번호조차 빠르게 뚫렸다는 것입니다. 왜일까요? 사람들이 거의 항상 사용하는 패턴을 따랐기 때문입니다.
저는 사이버 보안 침투 테스트 분야에서 15년 넘게 일해왔습니다. 제 일은 실제 공격자가 사용하는 것과 동일한 방법을 이용해—합법적으로—시스템에 침입하는 것입니다. 저에게 비밀번호는 이론적인 주제가 아닙니다. 매일 실전에서 실패하는 모습을 직접 보는 대상입니다.
비밀번호는 실제로 어떻게 공격받는가
어떤 비밀번호는 살아남고 어떤 비밀번호는 뚫리는지 이해하려면 공격자의 관점에서 봐야 합니다. 공격자는 앉아서 비밀번호를 하나씩 추측하지 않습니다. 모든 것을 자동화합니다.
- 사전 공격: 수년간의 데이터 유출에서 수집한 실제 비밀번호, 단어, 문구, 변형의 방대한 모음에 의존합니다. 이러한 사전은 수십억 개의 항목을 담고 있으며 계속해서 늘어나고 있습니다.
- 규칙 기반 공격: 인간의 창의성에 대해 파괴적일 만큼 효과적입니다. 도구는 "o"를 "0"으로 바꾸거나, 끝에 "123"이나 "!"를 붙이거나, 첫 글자를 대문자로 만들거나, 연도를 삽입하는 등 흔한 습관을 자동으로 적용합니다. 대부분의 "영리한" 비밀번호는 바로 이 단계에서 뚫립니다.
- 무차별 대입(브루트포스): 가능한 모든 조합을 시도하는 방식입니다. 무섭게 들릴 수 있지만, 현대적인 해시 알고리즘으로 저장된 길고 진짜로 무작위인 비밀번호를 상대로는, 시간이 너무 오래 걸리기 때문에 브루트포스는 금세 비현실적이게 됩니다.
스스로 만든 비밀번호의 문제점
우리는 스스로 생각해낸 비밀번호를 좋아합니다. 개인적으로 느껴지고 기억하기 쉽기 때문입니다. 안타깝게도 연구와 경험 모두, 그런 비밀번호가 매우 예측 가능하다는 것을 보여줍니다.
- 패턴이 반복됩니다: 카네기멜론 대학교의 연구를 포함한 대규모 연구들은 일관되게 같은 구조를 보여줍니다. 단어나 이름, 시작 부분의 대문자, 끝에 붙는 숫자나 기호. 내용은 바뀌어도 형태는 그대로입니다. 공격자가 이 구조를 모델링하고 나면 해독 속도는 극적으로 빨라집니다.
- 길이에는 한계가 있습니다: 대부분의 사용자가 만드는 비밀번호는 8~10자 사이입니다. 사람들이 더 길수록 안전하다는 걸 몰라서가 아니라, 기억력이 더 짧은 문자열 쪽으로 우리를 밀어붙이기 때문입니다.
- 개인정보가 스며듭니다: 생일, 반려동물 이름, 기념일—사람들은 이것들을 끊임없이 사용합니다. 그리고 소셜 미디어 시대에는, 공격자가 굳이 추측할 필요조차 없는 경우가 많습니다.
무작위 비밀번호가 완전히 다른 게임인 이유
**안전한 무작위 비밀번호 생성기**로 만든 비밀번호—r8$NpL#2qW9 같은—는 단순히 "더 복잡한" 것이 아닙니다. 근본적으로 다릅니다.
각 문자는 독립적으로 선택됩니다. 단어도, 치환도, 인간의 논리도 없습니다. 바로 이 한 가지 사실이 공격자의 가장 강력한 도구인 사전과 규칙을 무력화합니다.
숫자로 살펴보면:
- 소문자만 사용하는 8자리 비밀번호는 약 26⁸가지 경우의 수(약 2,090억 가지)를 가집니다.
- 대문자, 숫자, 기호를 추가하면 갑자기 약 95⁸가지(약 6,000조 가지)가 됩니다.
- 12자로 늘리면 그 공간은 천문학적으로 커집니다.
하지만 진짜 이점은 단순한 크기가 아닙니다. 무작위 비밀번호는 공격자를 브루트포스로 몰아넣는다는 점입니다. 이는 느리고, 비용이 많이 들며, 종종 그럴 가치가 없습니다.
실제로 이런 비밀번호들을 뚫는다는 것은
침투 테스터의 관점에서 보면 그 차이는 극명합니다:
| 비밀번호 유형 | 예시 | 공격자의 방법 | 해독 소요 시간 |
|---|---|---|---|
| 스스로 만든 | Tiger2021! | 사전 공격 & 규칙 기반 | 몇 분에서 몇 시간 |
| 무작위 생성 | r8$NpL#2qW9 | 순수 브루트포스 | 몇 년 / 몇 세기 |
비밀번호가 bcrypt나 Argon2 같은 알고리즘으로 제대로 해시 처리되어 있다면, 무작위 문자열에 대한 브루트포스는 공격을 실행 불가능하게 만드는 시간대를 의미합니다. 실제 대부분의 경우, 공격자는 그냥 다른 곳으로 넘어갑니다.
진짜 트레이드오프: 인간 vs 무작위성
무작위 비밀번호의 가장 큰 약점은 보안이 아니라 사용성입니다. 인간은 의미 없는 문자열을 기억하는 데 매우 서투릅니다. 이것이 비밀번호 보안의 핵심적인 긴장 관계입니다.
- 인간이 잘 기억하는 비밀번호는 대개 약합니다.
- 강력한 비밀번호는 대개 기억하기 어렵습니다.
현대의 보안 관행은 바로 이 간극을 메우기 위해 존재합니다.
오늘날 실제로 효과가 있는 방법
업계의 공통된 견해와 실전 경험을 바탕으로:
- 비밀번호 관리자를 사용하세요: Bitwarden이나 1Password 같은 도구를 사용하면 하나의 강력한 마스터 비밀번호에만 의존하고, 나머지는 모두 길고, 무작위이며, 고유하게 만들 수 있습니다. 이는 대부분의 사람들에게 최선의 선택지로 널리 여겨집니다.
- 꼭 외워야 한다면 길이로 승부하세요:
coffee-zebra-battery-stapler처럼 서로 관련 없는 단어들을 나열한 문자열은, 기호가 잔뜩 들어간 짧은 비밀번호보다 공격에 더 강하면서도 기억하기 더 쉬운 경우가 많습니다. - 비밀번호를 절대 재사용하지 마세요: 한 사이트가 유출되면, 재사용은 이를 도미노 효과로 만들어버립니다.
- MFA를 활성화하세요: 이메일, 은행, 클라우드 계정—항상 다중 인증을 사용하세요.
- 유출 노출 여부를 확인하세요: Have I Been Pwned 같은 서비스를 이용하면 자신의 이메일이 알려진 유출 데이터셋에 포함되어 있는지 확인할 수 있습니다.
핵심 요약
- 사람이 만든 비밀번호는 반복 가능한 구조적 패턴(단어 + 숫자 + 기호)을 따릅니다.
- 사전 공격에는 실제 데이터 유출에서 나온 수십억 개의 비밀번호가 포함되어 있습니다.
- 규칙 기반 공격은 흔한 치환(
o→0,a→@, 끝에123이나!추가)을 자동으로 적용합니다. - 12자 이상의 무작위 비밀번호는 공격자를 브루트포스로 몰아넣으며, 이는 현대적인 해시 처리 앞에서 계산상 불가능합니다.
- 비밀번호 관리자는 보안과 사용성 사이의 간극을 메워줍니다.
결론
인간의 창의력은 자동화된 공격 도구를 당해낼 수 없습니다. 실제 침투 테스트에서 살아남는 유일한 비밀번호는 각 문자가 독립적이고 예측 불가능한, CSPRNG로 생성된 비밀번호뿐입니다. 이는 인간과 기계 중 누가 "더 나은" 비밀번호를 만드는지에 대한 철학적 논쟁이 아닙니다. 위험 관리의 문제입니다. 컴퓨터는 무작위성을 생성하는 데 뛰어나고, 인간은 단 하나의 비밀을 지키고 MFA 같은 요청에 응답하는 데 뛰어납니다. 각자가 가장 잘하는 일을 하게 하세요.
보안을 지금 강화할 준비가 되셨나요? 지금 강력한 오프라인 비밀번호를 생성해서 계정을 즉시 보호하세요.
PassGenerate를 신뢰할 수 있는 이유
- 비밀번호는 Web Crypto API를 사용해 브라우저에서 로컬로 생성됩니다.
- 어떤 비밀번호도 서버로 전송되지 않습니다.
- 암호학적으로 안전한 의사 난수 생성기(CSPRNG)를 사용합니다.
- NIST와 OWASP가 권장하는 최신 보안 모범 사례를 따릅니다.
참고 자료
- NIST SP 800-63B – 디지털 신원 지침
- OWASP Password Storage Cheat Sheet
- OWASP Authentication Cheat Sheet
- MDN Web Crypto API 문서
- CISA Password Guidance