보안

안전한 비밀번호 만드는 법: 길이, 엔트로피, 그리고 비밀번호 관리자

특수문자를 하나 넣으라는 규칙은 익숙하지만, 실제로 비밀번호를 강하게 만드는 것은 무작위성과 길이입니다. 숫자로 계산해 보면 어떤 비밀번호가 왜 약한지 분명해집니다.

비밀번호는 어떻게 뚫리는가

공격자가 비밀번호를 알아내는 방법은 크게 세 가지입니다. 첫째, 다른 사이트에서 유출된 아이디와 비밀번호를 그대로 대입하는 '크리덴셜 스터핑'. 둘째, 자주 쓰이는 비밀번호와 단어를 차례로 넣어 보는 '사전 공격'. 셋째, 가능한 모든 조합을 시도하는 '무차별 대입'입니다.

현실에서 가장 많은 피해는 첫 번째에서 나옵니다. 아무리 복잡한 비밀번호라도 여러 사이트에서 같이 쓰면, 그중 가장 보안이 허술한 사이트 하나가 털리는 순간 모든 계정이 위험해집니다. 그래서 '사이트마다 다른 비밀번호'가 강도보다도 먼저입니다.

비밀번호 강도는 엔트로피로 잰다

무작위로 만든 비밀번호의 강도는 엔트로피(비트)로 표현합니다. 계산식은 '길이 × log2(사용 가능한 문자 수)'입니다. 엔트로피가 1비트 늘어날 때마다 공격자가 시도해야 할 경우의 수는 두 배가 됩니다.

예를 들어 숫자 6자리 PIN은 약 20비트로, 100만 가지밖에 되지 않아 컴퓨터로는 순식간에 시도할 수 있습니다. 영문 대소문자·숫자·특수문자 94종에서 무작위로 12자를 고르면 약 79비트, 영문 소문자만 16자를 무작위로 골라도 약 75비트가 됩니다.

숫자 6자리            : 6 × log2(10)  ≈ 20비트
소문자 16자(무작위)   : 16 × log2(26) ≈ 75비트
94종 문자 12자(무작위): 12 × log2(94) ≈ 79비트
영숫자 16자(무작위)   : 16 × log2(62) ≈ 95비트

이 계산은 '무작위로 골랐을 때'만 성립합니다. 사람이 직접 떠올린 Password1!이나 생일 조합은 문자 종류가 많아 보여도 사전 공격 목록 맨 앞에 있기 때문에 실제 엔트로피는 거의 0에 가깝습니다.

복잡함보다 길이가 중요한 이유

위 표에서 보듯 문자 종류를 늘리는 것보다 길이를 늘리는 쪽이 엔트로피를 훨씬 효율적으로 올립니다. 미국 국립표준기술연구소(NIST)의 디지털 신원 가이드라인(SP 800-63B)도 특수문자 강제 같은 조합 규칙보다 충분한 길이를 허용하고, 유출된 비밀번호 목록과 대조하라고 권고합니다.

외워야 하는 비밀번호라면 서로 관련 없는 단어 4~6개를 무작위로 이은 '패스프레이즈'가 좋은 대안입니다. 7,776개 단어 목록에서 6단어를 무작위로 고르면 약 77비트로, 외우기 쉬우면서도 강합니다. 중요한 것은 사람이 고르지 않고 주사위나 생성기로 무작위로 골라야 한다는 점입니다.

피해야 할 패턴

이 패턴들은 모두 공격 도구의 규칙에 이미 포함되어 있어, 겉보기보다 훨씬 빨리 뚫립니다.

  • 이름, 생일, 전화번호, 차량 번호처럼 SNS에서 찾을 수 있는 정보
  • qwerty, 1q2w3e4r, asdf 같은 키보드 배열
  • 단어 끝에 숫자나 !를 붙이는 방식 (예: summer2026!)
  • a를 @로, o를 0으로 바꾸는 치환 (공격 도구가 기본으로 시도합니다)
  • 기존 비밀번호의 숫자만 바꾸는 순환 (예: pass01 → pass02)

현실적인 해법: 비밀번호 관리자와 2단계 인증

사이트마다 다른 20자 무작위 비밀번호를 외우는 것은 불가능합니다. 그래서 비밀번호 관리자를 쓰는 것이 가장 현실적입니다. 외워야 하는 것은 관리자를 여는 강한 마스터 패스프레이즈 하나뿐이고, 나머지는 생성기로 만들어 저장합니다.

여기에 2단계 인증(OTP 앱, 보안 키, 패스키)을 더하면 비밀번호가 유출되어도 계정을 지킬 수 있습니다. 이메일 계정은 다른 모든 계정의 비밀번호 재설정 통로이므로 가장 먼저 강화해야 합니다.

비밀번호 생성기를 쓸 때 확인할 점

좋은 생성기는 운영체제가 제공하는 암호학적으로 안전한 난수(CSPRNG)를 사용해야 합니다. 일반 프로그래밍 언어의 Math.random 같은 함수는 예측 가능성이 있어 비밀번호 생성에 적합하지 않습니다.

AIBIZAP 비밀번호 생성기에서는 길이와 문자 종류를 정해 무작위 비밀번호를 만들 수 있습니다. 서비스가 특수문자를 허용하지 않는다면 대신 길이를 늘리세요. 영숫자만으로도 16자면 약 95비트로 충분히 강합니다. API 클라이언트 ID와 시크릿처럼 기계가 쓰는 비밀 값은 클라이언트 자격 증명 생성기를 활용할 수 있습니다.

이 도구로 직접 해 보세요

다른 가이드

전체 가이드