비밀번호 생성기 — 안전한 랜덤 비밀번호 만들기
브라우저 암호 난수로 만드는 랜덤 비밀번호 생성기
브라우저에서 처리 · 서버로 전송되지 않음
소개
이 도구는 길이와 문자 종류를 정하면 예측하기 어려운 랜덤 비밀번호를 바로 만들어 줍니다. 한 번에 최대 100개까지 만들 수 있고, 각 비밀번호 옆의 복사 버튼으로 곧바로 가져갈 수 있어요. 모든 계산은 브라우저 안에서 일어나며 생성된 값은 서버로 나가지 않습니다.
사용법
- 길이를 슬라이더나 숫자 칸으로 정합니다. 4자에서 1024자까지 가능하고, 슬라이더는 128자까지예요. 아래 16·32·64·128·256·512·1024 버튼을 누르면 바로 그 길이로 바뀌어요.
- 소문자, 대문자, 숫자, 기호 중 쓸 종류를 고릅니다.
- 손으로 옮겨 적을 일이 있으면 헷갈리는 문자 제외를 켭니다.
- 옵션을 바꾸면 결과가 바로 새로 만들어집니다. 같은 옵션으로 다시 뽑으려면 다시 생성을 누르세요.
- 마음에 드는 비밀번호의 복사 버튼을 눌러 비밀번호 관리자나 가입 화면에 붙여 넣습니다.
기준
- 난수원:
crypto.getRandomValues가 주는 32비트 난수만 사용하고Math.random은 쓰지 않습니다. - 편향 제거: 난수를 문자 수로 나눈 나머지로 고르면 앞쪽 문자가 아주 조금 더 자주 나옵니다. 그래서 2의 32제곱을 문자 수로 나눈 나머지에 해당하는 꼬리 구간의 값은 버리고 다시 뽑는 rejection sampling을 씁니다. 모든 문자가 정확히 같은 확률을 가져요.
- 종류 보장: 선택한 종류마다 최소 한 글자는 반드시 들어가게 먼저 뽑고, 나머지는 전체 문자 풀에서 뽑은 뒤 Fisher-Yates 방식으로 섞습니다.
- 엔트로피: 길이 × log2(문자 풀 크기)로 계산한 근사값입니다. 종류 보장 때문에 실제 값은 이보다 아주 조금 낮을 수 있어요.
- 강도 표시: 40비트 미만 약함, 60비트 미만 보통, 80비트 미만 좋음, 그 이상 매우 강함으로 구분합니다.
- 문자 풀: 소문자 26자, 대문자 26자, 숫자 10자, 기호 25자(
!@#$%^&*()-_=+[]{};:,.?/~)입니다.
예시
| 설정 | 문자 풀 | 엔트로피 | 강도 |
|---|---|---|---|
| 숫자만 8자 | 10 | 약 26.6비트 | 약함 |
| 영문 대소문자와 숫자 12자 | 62 | 약 71.4비트 | 좋음 |
| 전체 종류 16자 | 87 | 약 103.1비트 | 매우 강함 |
| 전체 종류 24자 | 87 | 약 154.6비트 | 매우 강함 |
사이트마다 서로 다른 비밀번호를 쓰는 것이 길이보다 중요한 경우가 많습니다. 생성한 값은 비밀번호 관리자에 저장해 두세요.
자주 묻는 질문
생성된 비밀번호가 서버에 저장되거나 전송되나요?
아니요. 비밀번호는 지금 보고 있는 브라우저 안에서만 만들어지고 어디에도 전송되거나 저장되지 않습니다. 페이지를 닫으면 사라지니 필요하면 비밀번호 관리자에 바로 저장하세요.
Math.random 대신 무엇을 쓰나요?
운영체제가 제공하는 암호학적 난수원에 접근하는 crypto.getRandomValues를 씁니다. 예측 가능한 Math.random은 사용하지 않아요.
엔트로피 비트는 무엇을 뜻하나요?
공격자가 무작위로 찍어서 맞히려 할 때 필요한 경우의 수를 2의 거듭제곱으로 나타낸 값입니다. 비트가 1 늘 때마다 경우의 수가 두 배가 됩니다. 80비트 이상이면 이 도구에서는 매우 강함으로 표시합니다.
헷갈리는 문자 제외는 언제 켜나요?
비밀번호를 손으로 옮겨 적거나 전화로 불러 줘야 할 때 켜세요. I, l, 1, 숫자 0과 알파벳 O처럼 비슷하게 보이는 문자를 뺍니다. 대신 문자 종류가 줄어 엔트로피가 조금 낮아져요.