🔐 비밀번호 생성기
브라우저의 암호학적 난수(crypto.getRandomValues)로 추측하기 어려운 비밀번호를 만들어요. 만든 비밀번호는 어디에도 전송·저장되지 않아요.
사용법
- 방식을 고릅니다. 사이트 비밀번호는 무작위 문자, 직접 외워서 입력해야 하는 컴퓨터·비밀번호 관리자 마스터 비밀번호는 단어 조합(패스프레이즈)이 편해요.
- 슬라이더로 길이를 정하고 쓸 문자 종류를 고릅니다. 옵션을 바꿀 때마다 새 비밀번호가 바로 만들어져요.
- 목록에서 마음에 드는 것을 copy로 복사하세요. 맨 위 큰 글씨를 눌러도 첫 번째 비밀번호가 복사됩니다. ↻ 새로 만들기를 누르면 같은 조건으로 다시 뽑아요.
생성은 모두 이 브라우저 안에서 이뤄집니다. 만든 비밀번호는 서버로 보내지 않고, 쿠키나 저장소에도 남기지 않아요. 페이지를 연 뒤 인터넷을 끊어도 그대로 동작합니다.
어떻게 만들어지나요?
- 암호학적 난수 비밀번호의 글자는
crypto.getRandomValues()로 뽑아요. 운영체제의 안전한 난수 생성기(CSPRNG)를 쓰기 때문에, 예측이 가능한Math.random()과 달리 앞에 나온 값으로 다음 값을 추측할 수 없어요. - 편향 없는 뽑기 32비트 난수를 문자 수로 나눈 나머지(
x % n)를 그대로 쓰면, 232이 n으로 딱 나눠떨어지지 않아 앞쪽 글자가 아주 조금 더 자주 나와요(모듈로 편향). 그래서 나눠떨어지는 구간을 넘는 난수는 버리고 다시 뽑는 거부 샘플링을 써서 모든 글자가 정확히 같은 확률로 나오게 했어요. - 종류별 1개 이상 옵션을 켜면 고른 종류(대문자·소문자·숫자·특수문자)가 모두 들어갈 때까지 통째로 다시 뽑아요. 특정 자리에 끼워 넣지 않으니 패턴이 생기지 않아요.
엔트로피(비트)로 보는 비밀번호 강도
엔트로피는 "무작위로 만든 비밀번호를 맞히려면 몇 번 추측해야 하는가"를 2의 거듭제곱으로 나타낸 값이에요. 무작위 문자 비밀번호는 길이 × log₂(문자 종류 수)로 계산합니다. 1비트가 늘 때마다 추측해야 할 경우의 수가 두 배가 돼요.
계산 예시
대문자 26 + 소문자 26 + 숫자 10 + 특수문자 25 = 87종의 문자로 16자를 만들면 16 × log₂87 ≈ 16 × 6.44 ≈ 103비트예요. 헷갈리는 문자 5개(0 O 1 l I)를 빼면 82종이 되어 약 102비트로, 차이는 1비트 정도라 걱정 없이 켜도 됩니다. 반면 숫자 6자리 PIN은 6 × 3.32 ≈ 20비트로 100만 가지뿐이에요.
| 문자 구성 (종류 수) | 8자 | 12자 | 16자 | 20자 |
|---|---|---|---|---|
| 숫자만 (10) | 27비트 | 40비트 | 53비트 | 66비트 |
| 소문자만 (26) | 38비트 | 56비트 | 75비트 | 94비트 |
| 소문자+숫자 (36) | 41비트 | 62비트 | 83비트 | 103비트 |
| 대소문자+숫자 (62) | 48비트 | 71비트 | 95비트 | 119비트 |
| 대소문자+숫자+특수문자 (87) | 52비트 | 77비트 | 103비트 | 129비트 |
표를 보면 종류를 늘리는 것보다 길이를 늘리는 것이 훨씬 효과적이에요. 소문자만 16자(75비트)가 모든 종류를 섞은 8자(52비트)보다 강합니다.
강도 기준
| 엔트로피 | 표시 | 초당 100억 번 추측할 때 (평균) |
|---|---|---|
| 45비트 미만 | 약함 | 약 30분 이내 |
| 45~59비트 | 보통 | 약 30분 ~ 1년 |
| 60~79비트 | 강함 | 약 2년 ~ 100만 년 |
| 80비트 이상 | 매우 강함 | 약 190만 년 이상 |
"초당 100억 번"은 유출된 비밀번호 해시를 고성능 GPU로 오프라인 공격하는 상황을 가정한 보수적인 숫자예요. 실제 로그인 화면은 입력 횟수 제한이 있어 훨씬 느리지만, 사이트가 해킹당해 해시가 유출되면 이 속도가 현실이 됩니다. 시간은 대략적인 비교용이에요.
패스프레이즈(단어 조합)
Maple-Otter-Lunar-Brick7-Kite-Tiger-Cloud처럼 무작위 단어를 이어 붙인 비밀번호예요. 이 도구는 쉬운 영어 단어 512개에서 뽑으므로 단어 하나가 정확히 9비트(29 = 512)입니다. 7단어면 63비트, 숫자 하나를 붙이면 약 66비트예요. 같은 강도의 무작위 문자보다 길지만 소리 내어 읽고 외우기 쉬워서, 매번 손으로 입력해야 하는 비밀번호에 잘 맞아요.
중요한 건 단어를 직접 고르지 않는 것이에요. 사람이 고른 "좋아하는 단어 + 생일"은 단어 수가 많아도 추측하기 쉽습니다.
비밀번호를 안전하게 쓰는 습관
- 사이트마다 다른 비밀번호 한 곳이 유출되면 같은 비밀번호를 쓴 다른 계정도 함께 뚫려요(크리덴셜 스터핑).
- 비밀번호 관리자 무작위 비밀번호를 다 외울 수는 없으니, 브라우저나 전용 비밀번호 관리자에 저장하고 마스터 비밀번호만 강한 패스프레이즈로 외우세요.
- 2단계 인증 중요한 계정(이메일, 금융, SNS)은 OTP·인증 앱 2단계 인증을 켜 두세요.
- 특수문자 제한이 있는 사이트 일부 사이트는 특정 특수문자만 허용하거나 최대 길이를 제한해요. 가입이 안 되면 특수문자를 끄고 길이를 늘리거나, 새로 만들어 보세요.
이 페이지의 생성 코드는 페이지 안에 그대로 들어 있어 외부로 요청을 보내지 않습니다. 그래도 공용 PC에서는 복사한 비밀번호가 클립보드에 남을 수 있으니 사용 후 다른 내용을 복사해 덮어 두세요.