Passphrase Generator: 강력하고 외우기 쉬운 패스프레이즈
XKCD 방식(correct horse battery staple) 패스프레이즈를 생성합니다. 다양한 단어 사전, 사용자 지정 구분자, 실시간 엔트로피 표시 제공.
Passphrase Generator란?
Passphrase Generator는 XKCD의 "correct horse battery staple" 방식으로 외우기 쉬운 다단어 패스프레이즈를 만들어 줍니다. 단어 수와 사전 한두 개를 고르면 도구는 crypto.getRandomValues로 결합 풀에서 단어를 무작위로 뽑고, 결과 엔트로피를 비트로 표시하며 Weak에서 Ludicrous까지 7단계 척도로 라벨을 붙여 줍니다. 새 비밀번호 관리자 마스터 비밀번호, 암호화 복구 문구, 또는 언젠가 휴대폰 키보드로 입력하게 될 자격 증명을 설정할 때 저는 이 도구를 사용합니다. 무작위 문자열은 문자당 강도가 더 높지만 그런 용도엔 쓸 수 없습니다 — 7,776 단어 EFF 목록에서 무작위 4단어를 뽑으면 51비트 엔트로피를 얻고, 사흘째에도 정말로 떠올릴 수 있는 문자열이 됩니다.
주요 기능
- 다양한 단어 사전 — EFF Diceware long list(7,776 단어), Common English 목록, Technical과 Nature 목록, 그리고 독일어/스페인어/프랑스어/포르투갈어/러시아어/힌디어/일본어/중국어/한국어용 로케일 전용 목록.
- 단어 수 슬라이더(3-10) — 끌어서 최소 단어 수를 지정합니다. 3단어는 입력이 빠르지만 작은 목록에서는 ~38비트뿐이고, 마스터 비밀번호의 현실적 스위트 스폿은 6-7단어입니다.
- 선택적 최소 길이 — 두 번째 슬라이더가 문자 수 하한(0-50)을 부여합니다. 서비스가 최소 20자를 요구하는데 짧은 4단어로는 모자랄 때 유용합니다.
- 5가지 구분자 옵션 — None(camelCase 스타일), Space, Hyphen, Underscore, Period. 구분자는 엔트로피에 기여하지 않지만 가독성에 영향을 줍니다.
- Capitalize each word — 각 단어의 첫 글자를 대문자로 만듭니다. 실질적 엔트로피는 늘지 않지만 "대문자 포함" 규칙을 만족시킵니다.
- Append random number — 설정 가능한 범위(기본 1-999)에서 숫자 하나를 뒤에 붙입니다. 추가 비트 표시는 범위에 따라 실시간으로 갱신됩니다.
- 실시간 엔트로피 계산 — 엔트로피 패널은 총 비트, 풀 크기, 단어당 비트, 색상으로 구분된 강도 라벨을 표시하며 설정 변경 시 즉시 업데이트됩니다.
- 최대 100개 일괄 생성 — count 슬라이더를 끌어 한 번의 클릭으로 최대 100개 패스프레이즈를 만들 수 있고, 각각에 엔트로피 수치가 함께 표시됩니다.
- 브라우저 측 무작위성 — 무작위성의 출처는
Math.random()이 아니라 Web Crypto API가 내부에서 사용하는 동일한 CSPRNG인crypto.getRandomValues입니다.
Passphrase Generator 사용법
1단계: 단어 수와 길이 선택
상단의 "Words" 슬라이더로 최소 단어 수를 3에서 10까지 설정합니다. 라벨은 실시간으로 갱신됩니다("4 words", "7 words"). 그 아래 "Minimum length" 슬라이더가 0에서 50까지 문자 수 하한을 설정합니다. 대상 시스템이 특정 최소 길이를 요구하지 않는 한 0으로 두세요. 최소 길이를 설정하면, 단어 수와 길이 임계값을 모두 충족할 때까지 생성기가 단어를 계속 뽑습니다.
2단계: 구분자와 대문자화 선택
"Separator" 아래의 다섯 개 라디오 버튼이 단어 결합 방식을 결정합니다: None, Space, Hyphen, Underscore, Period. 그 아래 두 개 체크박스 — "Capitalize each word", "Append random number" — 가 해당 수정 사항을 토글합니다. 대문자화는 기본 ON, 숫자 추가는 기본 OFF입니다. "Append random number"를 체크하면 Min/Max 필드와 라이브 "+ X.X bits" 표시가 있는 숫자 범위 박스가 나타나 엔트로피 기여도를 보여 줍니다.
3단계: 사전 선택
"Dictionaries" 아래 도구는 사용자 로케일에 적합한 목록을 표시합니다 — 한국어의 경우 BIP39 Korean, EFF Diceware(영어), Common English입니다. 각 항목은 단어 수와 한 줄 설명을 보여 줍니다. 여러 개를 동시에 체크할 수 있고, 풀은 그 목록들을 결합합니다. 최소 하나는 체크해야 합니다(도구가 마지막 남은 항목의 해제를 토스트로 막습니다). 목록을 추가하면 결합 풀이 커지지만 비례하지 않으므로 단어당 비트는 보통 약간 떨어집니다 — 엔트로피 패널이 라이브 수치를 보여 줍니다.
4단계: 엔트로피 패널 읽기
사전 아래의 회색 패널은 세 가지 수치를 보여 줍니다: 총 엔트로피(강도 등급별 색상), 단어 풀 크기, 단어당 비트. 강도 등급은 총 비트로 정해집니다:
- Weak(빨강): 40비트 미만
- Fair(주황): 40-49비트
- Good(노랑): 50-59비트
- Strong(라임): 60-79비트
- Very Strong(시안): 80-99비트
- Fortress(보라): 100-149비트
- Ludicrous(무지개): 150비트 이상
정말 신경 쓰는 대상이라면 60비트가 최소선입니다. 마스터 비밀번호의 적정 목표는 80비트입니다.
5단계: 생성하고 복사
"Generate" 카운트 슬라이더(1-100)를 설정하고 Generate 버튼을 누릅니다. 결과는 아래 목록에 나타나며, 각 항목에 단어 수와 엔트로피가 함께 표시됩니다. 각 줄 옆의 복사 아이콘은 그 패스프레이즈를 클립보드로 복사하고, 상단의 Copy All 버튼은 모두를 줄바꿈으로 연결해 복사합니다. Clear는 목록을 비웁니다. 마음에 드는 것이 아직 없으면 Generate를 다시 누르세요. 슬라이더 설정은 유지되고 단어만 바뀝니다.
실용적 예시
비밀번호 관리자 마스터 비밀번호
설정: 7단어, EFF Diceware 목록, Hyphen 구분자, Capitalize 켜짐, 숫자 없음, Generate count 5.
출력(다섯 후보 중 하나):
Tropical-Dapper-Backboard-Skating-Roving-Reproach-Cubical
이는 90.5비트 엔트로피로 Very Strong입니다. 다섯 후보 중 마음에 드는 것을 고르고 외우는 일주일 동안 종이에 적어 둔 다음, 외워지면 종이는 파쇄하세요. 하이픈 덕분에 처음 며칠 동안의 모바일 키보드 입력도 견딜 만합니다.
암호화 복구 문구
설정: 6단어, EFF Diceware, Space 구분자, Capitalize 꺼짐, 숫자 없음.
출력:
gallant pelt anguish flagstone graveness scorch
77.5비트, Strong. 가족에게 전화로 문구를 읽어 줄 때, 공백은 하이픈보다 소리 내어 읽기 쉽고 오타가 적습니다. BIP39 형식 복구 문구의 표준 권장은 6단어 — 같은 발상에 단어 목록만 다릅니다.
매일 쓰는 서버용 SSH 키 패스프레이즈
설정: 5단어, Common English 목록, Hyphen 구분자, Capitalize 켜짐, Append number(1-99).
출력:
Brisk-Marble-Quill-Vintage-Oasis-47
약 56비트입니다. 마스터 비밀번호 예시보다는 엔트로피가 낮지만, 디스크 위에서 4096비트 RSA 키로도 보호되는 키에는 이게 적절한 균형입니다: 하루 30번 입력해도 짜증 나지 않을 만큼 짧고, 도난당한 id_rsa가 즉시 게임 오버가 되지 않을 만큼 강합니다. 끝의 숫자는 몇 비트를 더해 주고, 단어를 바꾸지 않고도 서버별로 다른 패스프레이즈를 유지하게 해 줍니다.
팁과 모범 사례
의미 있는 모든 것에는 60비트가 최소선입니다. 60비트 미만이면 자금이 풍부한 GPU 리그가 키스페이스를 몇 주 안에 훑을 수 있습니다. 80을 넘으면 국가 행위자라도 인내심이 바닥납니다. 강도 라벨은 그 분기점에 맞춰져 있습니다: Strong(60-79)은 대부분의 계정에 충분, Very Strong(80-99)은 마스터 비밀번호 목표.
XKCD 방식은 기억의 측면에서 무작위 문자에 이깁니다. qP$7zR!2mK#x 같은 12자 무작위 문자열은 약 79비트지만 외울 수 없습니다. EFF Diceware 6단어는 약 77비트이며 한 번 따라 읽으면 입에 붙습니다. 절대 입력할 일 없는 자격 증명에는 무작위 문자가 괜찮지만, 입력할 것에는 단어가 이깁니다.
복잡함이 아니라 길이를 더하세요. "대소문자, 숫자, 기호를 섞어라"라는 조언은 8자 비밀번호 시대의 유산입니다. 패스프레이즈에서 의미 있는 손잡이는 길이뿐입니다. 7,776 단어 목록에서 단어 하나를 더하면 ~12.9비트가 늘어나는데, 이는 모든 기호 치환의 합보다 큽니다.
목록을 합치면 단어 하나하나는 보통 약해집니다. 7,776 단어 목록 두 개가 15,552 고유 단어를 주지는 않습니다 — 중복 제거 후엔 ~14,000 정도입니다. 단어당 비트는 약 0.8 오르므로, 두 번째 목록을 켜는 것보다 단어 하나를 더하는 편이 더 큽니다. 특정 미감(기술 용어만, 자연 용어만)을 위해서라면 다중 목록을 쓰되, 엔트로피 목적으론 쓰지 마세요.
가치 있는 자격 증명마다 다른 패스프레이즈를 사용하세요. 한 번의 유출이 다른 계정을 오염시키면 안 됩니다. 10개 단위로 생성해 비밀번호 관리자, 디스크 암호화, 복구 코드, SSH 키에 하나씩 배정하세요.
자주 발생하는 문제와 해결
"Please select at least one wordlist" — 모든 사전 박스의 체크를 풀었습니다. 최소 하나는 체크하세요. 마지막 남은 목록의 체크 해제도 도구가 토스트로 막습니다.
설정한 최소 길이보다 패스프레이즈가 짧게 나옵니다. 최소 길이 슬라이더는 문자 수 하한만 부여할 뿐 정확한 목표값이 아닙니다. 최소를 30으로 두고 단어 합이 33자라면 결과는 33자이며, 30으로 채워 넣지는 않습니다. 단어 수와 최소 길이를 100회 시도 안에 함께 충족할 수 없으면 생성기는 멈추고 보유분을 반환합니다 — 더 현실적인 조합을 고르세요.
두 번째 wordlist를 체크하면 엔트로피 표시가 떨어집니다. 결합 풀이 커지면서 단어당 비트가 총합에 비해 상대적으로 줄어드는 것이라 수학적으로 옳습니다. 단어당 비트는 log2(풀 크기)이며 14,000 단어 풀은 ~13.8비트/단어, 7,776 단어 풀은 ~12.9비트/단어입니다. 총 엔트로피는 그래도 늘지만, 직관처럼은 늘지 않습니다.
패널에서 대문자화는 엔트로피를 더하지 않습니다. 각 단어 첫 글자를 대문자로 만드는 것은 예측 가능합니다(공격자는 그 패턴을 가장 먼저 시도합니다). 그래서 계산기는 0비트로 셉니다. 고정 구분자도 마찬가지입니다. 엔트로피 합계에 기여하는 것은 무작위 숫자 범위와 단어 추첨뿐입니다.
같은 단어가 한 패스프레이즈에 두 번 나옵니다. 7,776 단어 풀에서 4-7개를 뽑을 때 생일 문제로 인한 중복 확률은 작지만 0이 아닙니다. 중복이 있어도 패스프레이즈가 무효가 되지는 않습니다 — 엔트로피 계산은 처음부터 독립 추첨을 가정합니다. 보기 싫다면 Generate를 다시 누르세요.
프라이버시와 보안
모든 패스프레이즈 생성은 Web Crypto API가 노출하는 암호학적으로 안전한 의사 난수 생성기인 crypto.getRandomValues를 사용해 브라우저 안에서 수행됩니다. 생성된 패스프레이즈는 어떤 서버로도 전송되지 않으며, 사전은 페이지 JavaScript에 번들되어 도구의 나머지 부분과 함께 로드됩니다. 도구 아래 히스토리 패널은 최근 생성 결과를 브라우저의 로컬 IndexedDB에만 저장합니다 — 작업이 끝났으면 비우거나, 로컬 흔적도 남기고 싶지 않다면 비공개/시크릿 창에서 사용하세요.
자주 묻는 질문
XKCD 패스프레이즈 방식이란?
XKCD 936화("Password Strength")에서 비롯됐는데, 흔한 무작위 4단어("correct horse battery staple")가 Tr0ub4dor&3 같은 전형적인 8자 "복잡" 비밀번호보다 더 강하고 외우기 쉽다고 주장합니다. 계산: 2,048 단어 목록에서 4단어는 44비트, 복잡한 8자 문자열은 사람들이 흔히 쓰는 예측 가능 치환 패턴을 빼면 약 28비트입니다. Passphrase Generator는 이를 직접 구현합니다.
Diceware는 무엇이며, EFF 목록은 어떻게 다른가?
Diceware는 Arnold Reinhold(1995)가 만든 원래 패스프레이즈 방식으로, 7,776 단어 목록에서 단어 하나를 고르기 위해 물리 주사위 5개를 굴리고 단어 수만큼 반복합니다. EFF는 2016년에 같은 7,776 단어 크기에 더 나은 단어 선정의 갱신본을 공개했습니다 — 발음하기 쉽고, 희귀하거나 거슬리는 단어가 줄었으며, 한 글자 오타 충돌을 피하기 위한 최소 단어 길이를 도입했습니다. Passphrase Generator는 EFF 목록을 기본 영어 사전으로 씁니다.
강한 패스프레이즈에는 단어 몇 개가 필요한가?
EFF 목록 기준 4단어는 51.7비트 — Good이지만 Strong은 아닙니다. 6단어는 77.5비트(Strong). 7단어는 90.5비트(Very Strong)에 도달하며, 마스터 비밀번호의 적절한 목표입니다. 4단어 미만이면 무작위 8자 비밀번호보다 약하고, 7단어 초과는 수익은 줄고 외우는 비용만 늘어납니다.
비밀번호 관리자의 마스터 비밀번호로 패스프레이즈를 써도 되나?
네 — 권장 사용처입니다. 마스터 비밀번호는 관리자 안에 저장할 수 없는 유일한 자격 증명이라 외울 수 있어야 합니다. EFF Diceware 6-7단어, 77-90비트가 표준 권장값입니다.
도구가 대문자화에 0비트라고 하는 이유?
대문자화 패턴이 고정되어 있고 알려져 있기 때문입니다. 진정한 엔트로피 기여는 공격자가 예측할 수 없는 형태의 대문자화를 요구합니다. "Capitalize first letter of each word"는 너무 뻔한 패턴이라 공격자는 첫 시도로 그것을 시험합니다. 0비트로 세는 것이 정직한 회계입니다.
"Append random number" 옵션은 써야 하나?
대상 시스템에 달렸습니다. 시스템이 "숫자 포함 필수"를 강제하면 박스에 체크하고 0-99 같은 작은 범위를 고르세요(약 6비트). 그런 요구가 없다면 엔트로피는 단어 하나를 더하는 데 쓰는 편이 효율적입니다: 7단어 패스프레이즈가 6단어 + 3자리 숫자보다 엔트로피가 크고 외우기도 더 쉽습니다.
관련 도구
- 비밀번호 생성기 — 손으로 입력할 일 없는 자격 증명용으로 밀도 높은 무작위 문자 비밀번호 생성.
- UUID 생성기 — 패스프레이즈 대신 전역 고유 식별자가 필요할 때 v4 UUID 생성.
- Base64 인코더/디코더 — 암호문을 포함한 임의의 이진 데이터를 안전하게 텍스트로 운반하기 위한 인코딩.
- AES 암호화 — 방금 생성한 패스프레이즈를 비밀번호로 사용해 민감한 메모나 파일을 암호화.
- 해시 스위트 — 구절 자체가 아닌 검증용 값을 저장해야 할 때 패스프레이즈의 SHA-256·SHA-512 등 해시를 계산.
Passphrase Generator 지금 사용해 보기: Passphrase Generator