ToolActToolAct

비밀번호 생성기

사용자 정의 길이와 문자 유형으로 강력한 비밀번호 생성

비밀번호 설정
416324864
대문자A-Z
소문자a-z
숫자0-9
기호!@#$%^&*
사용자 정의 문자사용자 정의 문자 집합 사용
고급 옵션

0O, 1lI와 같은 혼동 문자 제외

모호한 문자 제외i, l, 1, L, o, 0, O
문자로 시작복사 붙여넣기 용이
생성 버튼을 클릭하여 비밀번호 생성
비밀번호 강도약함
일괄 생성
'일괄 생성' 버튼을 클릭하여 여러 비밀번호 생성
기록
아직 기록 없음

비밀번호 생성기란?

비밀번호 생성기는 무작위 강력한 비밀번호를 자동으로 생성하는 도구입니다. 암호학적으로 안전한 난수 생성기를 사용하여 사용자 정의 길이와 문자 유형(대문자, 소문자, 숫자, 특수 기호)에 따라 높은 보안의 비밀번호를 생성합니다. 강력한 비밀번호는 계정 보안의 첫 번째 방어선이며 무차별 대입 공격과 사전 공격을 효과적으로 방지합니다. 안전한 비밀번호는 길이뿐 아니라 서비스별 고유성도 중요합니다. 생성한 값은 신뢰할 수 있는 비밀번호 관리자에 저장하고, 재사용이나 평문 공유를 피해야 합니다.

사용 방법

생성 단계

  1. 비밀번호 길이 선택 (최소 12자 권장)
  2. 문자 유형 선택: 대문자, 소문자, 숫자, 기호
  3. 선택적으로 0O, 1lI 같은 혼동하기 쉬운 문자 제외
  4. 생성 버튼을 클릭하고 만족할 때까지 반복하세요

비밀번호 강도

  • 약함: 8자 미만 또는 단일 문자 유형
  • 보통: 문자와 숫자가 혼합된 8~11자
  • 양호: 여러 문자 유형이 포함된 12~15자
  • 강함: 모든 문자 유형이 포함된 16자 이상

보안 팁

  • 모든 비밀번호는 로컬에서 생성되며 서버에 업로드되지 않습니다
  • 웹사이트마다 다른 비밀번호를 사용하세요
  • 비밀번호 관리자를 사용하여 비밀번호를 안전하게 보관하세요
  • 중요 계정의 비밀번호를 정기적으로 변경하세요
  • 비밀번호에 개인정보를 사용하지 마세요

활용 사례

정확한 문자 규칙으로 비밀번호 생성4~64자 길이를 설정하고, 대문자·소문자·숫자·기호·사용자 정의 문자 풀·제외 문자·모호한 문자 제거·문자 시작 여부를 선택할 수 있습니다. 비밀번호는 로컬에서 생성되고 사용됩니다. crypto.getRandomValues에서 엔트로피를 가져와 결과 문자열이 대상 애플리케이션에 복사될 때까지 메모리에 보관되므로 어떤 서비스에도 업로드되지 않습니다.
계정 설정이나 테스트용 일괄 생성현재 규칙으로 5·10·20·50개의 비밀번호를 생성하고 일괄 목록에서 개별 결과를 복사할 수 있습니다. 간단, 보통, 강력, PIN 스타일 비밀번호 프리셋으로 실제 인증 정보와 테스트 데이터 간 전환을 빠르게 할 수 있습니다. 일괄 목록의 모든 값은 로컬에서 생성되고 사용되므로, 같은 세션에서 폐기 가능한 테스트 데이터와 실제 계정 비밀번호를 네트워크를 거치지 않고 생산할 수 있습니다.
짧은 로컬 생성 기록 유지최근에 생성된 비밀번호가 시간과 함께 localStorage에 저장되며 페이지에서 삭제할 수 있습니다. 설정 세션에 유용하지만, 공유 머신에서는 기록 동작 특성상 목록을 지우는 것이 중요합니다. 각 항목이 로컬에서 생성되고 사용되므로 기록 파일이 유일한 복사본이며, 지우기 버튼으로 제거하면 기기에서 완전히 삭제됩니다.
기억하기 쉬운 패스프레이즈 스타일 비밀번호 생성기호를 비활성화하고 길이를 20자 정도로 설정한 후 소문자와 숫자만 조합하면 패스프레이즈에 가까운 결과가 생성됩니다. 그래도 비밀번호 관리자에 저장하세요. 긴 문자열은 암기용이 아닙니다. 난수 소스는 브라우저 탭에 있으므로 오프라인이거나 방화벽이 엄격한 워크스테이션에서도 같은 패스프레이즈 생성기를 사용할 수 있습니다.
대상 비밀번호 정책에 맞는 테스트 데이터 생성프로덕션 검증기가 적용하는 것과 동일한 길이, 문자 클래스, 제외 규칙을 설정한 후 QA, 회원가입 양식, 유출 시뮬레이션용으로 20~50개의 일괄 생성을 수행하세요. 생성기는 실제 시스템에 대해 검증하지 않으므로 정책 자체를 다시 확인하세요. 각 테스트 데이터가 로컬에서 생성되고 사용되므로 같은 페이지에서 네트워크 호출을 통해 정책이나 생성된 값을 유출하지 않고 수천 개의 규격 준수 테스트 비밀번호를 생성할 수 있습니다.

기술 원리

비밀번호 생성기는 crypto.getRandomValues(new Uint32Array(n))에서 난수를 추출합니다. 이 함수는 운영체제의 엔트로피 풀(Linux의 getrandom, Windows의 BCryptGenRandom, macOS/iOS의 SecRandomCopyBytes)에서 암호학적으로 안전한 의사 난수 값으로 타입 배열을 채웁니다. 이는 W3C Web Cryptography API에서 정의한 CSPRNG(암호학적 안전 의사 난수 생성기)로, V8에서 xorshift128+ 알고리즘을 사용하며 출력의 작은 샘플로부터 예측 가능하다고 명시적으로 문서화된 Math.random()과는 다릅니다. 문자 풀은 사용자가 선택한 문자 클래스로 구성됩니다: 대문자(26자 A-Z), 소문자(26자 a-z), 숫자(10자 0-9), 기호(!@#$%^&*()_+-=[]{}|;:,.<>?의 32자)로 최대 94자의 풀이 생성됩니다. 사용자 정의 문자 집합이나 제외 목록(모호한 문자 필터를 포함하여 i, I, l, L, 1, o, O, 0을 제거)으로 풀을 추가로 정교화합니다. 각 비밀번호 문자는 array[i] % pool.length로 선택되며, CSPRNG 출력이 32비트에서 균일 분포이고 모듈로 바이어스(|pool|이 2^32를 균등하게 나누지 않음)가 256자 미만의 풀에 대해 무시할 수 있기 때문에 균일 분포됩니다—바이어스는 0.00000006% 미만으로 실무적 우려 수준을 훨씬 밑돕니다. 비밀번호 강도는 탐색 공간의 크기로 측정됩니다: 크기 C의 풀과 길이 L의 비밀번호의 경우 가능한 비밀번호 수는 C^L입니다. 비트 단위의 엔트로피는 log2(C^L) = L × log2(C)입니다. 네 가지 문자 클래스가 모두 활성화된(C=94) 16자 비밀번호의 경우, 이는 94^16 ≈ 4.4 × 10^31개의 조합, 즉 약 105비트의 엔트로피를 생성합니다. 초당 10^12회의 추정 공격 속도(대규모 GPU 클러스터가 NTLM과 같은 빠른 해시에 대해 발휘하는 처리량)에서 무차별 탐색은 약 4.4 × 10^19초가 소요되며, 이는 우주의 나이보다 훨씬 깁니다. 이 모델은 공격자가 모든 조합을 테스트해야 한다고 가정하고(사전이나 패턴 기반의 단축 경로 없이) 비밀번호가 평문이 아닌 bcrypt나 Argon2id와 같은 느리고 솔팅된 알고리즘으로 해시되었다고 가정합니다. NIST SP 800-63B는 사용자가 선택한 비밀번호의 최소 8자, 기계 생성 자격 증명의 최소 6자의 무작위 생성 문자를 권장하며 문자 집합을 문서화해야 합니다. 생성기의 4~64자 범위는 PIN 코드부터 고엔트로피 기계 자격 증명까지 모든 것을 다룹니다. 문자로 시작 옵션은 첫 번째 문자를 [A-Za-z]에서 추출하여 비밀번호가 문자로 시작해야 하는 레거시 시스템의 요구 사항을 충족합니다.

  • CSPRNG 소스: crypto.getRandomValues()는 OS 커널의 CSPRNG(getrandom/BCryptGenRandom/SecRandomCopyBytes)에서 엔트로피를 가져옵니다. Math.random()(xorshift128+)과 달리 예측 불가능하고, 페이지에서 시드할 수 없으며, 자격 증명 생성에 적합합니다.
  • 문자 공간 수학: 네 가지 클래스가 모두 활성화되면 풀 크기는 94이고, 문자당 엔트로피는 log2(94) ≈ 6.55비트입니다. 16자 비밀번호는 약 105비트의 엔트로피를 가지며, 길이를 32자로 두 배로 늘리면 약 210비트로 증가합니다.
  • 모듈로 선택: array[i] % pool.length는 32비트 CSPRNG 출력을 문자 인덱스로 매핑합니다. 256자 미만의 풀에 대해 바이어스는 6 × 10^-8% 미만으로 암호학적으로 무의미합니다.
  • 무차별 대입 저항 모델: 초당 10^12회 추정(GPU 클러스터 규모)에서 94기호 16자 비밀번호를 탐색하려면 약 10^19초가 소요됩니다. 단, 이는 빠른 해시를 가정한 것이며, cost factor 12의 bcrypt는 공격자를 초당 약 10^4회로 제한하여 8자 비밀번호도 탄력적으로 만듭니다.
  • 모호한 문자 제외: 필터는 {i, I, l, L, 1, o, O, 0}(8자)을 제거하여 풀을 94에서 86으로 줄이며, 문자당 약 0.6비트의 엔트로피를 소비합니다. 이는 수동 전사 시나리오에서의 사용성 향상을 위해 허용 가능한 수준입니다.
  • NIST SP 800-63B 부합: 표준은 기계 생성 비밀의 최소 6자 무작위 선택 문자를 요구하고 문자 공간 문서화를 권장합니다. 생성기의 프리셋(간단 8자, 강력 20자)은 서로 다른 보증 수준에 매핑됩니다.
  • localStorage 기록: 최근 생성된 비밀번호 10개가 window.localStorage에 저장됩니다. 이는 오리진과 브라우저 프로필에 스코프되며, 기록을 삭제하면 저장소에서 제거되지만 디스크 수준 포렌식 도구로 복구할 수 있습니다. localStorage가 브라우저 프로필 디렉토리에 평문 SQLite 데이터베이스로 저장되기 때문입니다.

예시

강력한 비밀번호 (혼합 문자 종류)

Kx9#mP2$vL7@nQ4!  -  16자, 네 가지 종류 모두 포함 (대문자/소문자/숫자/기호)
강도: 매우 높음. 초당 100억 회를 시도해도 무차별 대입에 수 세기가 걸린다

PIN 코드 (4자리)

8527  -  4자리 숫자
강도: 10,000개 조합; 속도 제한과 잠금이 적용된 기기 잠금 해제용으로만 적합하며 온라인 계정에는 부적합합니다

비밀번호 강도 비교

8자, 소문자만           : 26^8      ≈ 2.08e11 조합
8자, 혼합 문자 종류      : 94^8      ≈ 6.10e15 조합
16자, 혼합 문자 종류     : 94^16     ≈ 3.7e31 조합
참고: 글자 하나가 추가될 때마다 키스페이스가 8배가 아니라 94배 증가합니다 - 길이가 문자 종류 수보다 더 중요합니다

자주 묻는 질문

비밀번호가 브라우저에서 생성되나요?

네. 이 페이지는 Web Crypto API의 crypto.getRandomValues를 사용하여 암호학적으로 안전한 무작위 바이트를 생성합니다. 비밀번호는 기기를 떠나지 않으며, 기록되지 않고, 결정론적 시드에서 파생되지도 않습니다. 더 확실히 하려면 페이지를 새로고침하여 새로운 엔트로피 시퀀스를 시작하세요.

어떤 길이와 문자 조합을 골라야 하나요?

온라인 계정에는 대문자, 소문자, 숫자, 기호를 포함한 16자 이상이 현대의 최소 기준입니다. 마스터 비밀번호(비밀번호 관리자, 암호화 키)에는 20자 이상 또는 6~7개 단어로 된 패스프레이즈가 더 안전합니다. 일정 수준 이상부터는 문자 집합의 복잡도보다 길이가 더 중요합니다.

방금 생성한 비밀번호를 일부 사이트가 거부하는 이유는 무엇인가요?

어떤 사이트는 여전히 의외의 제한을 둡니다. 최대 길이(보통 12~20자), 기호 금지, 특정 기호만 허용, 공백 금지 같은 규칙이 있죠. 페이지에는 문자 토글이 있어 규칙에 맞출 수 있습니다. 그런 정책은 오히려 보안을 약화시키니 해당 사이트에 신고하시는 것이 좋습니다.

일부러 제외되는 문자가 있나요?

‘비슷한 문자 제외’ 옵션을 켜면 0/O, 1/l/I처럼 종이나 메모지에서 잘못 읽기 쉬운 문자 쌍을 제외합니다. 디지털로만 사용할 비밀번호는 이 옵션을 끄고 최대한의 엔트로피를 확보하세요.

긴 무작위 비밀번호가 패스프레이즈보다 안전한가요?

엔트로피가 같다면 둘 다 무차별 대입으로 깨기 어려운 정도가 같습니다. 16자 혼합 비밀번호는 2000개 단어 사전에서 무작위로 뽑은 6단어 패스프레이즈와 거의 같은 수준입니다. 패스프레이즈는 입력하고 외우기가 쉽고, 무작위 문자열은 관리자에서 붙여넣기가 쉽습니다. 용도에 맞춰 선택하세요.

비밀번호 관리자의 마스터 키로 신뢰해도 되나요?

네 — 무작위성의 출처는 브라우저가 HTTPS 키에 사용하는 것과 같은 Web Crypto API입니다. 다만 마스터 키나 복구 코드처럼 매우 중요한 비밀에는 신뢰 사슬에서 브라우저 자체를 제거하기 위해 주사위(diceware)를 굴리거나 오프라인 도구를 선호하는 사람들이 많습니다.

여기서 생성한 비밀번호를 그대로 저장해도 되나요?

아니요. 페이지는 비밀번호를 저장하지 않습니다. 즉시 비밀번호 관리자(1Password, Bitwarden, KeePass, 브라우저 내장 관리자)에 복사해 두세요. 페이지를 닫거나 새로고침하면 영구적으로 사라집니다.