비밀번호 생성기
문자 집합을 선택해 강력한 난수 비밀번호를 생성합니다. 비밀번호 생성기는 엔트로피를 비트로 표시하며 브라우저에서만 동작합니다.
모든 계산은 브라우저에서 실행됩니다. 입력한 내용은 서버로 전송되지 않습니다.
결과
—
—
복사
일괄 비밀번호
비밀번호 생성기는 선택한 문자 집합에서 난수 비밀번호를 만들고, 모호한 라벨 대신 엔트로피 비트로 강도를 보고합니다. 길이는 4~128자, 헷갈리는 문자·괄호 제외, 기억하기 쉬운 다단어 암호 구문 모드를 지원합니다.
모든 비밀번호는 OS의 암호학적 난수 생성기를 사용해 브라우저에서 생성됩니다. 전송·로그·저장은 없습니다.
난수 비밀번호 생성하기
길이를 정하고 어떤 문자 집합에서 뽑을지 고르면 즉시 비밀번호가 나옵니다. 원하는 만큼 다시 생성할 수 있고, 같은 풀에서 새 값이 뽑히며 어디에도 기록되지 않습니다.
네 집합 모두에서 16자는 돈이나 신원을 보호하는 용도의 합리적 기본값입니다. 로그인 시도에 속도 제한이 있는 서비스에서는 12자면 충분합니다. 12 미만은 사이트 방어에만 의존하며, 그것은 확인할 수 없습니다.
길이가 복잡성보다 중요합니다. 94자 풀에서 한 글자를 더하면 탐색 공간이 94배됩니다. 고정 길이에서 소문자를 기호로 바꾸는 효과는 훨씬 작습니다. 사이트가 16자로 제한하면 16자를 모두 씁니다.
포함할 문자 집합 선택하기
네 집합이 있으며, 켤 때마다 각 문자가 뽑히는 풀이 넓어집니다.
| 집합 | 문자 | 개수 | |
|---|---|---|---|
| 소문자 | a-z | 26 | |
| 대문자 | A-Z | 26 | |
| 숫자 | 0-9 | 10 | |
| 기호 | `!"#$%&'()*+,-./:;<=>?@[\]^_{\ | }~`` | 32 |
네 집합 모두면 94자 풀입니다. 세 가지 수정자로 좁힐 수 있습니다.
헷갈리는 문자 제외는 i I l 1 L |, o O 0, 따옴표·구두점 혼동형을 제거합니다. 화면에서 읽어 다른 기기에 입력하거나 전화로 전달할 때 유용합니다. 엔트로피는 약간 줄지만 실제 불편은 크게 줄입니다.
괄호 제외는 < > ( ) [ ] { }를 제거합니다. 일부 구형 로그인 폼에서 오처리되고, 스크립트에서 비밀번호를 쓸 때 셸이 특별 취급하기도 합니다.
중복 문자 없음은 각 문자를 한 번만 씁니다. 더 강해 보이지만 약간 약해지며, 배치할수록 풀이 줄고 길이는 풀 크기로 상한이 생깁니다. 정책이 요구할 때만 씁니다.
모든 문자를 합친 풀에서 뽑을지, 선택한 각 집합에서 최소 한 글자를 보장할지도 고릅니다. 후자는 많은 기업 정책이 요구합니다. 각 집합에서 하나를 강제하면 유효 조합 일부가 빠져 엔트로피가 아주 약간 줄어듭니다.
비트 엔트로피로 비밀번호 강도 측정하기
엔트로피는 공격자가 필요한 추측 횟수를 2의 거듭제곱으로 표현합니다. "강함"이라는 강도 표시만으로는 무엇에 강한지 알 수 없습니다.
Entropy (bits) = length × log₂(pool size)
Combinations = pool size ^ length
비트는 가산적이며 1비트마다 작업이 두 배입니다. 60비트는 59비트의 2배, 50비트의 1,024배 시간이 걸립니다. 그래서 짧은 길이 증가도 안전성을 크게 올립니다.
대략적 기준과 이유:
- 40비트 미만: 일반 GPU로 수 분 내에 깨집니다. 중요한 용도에는 부적합합니다.
- 50~60비트: 가벼운 공격에는 버티고, 집요한 오프라인 공격에는 무너집니다. 포럼 로그인에 적합합니다.
- 70~80비트: 현실적인 오프라인 공격에 안전합니다. 대부분 계정의 합리적 목표입니다.
- 100비트 초과: 예상 가능한 하드웨어 무차별 대입을 넘습니다. 비밀번호 관리자 마스터·암호 키에 적합합니다.
16자 비밀번호의 엔트로피 계산하기
네 집합 모두에서 뽑은 16자 비밀번호는 약 105비트 엔트로피입니다. 계산입니다. 1. 풀을 더한다. 26 소문자 + 26 대문자 + 10 숫자 + 32 기호 = 94자 2. 글자당 비트를 구한다. log₂(94) = 6.55비트
3. 길이를 곱한다. 16 × 6.55 = 104.9비트
4. 조합 수로 표현한다. 94¹⁶ ≈ 3.7 × 10³¹ 가지
12자로 줄이면 78.6비트, 4.7 × 10²³ 가지입니다. 여전히 강하지만 16자 버전보다 약 680억 배 공격하기 쉽습니다. 16자에서 기호 집합을 빼면 풀은 62, 95.3비트로 네 글자 줄이는 것보다 손실이 작습니다.
이 비교가 중요합니다. 네 글자를 줄이는 것이 기호 집합 전체를 빼는 것보다 비용이 큽니다. 길이가 레버입니다.
비밀번호 해독 시간 이해하기
단일 "해독 시간"은 공격 방식 없이는 무의미합니다. 같은 비밀번호도 추측 방법에 따라 초 단위이거나 태양보다 깁니다. 생성기는 두 시나리오를 보고하고 둘 다 명시합니다.
Expected guesses = 2^(entropy − 1)
Time = expected guesses / guesses per second
온라인 공격, 약 10³회/초. 공격자가 살아 있는 로그인 폼에 추측을 보냅니다. 속도 제한·잠금·지연이 속도를 막습니다. 단일 계정에 대한 많은 실제 공격이 이 형태이며, 생성된 비밀번호는 거의 무기한 버팁니다.
오프라인 공격, 약 10¹²회/초. 서비스가 침해되어 공격자가 해시를 갖습니다. GPU 클러스터와 솔트 없는 MD5·SHA-1 같은 빠른 해시에서는 초당 조 단위 추측이 가능합니다. 영향 줄 수 없는 시나리오가 중요합니다.
10¹²회/초에서 78비트는 약 4,800년, 105비트는 우주 나이를 훨씬 넘깁니다. 40비트는 1초 미만입니다.
숫자가 숨기는 주의: 맹목 추측을 가정합니다. 단어·날짜·키보드 패턴으로 만든 비밀번호는 글자 수가 시사하는 것보다 훨씬 빨리 깨집니다. 공격자는 그런 후보를 먼저 맞힙니다. 그래서 여기서는 기억하기 쉬운 조합이 아니라 난수로 뽑습니다.
난수 문자열 대신 암호 구문 사용하기
암호 구문은 무작위 여러 단어를 이은 것입니다. 난수 문자열과 비슷한 엔트로피를 유지하면서 기억·입력이 가능해, 관리자에 넣을 수 없는 소수 비밀번호에 맞습니다.
Entropy = number of words × log₂(word list size)
7,776단어 목록에서 각 단어는 log₂(7776) = 12.9비트입니다.
| 단어 수 | 엔트로피 | 비교 |
|---|---|---|
| 4 | 51.7비트 | 8자 난수 비밀번호 |
| 5 | 64.6비트 | 10자 난수 비밀번호 |
| 6 | 77.5비트 | 12자 난수 비밀번호 |
| 7 | 90.4비트 | 14자 난수 비밀번호 |
6단어는 77.5비트, 오프라인 공격에 충분하며 대부분 몇 번 반복하면 외웁니다. correct-horse-battery-staple-mountain-glass와 K7#mQ2vX@pL9 중 TV 리모컨에서 떠올려 입력할 수 있는 쪽은 하나뿐입니다.
안전한 암호 구문 규칙 두 가지. 단어는 사람이 아니라 기계가 무작위로 고릅니다. 사람의 선택은 흔한 어휘·연상에 몰립니다. 어디에나 있는 구절을 만들면 안 됩니다. 노래 가사 인용은 단어 수와 관계없이 엔트로피가 거의 없습니다.
관리자 마스터, 기기 로그인, 이메일에는 암호 구문을 쓰고, 나머지는 관리자에 저장한 난수 문자열을 씁니다.
이 생성기가 crypto.getRandomValues를 쓰는 이유
비밀번호 생성기는 crypto.getRandomValues(), 브라우저 암호학적 난수 생성기에서 각 문자를 뽑습니다. OS 엔트로피 풀로 시드됩니다. Math.random()은 쓰지 않습니다. 이 차이가 비밀번호와 겉모습의 차이입니다.
Math.random()은 시뮬레이션·게임용 빠른 의사 난수입니다. 내부 상태가 작고 브라우저는 보안에 부적합하다고 명시하며, 구현과 대략적인 생성 시각을 알면 출력이 예측 가능합니다. Math.random() 기반 생성기는 추측이 아니라 재구성 가능한 비밀번호를 만들며, 글자 수는 그에 대한 방어가 되지 않습니다.
두 번째, 더 미묘한 요구가 있습니다. 단순 나머지로 바이트를 문자 집합에 매핑하면 편향이 생깁니다. 2³²는 94로 나누어떨어지지 않아 집합 앞 문자가 약간 더 자주 나옵니다. 개별 비밀번호에서는 보이지 않고 충분히 많으면 측정되며, 실제 엔트로피는 계산값 아래로 내려갑니다. 이 생성기는 거부 샘플링을 써서 불균등 꼬리 값을 버리고 다시 뽑아 분포를 균일하게 합니다.
비밀번호용 시드는 표시하지 않습니다. 의도적입니다. 이 사이트의 다른 난수기는 재현·검증을 위해 시드를 보여줍니다. 재현 가능한 비밀번호는 이미 노출된 비밀번호이므로 여기서는 저장·표시·유도하지 않습니다.
모든 처리는 브라우저에서 합니다. 비밀번호는 서버로 가지 않고 저장·분석 이벤트에도 포함되지 않습니다.
비밀번호를 안전하게 보관하기
생성한 비밀번호는 한 번만 쓰고 꺼낼 수 있는 곳에 저장해야 의미가 있습니다. 재사용이 나머지를 모두 망칩니다. 한 서비스가 침해되면 공격자는 자격 증명을 어디에나 시도하고, 열 사이트에 쓴 105비트 비밀번호는 가장 약한 하나가 무너지면 모두 무용입니다.
중요도 순 네 가지:
비밀번호 관리자를 쓴다. 기억·재입력 필요가 없어 재사용·단순화 동기가 사라집니다. 긴 암호 구문으로 보호하고, 그 구문과 복구 키를 물리적으로 안전한 오프라인 기록으로 둡니다.
이중 인증을 켠다. 제공되는 곳에서는 SMS보다 인증 앱·하드웨어 키를 우선합니다. SMS 코드는 SIM 스와핑으로 가로챌 수 있습니다. 두 번째 요소는 비밀번호가 알려져도 계정을 지킵니다.
이유가 있을 때만 바꾼다. 90일마다 바꾸는 주기적 교체는 NIST가 더 이상 권하지 않습니다. 예측 가능한 변형을 유도하기 때문입니다. 침해 징후·의심·재사용을 알게 되면 즉시 변경합니다.
주소를 알려진 침해와 대조한다. 이메일을 공개 침해 데이터와 검색하는 서비스는 지금 손봐야 할 계정을 알려 주며, 일정에 맞춰 전부 바꾸는 것보다 유용합니다.
자주 묻는 질문
비밀번호 길이는 얼마가 좋나요?
돈·신원·통신을 보호하는 계정에는 16자가 좋은 기본값이며, 전체 집합에서 약 105비트 엔트로피입니다. 12자는 약 79비트로 낮은 가치 계정에 충분합니다. 사이트가 더 허용하면 더 쓰고, 한 글자마다 탐색 공간이 풀 크기만큼 곱해집니다.
강한 비밀번호의 조건은?
무작위성과 길이, 이 순서입니다. 큰 문자 풀에서 예측 불가능하게 뽑고 가능성 총수가 탐색 불가능한 길이여야 합니다. p@ssw0rd 같은 치환은 거의 효과 없습니다. 공격자는 그 패턴을 먼저 맞힙니다. 비트 엔트로피가 실제 강도를 재고 "강함" 라벨은 재지 않습니다.
여기서 생성한 비밀번호를 써도 안전한가요?
예. 모두 crypto.getRandomValues(), OS 암호학적 난수 생성기로 브라우저에서 생성하고 거부 샘플링으로 분포를 균일하게 합니다. 전송·로그·저장 없고, 이 페이지에 DOM 접근하는 제3자 스크립트도 없습니다.
비밀번호가 어디로 전송되나요?
아니요. 생성은 전적으로 브라우저에서 이뤄지며 생성값은 나가지 않습니다. 브라우저 저장·공유 링크·분석 이벤트에도 없습니다. 탭을 닫으면 영구 삭제되므로 떠나기 전에 관리자에 복사하세요.
비트 엔트로피란?
비트 엔트로피는 공격자가 필요한 추측 횟수를 2의 거듭제곱으로 표현합니다. 60비트는 기대 추측 약 2⁵⁹입니다. 비트 하나마다 난이도가 두 배이며, 94자 풀 16자는 104.9비트, 약 3.7 × 10³¹ 가지입니다.
기호를 포함해야 하나요?
사이트가 받으면 포함하되 기호를 길이보다 우선하지 마세요. 16자에 32자 기호 집합을 더하면 95.3→104.9비트. 기호 없는 16자에 네 글자를 더하면 95.3→119.1비트. 길이가 더 강한 레버입니다.
암호 구문은 난수 비밀번호만큼 강한가요?
무작위로 고른 여러 단어를 이은 것입니다. 7,776단어 목록 6단어는 77.5비트, 12자 난수와 비슷하며 기억·입력이 훨씬 쉽습니다. 기계가 고르고 기존 구절을 만들면 안 됩니다. 알아보는 인용은 엔트로피가 거의 없습니다.
강한 비밀번호를 계정마다 재사용해도 되나요?
아니요. 재사용이 가장 해로운 습관이며 강도는 막지 못합니다. 한 서비스가 침해되면 공격자는 주요 사이트 전부에서 자격 증명을 시도합니다. 각 계정에 고유 비밀번호가 필요하며, 그것이 관리자가 존재하는 이유입니다.
비밀번호는 얼마나 자주 바꿔야 하나요?
이유가 있을 때: 알려지거나 의심되는 침해, 공유·재사용 비밀번호, 더 이상 통제하지 않는 기기. NIST는 정기 교체 지침을 철회했습니다. 강제 변경은 숫자를 붙이는 식의 예측 가능한 변형을 유도해 약화시키기 때문입니다.
모듈로 편향이란?
난수 바이트를 단순 나머지로 문자 집합에 매핑하면 편향이 생깁니다. 바이트 범위는 집합 크기로 나누어떨어지지 않는 경우가 많아 일부 문자가 더 자주 나와 실제 엔트로피가 계산값 아래로 내려갑니다. 이 생성기는 불균등 꼬리를 버리고 다시 뽑아 분포를 균일하게 합니다.
요약
비밀번호 생성기는 최대 94자 풀에서 브라우저 암호학적 난수 생성기로 비밀번호를 뽑고, 거부 샘플링으로 분포를 균일하게 하며, 라벨이 아닌 비트 엔트로피로 강도를 보고합니다.
길이가 가장 강한 요인: 전체 집합 16자는 약 105비트, 네 글자 줄이는 것이 기호 집합 전체 제거보다 엔트로피 손실이 큽니다. 해독 시간은 온라인 10³회/초와 오프라인 10¹²회/초를 모두 제시합니다. 조건 없는 단일 숫자는 의미가 없습니다. 암호 구문 모드는 비슷한 강도를 유지하면서 기억하기 쉬워 관리자에 넣을 수 없는 소수에 맞습니다. 모두 로컬 생성이며 전송·로그·저장 없습니다.
빌드 메모
crypto.getRandomValues()만. 이 파일의Math.random()은 출하된 취약점입니다. 거부 샘플링 필수. 94항목 집합 1000만 회 카이제곱 적합으로 균일성 테스트.- 엔트로피 수치는 테스트 픽스처: 16자/94풀 = 104.9비트; 12/94 = 78.6; 16/62 = 95.3; 20/62 = 119.1; 6단어/7776 = 77.5.
- 이 페이지에서 시드 표시·저장·유도 없음. 영수증 패널은 CSPRNG와 비전송 보장만.
- 리드의 비전송 문구는 약속. 분석 이벤트에 생성값 금지. DOM 접근 제3자 스크립트 로드 금지.
- 비밀번호 기록, 영속화, localStorage 없음.
- NIST 교체 지침은 SP 800-63B. 인용 추가 시 해당 인용. 버전 번호 날조 금지.
- Word count 2,090.