비밀번호 엔트로피 설명: 무엇이 실제로 비밀번호를 강하게 만드는가
비밀번호 엔트로피를 비트로 어떻게 재는지, 왜 무작위 길이가 복잡도 규칙을 이기는지, 그리고 키·토큰·패스프레이즈에 엔트로피 기준을 어디에 둘지 정리합니다.
비밀번호 강도에는 단위가 있습니다. 엔트로피 비트이고, 각 비트는 공격자가 평균적으로 해야 하는 추측 수를 두 배로 만듭니다. 40비트짜리 비밀번호는 무차별 대입으로 남김없이 깨는 데 2^40번, 약 1조 번 추측이 필요합니다. 80비트는 2^80, 대략 1자(秭) 번입니다. 엔트로피는 단일 비밀번호의 속성이 아닙니다. 그것을 만들어 낸 과정의 속성입니다. 그 구분이 강한 비밀번호에 대한 직관 대부분이 어긋나는 지점이고, 어떤 숫자든 믿기 전에 정확히 짚어둘 가치가 있습니다.
공식, 그리고 그것이 가정하는 것
N개의 서로 다른 기호 풀에서 길이 L로 균일 무작위 추출된 비밀번호의
엔트로피는 비트로 다음입니다.
H = L × log2(N)
풀 크기 N은 각 위치가 똑같이 될 수 있었던 문자의 수입니다. 95개의 출력
가능한 ASCII 문자에서 무작위로 고른 12자 비밀번호는 다음을 지닙니다.
12 × log2(95) = 12 × 6.5699 ≈ 78.8비트
그 값은 한 조건 아래에서만 정확합니다. 모든 위치가 독립적이고 균일한 무작위 추출로 채워진 경우입니다. 사람이 문자를 고르는 순간, 또는 규칙이 그것을 제약하는 순간, 실제 엔트로피는 떨어지고, 종종 절반 이상 떨어지며, 공식은 공격자가 실제로 마주하는 비밀번호를 더 이상 설명하지 못합니다.
풀별 문자당 비트
각 위치는 log2(N) 비트를 기여합니다. 흔한 풀입니다.
| 문자 풀 | 크기 N | 문자당 비트 |
|---|---|---|
숫자 0-9 |
10 | 3.32 |
소문자 a-z |
26 | 4.70 |
| 소문자 + 숫자 | 36 | 5.17 |
영숫자 a-zA-Z0-9 |
62 | 5.95 |
| 전체 출력 가능 ASCII | 95 | 6.57 |
엔트로피 목표를 문자당 비트로 나누면 무작위 생성기에서 필요한 길이가 나옵니다.
| 목표 | 숫자 | 소문자 | 영숫자 | 전체 ASCII |
|---|---|---|---|---|
| ~80비트 | 25자 | 18자 | 14자 | 13자 |
| ~128비트 | 39자 | 28자 | 22자 | 20자 |
표는 "기호 하나 추가"가 사람들이 기대하는 것보다 덜 사 준다는 것을 보여줍니다. 영숫자에서 전체 ASCII로 가면 문자당 0.62비트만 더해집니다. 12자 비밀번호 전체에서 약 7.5비트입니다. 같은 풀에 무작위 문자 둘을 더하면 11.9비트가 더해집니다. 길이가 더 싼 지렛대이고, 풀의 수확 체감에 상한 없이 선형으로 쌓입니다.
사람이 고른 비밀번호가 수학이 말하는 것보다 약한 이유
P@ssw0rd!는 전체 ASCII 풀에서 아홉 문자입니다. 공식은 59비트라고 말합니다.
유능한 공격자에 대한 실제 엔트로피는 십여 비트에 가깝습니다. 어떤 공격자도
95^9개 후보를 맹목적으로 열거하지 않기 때문입니다. 그들은 사람이 어떻게
고르는지를 모델링합니다.
- 사전과 유출 코퍼스.
password라는 단어와 그 수백만 변형이 먼저 시도됩니다. rockyou.txt나 HaveIBeenPwned 코퍼스 같은 목록은 수십억 개의 실제 비밀번호를 순위 매긴 추측 순서로 바꿉니다. - 리트스피크 치환.
a→@,o→0,s→$,i→1은 작고 잘 알려진 변환 집합입니다. hashcat 같은 도구는 기본 워드리스트 위에 규칙으로 거의 추가 비용 없이 적용합니다. - 키보드 워크.
qwerty,1qaz2wsx,asdfgh는 키보드를 가로지르는 짧은 경로로, 통틀어 수천 개 후보입니다. - 예측 가능한 배치. 첫 글자 대문자, 끝에 숫자와 기호. 구성 규칙은 사람을 이 패턴으로 집중시켜, 탐색 공간을 넓히는 게 아니라 좁힙니다.
교훈은 단순합니다. 무작위 13자 전체 ASCII 문자열(~85비트)은, 모든 복잡도 체크박스를 만족하지만 예측 가능한 모양을 따르는 사람이 만든 16자 비밀번호보다 극적으로 강합니다. 엔트로피는 생성기에 살지 키보드에 살지 않습니다. 이것은 공격자가 당신의 라이브 로그인을 결코 건드리지 않을 때조차 엔트로피가 왜 중요한지도 설명합니다. 비밀번호 데이터베이스가 새면, 크래킹은 저장된 해시에 대해 초당 수십억 추측으로 오프라인에서 이뤄지고, 원래 비밀번호의 엔트로피만이 그들이 얼마나 멀리 가는지를 제한합니다(자세한 것은 해싱·암호화·인코딩 참조).
패스프레이즈: 기억할 수 있는 엔트로피
다이스웨어는 단어를 무작위로 만들어 사람-패턴 문제를 비켜갑니다. 주사위를 굴려 고정된 목록에서 단어를 고르고, 엔트로피는 다음입니다.
H = 단어 수 × log2(워드리스트 크기)
표준 EFF/다이스웨어 목록은 7776개 단어(6^5, 다섯 주사위 굴림당 한 항목)여서,
각 단어가 log2(7776) ≈ 12.92 비트를 기여합니다. 여섯 단어 패스프레이즈는
다음입니다.
6 × 12.92 ≈ 77.5비트
그것은 ~80비트 동네를 통과하고, anvil-collide-runway-fossil-mocha-stout 같은
구절로 기억할 만하며, 결정적으로, 공격자가 당신이 다이스웨어를 썼고 정확한
워드리스트를 가졌다는 것을 알아도 엔트로피가 유지됩니다. 방법을 아는 것은
도움이 되지 않습니다. 무작위성은 주사위에 있습니다. 일곱 단어로 올리면
~90비트, 여덟이면 ~103입니다. 구분자와 대문자는 의미 있는 것을 더하지 않으니
강도 주장에 세지 마세요.
현대 지침: 연극이 아니라 길이와 선별
NIST SP 800-63B(Rev. 4)는 비밀번호 정책을 실제로 공격에 저항하는 것을 중심으로 재구성했고, 그 전환은 익혀둘 가치가 있습니다. 배포된 정책 상당수가 여전히 그것에 모순되기 때문입니다.
- 길이를 우선하세요. 최소 8자를 요구하고, 최소 64자를 지원하고, 길이를 주된 강도 지렛대로 다루세요. 비밀번호가 유일한 인증 수단일 때 권장 하한은 15로 오릅니다.
- 차단 목록으로 선별하세요. 유출 코퍼스, 사전, 반복·순차 문자열, 그리고 맥락상 용어(서비스 이름, 사용자 이름)에서 발견된 비밀번호를 거부하세요. 실세계 강도가 강제되는 곳이 여기입니다.
- 의무 구성 규칙을 버리세요. NIST는 이제 검증자가 특정 문자 종류 혼합을 요구해서는 안 된다고 말합니다. 그 규칙은 사용자를 위의 예측 가능한 패턴으로 밀어 실효 엔트로피를 낮춥니다.
- 주기적 강제 교체를 버리세요. 일정에 따라 비밀번호를 만료시키지 마세요.
침해 증거가 있을 때만 교체하세요. 강제 교체는 점진적이고 추측 가능한
변경(
Spring2025!→Summer2025!)을 부릅니다.
관통하는 줄거리는 이렇습니다. 사용자가 결코 갖지 않았던 무작위성을 가정하는 공식을 위해 최적화하기를 멈추고, 대신 공격자가 실제로 하는 추측을 차단하세요. TOTP 같은 두 번째 요소는 어떤 구성 규칙보다 계정 보안에 훨씬 많은 일을 합니다. 비밀번호를 단일 실패 지점에서 완전히 제거하기 때문입니다.
기준을 어디에 둘지
엔트로피 목표는 비밀이 무엇을 보호하고 얼마나 오래 사는지를 따라야 합니다.
- 낮은 가치, 속도 제한, 일회성 계정: 온라인 추측이 조절되고 잠금이 적용된다면 ~40–50비트가 방어 가능합니다. 초당 몇 번만 시도할 수 있는 공격자는 2^45를 소진하지 못합니다.
- 복구 가능하거나 오프라인 크래킹 가능한 해시를 가진 무엇이든: ~80비트 이상을 노리세요. 해시가 새는 순간 속도 제한은 사라지고 공격은 하드웨어 속도로 돕니다.
- 암호 키, API 토큰, 세션 비밀: 128비트, 예외 없이. 이들은 기계가 생성하고, 결코 타이핑되지 않으며, 가장 강한 현실적 여유를 정당화하는 것을 보호합니다. 22자 무작위 영숫자나 20자 전체 ASCII 문자열이 그것을 통과합니다.
정직한 한계 둘입니다. 첫째, "엔트로피 비트"는 무차별 대입에 대한 저항을
설명하지, 피싱이나 재사용된 비밀번호의 자격 증명 스터핑, 키로거, 또는 유출된
평문에 대한 것이 아닙니다. 사이트 간에 재사용된 128비트 비밀번호도 여전히 한
번의 침해로 무가치해집니다. 둘째, 사람이 고른 비밀번호의 엔트로피는 어떤
공식으로도 측정할 수 없습니다. P@ssw0rd!를 높게 점수 매기는 강도 측정기는
패턴 저항을 형편없이 추정하는 것이니, 그 숫자를 정밀한 것이 아니라 동기
부여용으로 다루세요.
믿을 만한 길은 사람 패턴을 방정식에서 완전히 제거하는 것입니다. 당신의 위협
모델이 요구하는 길이로 비밀을 무작위로 생성하세요. 우리
비밀번호 생성기는 당신이 고른 풀에서 암호학적으로
안전한 소스로 추출하므로, 그것이 보고하는 L × log2(N) 수치는 당신이 실제로
얻는 엔트로피입니다. 당신의 손가락이 타이핑했을 문자열의 낙관적 추정이
아니라요.