비밀번호 생성기란?
안전한 비밀번호의 조건은 '복잡함'이 아니라 '예측 불가능성'입니다. P@ssw0rd! 처럼 규칙적으로 바꾼 단어는 길어 보여도 공격자가 먼저 시도하는 조합에 들어 있어 쉽게 뚫립니다. 무작위로 만든 비밀번호가 훨씬 안전합니다.
이 생성기는 브라우저의 암호학적 난수 생성기(crypto.getRandomValues)를 씁니다. Math.random 같은 예측 가능한 난수가 아니라 운영체제의 엔트로피를 쓰므로 생성된 비밀번호를 역산할 수 없습니다.
사용 방법
- 길이를 정합니다. 16자 이상을 권장합니다.
- 포함할 문자 종류를 고릅니다. 많을수록 안전합니다.
- 손으로 옮겨 적어야 한다면 '헷갈리는 문자 빼기'를 켜세요.
- '다시 생성'을 누를 때마다 새 비밀번호가 만들어집니다. 복사 버튼으로 가져가세요.
계산 방법
엔트로피(비트) = 길이 × log₂(사용 가능한 문자 수)
예) 16자, 소문자+대문자+숫자+기호 (87종)
= 16 × log₂(87)
= 16 × 6.44
≈ 103비트
전수조사 시간 = 2^엔트로피 ÷ 2 ÷ 초당 추측 횟수| 엔트로피 | 등급 | 뜻 |
|---|---|---|
| 40비트 미만 | 약함 | 일반 장비로도 금방 뚫림 |
| 40 ~ 60비트 | 보통 | 전용 장비면 위험 |
| 60 ~ 80비트 | 강함 | 현실적으로 안전 |
| 80비트 이상 | 매우 강함 | 전수조사 불가능 |
이 계산은 초당 100억 회를 추측할 수 있다고 가정합니다. 실제 공격 속도는 해시 알고리즘과 장비에 따라 크게 다르므로 어림값으로만 보세요.
활용 예시
| 구성 | 길이 | 엔트로피 |
|---|---|---|
| 숫자만 | 6자 | 약 20비트 (PIN 수준) |
| 소문자만 | 8자 | 약 38비트 |
| 소문자+숫자 | 12자 | 약 62비트 |
| 모든 종류 | 12자 | 약 77비트 |
| 모든 종류 | 16자 | 약 103비트 |
| 모든 종류 | 24자 | 약 155비트 |
길이가 문자 종류보다 영향이 큽니다. 소문자만 쓰더라도 20자면 약 94비트로, 모든 종류를 쓴 12자(77비트)보다 안전합니다. 외우기 쉬운 긴 비밀번호가 짧고 복잡한 것보다 낫습니다.
자주 묻는 질문
- 생성된 비밀번호가 서버로 전송되나요?
- 전송되지 않습니다. 브라우저 안에서 만들어지고 주소창에도 남지 않습니다. 페이지를 새로 고치면 사라집니다. 다만 공용 컴퓨터에서는 화면과 클립보드에 남을 수 있으니 주의하세요.
- 비밀번호를 주기적으로 바꿔야 하나요?
- 미국 NIST는 2017년부터 주기적 변경을 권장하지 않습니다. 억지로 바꾸면 오히려 단순한 패턴(password1 → password2)을 쓰게 되기 때문입니다. 유출이 의심될 때만 바꾸고, 대신 사이트마다 다른 비밀번호를 쓰세요.
- 이 긴 비밀번호를 어떻게 외우나요?
- 외우지 말고 비밀번호 관리자를 쓰세요. 관리자 하나의 마스터 비밀번호만 외우면 됩니다. 사이트마다 다른 무작위 비밀번호를 쓰는 것이 유출 피해를 막는 가장 확실한 방법입니다.
- 기호를 못 쓰는 사이트는 어떻게 하나요?
- 기호를 끄고 길이를 늘리세요. 소문자+대문자+숫자(62종)로 20자면 약 119비트로 충분히 안전합니다.
- '헷갈리는 문자 빼기'는 안전성을 떨어뜨리나요?
- 사용 가능한 문자가 줄어 엔트로피가 조금 낮아집니다. 같은 안전성을 유지하려면 길이를 한두 자 늘리면 됩니다. 손으로 옮겨 적거나 전화로 불러줘야 할 때만 쓰세요.
참고 자료
계산 기준 · crypto.getRandomValues 로 암호학적 난수를 생성하고, 나머지 연산 편향을 없애기 위해 범위를 벗어난 값은 버리고 다시 뽑습니다. 선택한 문자 종류가 각각 최소 한 번씩 들어가도록 채운 뒤 Fisher-Yates 로 섞습니다. 엔트로피는 길이 × log₂(문자 종류 수)로 계산합니다.