비밀번호 생성기 — 안전한 무작위 비밀번호

길이와 문자 종류를 골라 무작위 비밀번호를 만들어요. 브라우저의 암호학적 난수 생성기를 쓰고, 만든 값은 이 페이지를 벗어나지 않아요. 엔트로피(bit)와 전수 대입 예상 시간도 함께 보여줘요.

사용 방법

  1. 길이를 정하고(권장 16자 이상) 포함할 문자 종류를 고르세요.
  2. 필요하면 «헷갈리는 글자 제외» 를 켜서 0·O·1·l·I 를 빼세요.
  3. 마음에 드는 걸 복사해 비밀번호 관리자에 저장하세요.

강도는 엔트로피(길이 × log2(문자 풀 크기))로 계산해요. 문자 종류를 늘리는 것보다 길이를 늘리는 쪽이 훨씬 빠르게 강해져요 — 소문자만 20자가 4종류 12자보다 강합니다.

전수 대입 시간은 유출된 해시를 GPU 로 오프라인 공격(초당 100억 회)하는 기준이에요. 로그인 창에 직접 시도하는 공격은 자릿수가 다르게 느립니다.

선택한 문자 종류마다 최소 한 글자를 넣고 전체를 섞어요 — 앞자리에 종류 순서가 드러나면 실제 탐색 공간이 줄어들어요.

자세히 알아보기

엔트로피 — 강도를 재는 단위

엔트로피는 길이 × log₂(문자 풀 크기) 로 계산해요. 단위는 비트예요.

소문자만(26종) 8자 = 8 × log₂(26) ≈ 38비트. 4종류 혼합(94종) 12자 = 12 × log₂(94) ≈ 79비트.

1비트가 늘면 경우의 수가 두 배예요. 40비트와 80비트는 두 배가 아니라 1조 배 차이예요.

60비트 미만 은 오프라인 공격에 위험, 80비트 면 실용적으로 안전, 100비트 이상이면 당분간 걱정 없어요.

길이가 문자 종류보다 훨씬 중요해요

이게 이 도구가 알려주는 가장 실용적인 사실이에요.

소문자만 20자 = 20 × log₂(26) ≈ 94비트.

4종류 혼합 12자 = 12 × log₂(94) ≈ 79비트.

기억하기 쉬운 소문자 20자가 외우기 어려운 특수문자 조합 12자보다 강해요.

«대문자·숫자·특수문자를 반드시 포함» 같은 규칙이 오히려 역효과인 이유예요. 사람들이 `Password1!` 같은 예측 가능한 패턴을 만들거든요.

패스프레이즈라는 대안

무작위 단어 여러 개를 이어 붙이는 방식이에요. `correct-horse-battery-staple` 같은 형태요.

7,776단어 사전(디스웨어)에서 무작위로 고르면 단어당 약 12.9비트예요. 6단어면 약 77비트, 7단어면 90비트.

장점은 외우기 쉽다는 거예요. 사람은 무작위 문자열보다 단어를 훨씬 잘 기억해요.

⚠️ 반드시 무작위로 고르세요. 본인이 «생각나는 대로» 고른 단어는 예측 가능해요. 좋아하는 노래 가사나 흔한 문구는 사전 공격에 걸려요.

마스터 비밀번호(비밀번호 관리자의 열쇠)처럼 외워야 하는 것에 특히 적합해요.

전수 대입 시간의 전제

이 도구가 보여주는 «대입 시간» 은 유출된 해시를 GPU 로 오프라인 공격하는 기준이에요(초당 100억 회 가정).

온라인 공격(로그인 창에 직접 시도)은 자릿수가 다르게 느려요 — 서버가 속도 제한과 계정 잠금을 걸거든요.

⚠️ 그런데 실제 공격은 전수 대입이 아니에요. 유출된 비밀번호 목록과 사전, 변형 규칙을 먼저 시도해요. `P@ssw0rd!` 는 엔트로피 계산상 강해 보여도 몇 초 만에 뚫려요 — 그 패턴이 목록에 있으니까요.

무작위로 만든 것만 이 계산이 의미가 있어요.

비밀번호 관리자를 쓰세요

강한 비밀번호의 진짜 문제는 재사용이에요. 한 사이트가 털리면 같은 비밀번호를 쓴 모든 계정이 열려요(크리덴셜 스터핑).

모든 사이트에 다른 비밀번호를 쓰려면 외울 수 없어요. 그래서 관리자가 필요해요.

마스터 비밀번호 하나만 강하게 만들고(패스프레이즈 권장) 나머지는 관리자가 생성·저장하게 하세요.

2단계 인증(2FA) 을 함께 켜세요. 비밀번호가 유출돼도 한 겹이 남아요. SMS 보다 인증 앱이나 하드웨어 키가 안전해요.

주기적 변경은 이제 권장되지 않아요. NIST 지침이 바뀌었어요 — 강제 변경은 사람들이 예측 가능한 패턴(`Pass1` → `Pass2`)을 만들게 만들거든요. 유출 정황이 있을 때 바꾸는 게 맞아요.

이 생성기의 구현

`crypto.getRandomValues` 를 써요 — 암호학적으로 안전한 난수예요. `Math.random()` 은 예측 가능해서 비밀번호에 쓰면 안 돼요.

모듈로 편향을 제거했어요. 난수를 문자 개수로 나눈 나머지를 쓰면 앞쪽 문자가 더 자주 뽑혀요. 균등하게 나눠지지 않는 상위 구간은 버리고 다시 뽑아요.

고른 문자군마다 최소 한 글자를 배치한 뒤 Fisher–Yates 로 섞어요. 안 섞으면 앞자리에 종류 순서가 남아 실제 탐색 공간이 줄어요.

생성된 값은 서버로 전송되지 않아요. 이 페이지는 광고도 붙이지 않았어요 — 비밀번호 옆에 서드파티 프레임을 두지 않기 위해서예요.

자주 묻는 질문

몇 자가 안전한가요?

4종류를 섞어 16자면 약 105bit 로, 오프라인 공격에도 현실적으로 뚫리지 않아요. 중요한 계정은 20자 이상을 권해요.

기호를 못 쓰는 사이트는요?

기호를 끄고 길이를 늘리세요. 문자 종류가 줄어든 만큼 길이로 메우면 같은 엔트로피를 얻을 수 있어요.

만든 비밀번호가 서버에 저장되나요?

아니요. 생성·표시 전부 브라우저에서 하고 네트워크 요청을 보내지 않아요. 페이지를 벗어나면 값도 사라지니 꼭 관리자에 저장하세요.

관련 도구

  • 개발자 도구 — JSON·Base64·URL·정규식·타임스탬프·JWT·Cron·CIDR·Diff.
  • 이미지 압축 — 업로드 없이 브라우저에서 이미지를 압축·리사이즈해요.
  • 글자수 세기 — 글자·단어·줄·바이트 수를 실시간으로 세요.
  • QR 코드 생성기 — 링크·텍스트를 QR 코드로 만들어 PNG로 저장해요.