비밀번호 강도·엔트로피 계산기 쉽게 이해하기 — 개념과 원리
이 계산기는 비밀번호를 무차별 대입으로 알아내기가 얼마나 어려운지를 엔트로피(비트)와, 정한 추측 속도에서의 평균 해독 시간으로 보여 줍니다. 모든 계산은 브라우저 안에서만 이루어집니다. 모든 문자가 무작위라고 볼 때의 엔트로피와, 사전 단어·흔한 비밀번호·반복·연속 문자를 깎아 낸 현실적 추정값을 함께 보여 줍니다.
계산 방법
- 문자 집합 크기 = 소문자가 있으면 26 + 대문자 26 + 숫자 10 + 그 밖의 문자(기호·공백) 33
- 무작위일 때 엔트로피(비트) = 길이 × log₂(문자 집합 크기)
- 현실적 추정값: 단어로만 된 비밀번호는 단어당 12.9비트(7,776개 다이스웨어 단어장에서 무작위로 고를 때 log₂ 7,776), 아주 흔한 비밀번호는 약 10비트로 보고, 반복·연속 문자는 0비트로 셉니다.
- 평균 해독 시간 = 2^(현실적 비트 − 1) ÷ 초당 추측 횟수. 평균적으로 전체 경우의 절반을 시도하면 찾게 됩니다.
- 등급(현실적 추정값 기준): 28비트 미만 매우 약함, 36 미만 약함, 60 미만 보통, 128 미만 강함, 그 이상 매우 강함
속도 선택지는 시도 제한이 있는 온라인 로그인 초당 1,000회, bcrypt·Argon2 오프라인 공격 초당 10만 회, 빠른 해시 오프라인 공격 초당 100억 회입니다.
원리
N개의 기호에서 L개의 문자를 무작위로 고르면 경우의 수는 N^L이고, 이는 L × log₂ N비트입니다. 1비트가 늘 때마다 찾아야 할 범위가 두 배가 됩니다. 그래서 문자 종류를 늘리는 것보다 길이를 늘리는 쪽이 훨씬 효과적입니다. 소문자에 기호를 더해도 한 글자당 4.7비트가 약 6.6비트가 될 뿐입니다.
예제 풀이
- 입력: "k7#Qm2!vRx9p"(무작위 12글자), 초당 100억 회
- 문자 집합: 소문자·대문자·숫자·기호 26 + 26 + 10 + 33 = 95
- 엔트로피: 12 × log₂ 95 = 12 × 6.5699 = 78.8382673비트. 패턴 점검 결과가 none found라 현실적 추정값도 같습니다.
- 시간: 2^77.838 ÷ 10^10초 ≈ 856,000년, 등급 강함
- 비교: "correct horse battery staple"은 무작위로 보면 164.7비트지만 단어 4개로 보면 4 × 12.9 = 51.7비트라 같은 속도로 약 2.12일, 등급은 보통입니다.
결과 해석
현실적 추정값을 보되, 그것도 가장 좋은 경우로 보셔야 합니다. 잘 알려진 문구나 유출된 비밀번호는 단어 수보다 훨씬 약합니다. 진짜 무작위일 때 60비트 이상이면 오프라인 공격에도 버티는 편이고, 128비트는 예측 가능한 미래의 무차별 대입으로는 깰 수 없는 수준입니다.
흔한 실수
- 단어·이름·날짜·자판 배열로 만든 비밀번호의 점수를 믿는 경우
- "P@ssw0rd"처럼 글자를 바꾸면 강해진다고 생각하는 경우
- 이미 유출된 비밀번호는 엔트로피와 상관없이 약하다는 점을 잊는 경우
자주 묻는 질문
좋은 비밀번호는 몇 비트인가요?
무작위로 생성했다면 대부분의 계정에는 70~80비트 정도면 넉넉하고, 암호 키에는 128비트를 씁니다.
긴 문구가 짧고 복잡한 비밀번호보다 나은가요?
단어를 주사위 등으로 무작위로 골랐다면 대체로 그렇습니다.
입력한 비밀번호가 전송되나요?
아닙니다. 계산은 기기 안에서만 이루어집니다.
출처: NIST SP 800-63B, Digital Identity Guidelines: Authentication and Lifecycle Management · OWASP Authentication Cheat Sheet