비밀번호 생성기

무작위·발음형·패스프레이즈 3가지 방식으로 비밀번호 생성

무작위 문자 조합, 발음하기 쉬운 문자열, 기억하기 쉬운 패스프레이즈 세 가지 방식으로 안전한 비밀번호를 만듭니다. 결과마다 엔트로피(비트)와 강도를 함께 보여줍니다.

🔒 crypto.getRandomValues로 브라우저 안에서만 계산합니다 — 생성된 비밀번호는 서버로 전송되지 않습니다.

  • 생성 버튼을 누르면 비밀번호가 여기에 표시됩니다.

사용법

  • 랜덤 문자: 길이와 문자 종류(대문자/소문자/숫자/기호)를 골라 완전 무작위 비밀번호를 만듭니다. 저장할 필요가 없는 계정, 비밀번호 관리자에 넣을 계정에 적합합니다.
  • 발음 가능: 자음-모음을 번갈아 배치해 실제 단어는 아니지만 눈으로 읽고 소리 내 말하기 쉬운 문자열을 만듭니다. 전화로 불러줘야 하거나 잠깐 직접 입력할 임시 비밀번호에 유용합니다.
  • 패스프레이즈: 흔한 영단어 여러 개를 무작위로 골라 구분자로 이어 붙입니다. 길이는 길어도 사람이 외우기는 오히려 쉽고, 단어 개수를 늘릴수록 엔트로피(안전성)도 함께 올라갑니다.
  • 엔트로피(비트)는 같은 방식·같은 옵션으로 나올 수 있는 모든 경우의 수를 log2로 나타낸 값입니다. 60비트 이상이면 일반적인 온라인 서비스에, 80비트 이상이면 장기간 보관할 계정에도 충분합니다.

비밀번호 생성기 소개

이 도구는 세 가지 방식으로 비밀번호를 만듭니다. 무작위 문자 조합, 발음하기 쉬운 문자열, 그리고 단어를 이어 붙인 패스프레이즈입니다. 모든 무작위 선택은 crypto.getRandomValues로 하고 Math.random은 쓰지 않습니다. Math.random은 예측 가능한 값이 나올 수 있어 비밀번호에 부적합하기 때문입니다.

각 결과 옆에는 엔트로피(비트)가 표시됩니다. 엔트로피는 「이 방식으로 나올 수 있는 경우의 수」를 2의 거듭제곱으로 나타낸 값으로, 비밀번호의 실제 강도를 가늠하는 가장 정직한 숫자입니다. 아래에서 이 숫자가 어떻게 계산되고 왜 「길이」가 「복잡한 규칙」보다 중요한지 설명합니다.

엔트로피는 길이 × log2(문자 종류 수)

무작위 문자 모드에서 문자를 문자 집합에서 균등하게 뽑으면, 엔트로피는 길이 × log2(문자 집합 크기)입니다. 이 도구의 기본 문자 집합은 대문자 26 + 소문자 26 + 숫자 10 + 기호 25 = 87종입니다. log2(87) ≈ 6.44비트이므로 한 글자가 약 6.44비트를 담습니다.

그래서 12자는 약 77비트, 16자는 약 103비트입니다. 한 글자 늘 때마다 6.44비트가 더해지는데, 이것은 경우의 수가 87배 커진다는 뜻입니다. 반대로 문자 종류를 줄이면(예: 소문자만 26종, log2(26)≈4.7비트) 같은 길이라도 엔트로피가 낮아집니다. 「헷갈리는 문자 제외」를 켜면 0·O·1·l·I·| 같은 몇 글자가 빠져 집합이 조금 작아지므로 엔트로피도 아주 조금 줄어듭니다.

이 계산은 문자를 정말 무작위로 뽑았을 때만 맞습니다. 사람이 직접 만든 「P@ssw0rd!」 같은 비밀번호는 글자 수는 많아도 예측 가능한 패턴이라 실제 엔트로피가 훨씬 낮습니다. 표시된 비트 값은 이 도구가 무작위로 생성한 경우에만 유효합니다.

복잡도 규칙보다 길이가 중요한 이유

「대문자·숫자·기호를 반드시 섞어라」는 규칙은 문자 집합을 키워 글자당 엔트로피를 조금 올립니다. 하지만 길이를 늘리는 편이 훨씬 효율적입니다. 소문자만 20자(log2(26)×20 ≈ 94비트)가 87종 14자(≈90비트)보다 강합니다. 규칙은 오히려 사람들이 「Password1!」처럼 뻔한 패턴으로 규칙을 만족시키게 만들어 예측 가능성을 높이기도 합니다.

NIST의 디지털 신원 지침(SP 800-63B, 2025년 개정)은 이 방향을 명문화했습니다. 사용자가 정하는 비밀번호는 최소 8자 이상(단일 인증 수단만 쓸 때는 15자 이상), 최대 64자 이상을 허용하고, 문자 종류를 강제하는 조합 규칙을 부과하지 말라고 합니다. 또 주기적 강제 변경을 요구하지 말고(유출 정황이 있을 때만 변경), 유출된 비밀번호 목록과 대조해 흔한 값을 거르라고 합니다.

패스프레이즈: 왜 단어 몇 개가 안전한가

패스프레이즈 모드는 256개(정확히 2^8) 단어 목록에서 중복 없이 뽑아 이어 붙입니다. 목록 크기가 2의 거듭제곱이라 단어 하나가 정확히 8비트입니다. 다만 중복 없이 뽑으므로(비복원 추출) 정확한 엔트로피는 조금 다릅니다. 5단어는 log2(256×255×254×253×252) ≈ 39.9비트입니다.

유명한 Diceware 방식은 7,776단어(6면 주사위 5번) 목록을 써서 단어당 log2(7776) ≈ 12.9비트, 6단어면 약 77비트입니다. 이 도구의 목록은 어느 언어권 사용자든 오타 없이 옮겨 적기 쉽도록 짧고 흔한 영단어 256개로 줄였기에 단어당 비트는 낮지만, 단어 수를 늘리면 그만큼 채울 수 있습니다. 핵심은 사람이 외우기는 쉽고 기계가 맞히기는 어렵다는 점입니다.

「대문자화」나 「끝에 숫자 추가」 옵션은 보기에는 강해 보여도 엔트로피에 거의 기여하지 않습니다. 첫 글자 대문자는 위치가 고정돼 있어 추가 경우의 수가 없고, 끝에 붙는 한 자리 숫자는 log2(10) ≈ 3.3비트뿐입니다. 진짜로 강도를 올리려면 단어 수를 늘리세요.

발음 가능한 모드의 절충

발음 가능한 모드는 자음(20종)과 모음(5종)을 번갈아 붙여 읽기 쉬운 문자열을 만듭니다. 대신 한 글자당 엔트로피가 낮습니다. 자음은 log2(20)≈4.32비트, 모음은 log2(5)≈2.32비트라, 자음-모음 한 쌍이 약 6.64비트입니다. 10자면 약 39.9비트에 불과합니다.

외우기 쉬운 대신 무작위 문자 모드보다 훨씬 약하다는 뜻입니다. 눈으로 읽어 옮겨야 하는 임시 비밀번호 정도에 쓰고, 오래 보호해야 하는 계정에는 길이가 넉넉한 무작위 문자나 단어 수가 많은 패스프레이즈를 쓰세요.

예시

12자 vs 16자 (전체 문자 87종)

입력
무작위 문자 모드, 대소문자+숫자+기호
결과
12자 ≈ 77비트, 16자 ≈ 103비트

한 글자가 log2(87)≈6.44비트. 네 글자 차이가 약 26비트, 즉 경우의 수 약 6,700만 배 차이입니다.

5단어 패스프레이즈

입력
패스프레이즈 모드, 256단어 목록에서 5개
결과
약 39.9비트 (예: river-anchor-melody-copper-forest 형태)

log2(256×255×254×253×252)로 계산. 단어를 6개로 늘리면 약 47.9비트가 됩니다.

사용 방법

  1. 무작위 문자, 발음 가능, 패스프레이즈 중 방식을 고릅니다.
  2. 길이나 단어 수, 포함할 문자 종류를 조절합니다.
  3. 표시되는 엔트로피(비트)를 보며 강도를 확인합니다.
  4. 생성된 값을 복사해 씁니다. 새로 만들려면 다시 생성합니다.

주요 용어

엔트로피(비트)
무작위 생성으로 나올 수 있는 경우의 수를 log2로 나타낸 값. 값이 클수록 추측하기 어렵습니다.
문자 집합 크기
한 자리에 올 수 있는 문자의 종류 수. 클수록 글자당 엔트로피가 큽니다.
패스프레이즈
단어 여러 개를 이어 붙인 비밀번호. 외우기 쉬우면서 길이로 엔트로피를 확보합니다.

자주 묻는 질문

몇 비트면 안전한가요?

온라인 서비스(로그인 시도 제한 있음)라면 수십 비트로도 충분하지만, 유출된 해시가 공격받는 상황까지 대비하려면 80비트 이상을 권합니다. 이 도구는 60비트 이상을 「강함」으로 표시합니다.

기호를 꼭 넣어야 하나요?

아니요. NIST는 문자 종류 강제를 권하지 않습니다. 길이를 충분히 늘리면 소문자만으로도 안전합니다. 다만 기호를 금지하는 사이트가 있어 호환성 때문에 넣기도 합니다.

생성값이 서버로 가나요?

가지 않습니다. 생성은 브라우저 안에서만 이뤄지고 crypto.getRandomValues로 난수를 뽑습니다.

비밀번호를 주기적으로 바꿔야 하나요?

NIST는 유출 정황이 없다면 주기적 강제 변경을 권하지 않습니다. 잦은 변경은 오히려 예측 가능한 패턴(월 이름+숫자 등)을 부릅니다.

패스프레이즈에서 대문자·숫자를 켜면 훨씬 강해지나요?

거의 아닙니다. 위치가 고정된 대문자화는 엔트로피를 늘리지 않고, 끝 숫자 한 자리는 약 3.3비트뿐입니다. 단어 수를 늘리는 게 확실합니다.

관련 가이드

출처

기준일:

개인정보와 저장 방식