권장 기본 — 20글자, 전체 문자 집합
length: 20 sets: lower + upper + digits + symbols pool: 87 chars
g7#Lq2!vWp9Bz@Yx5dKr ≈ 128.7 bits (very strong)
신규 계정에 두루 쓸 수 있는 안전한 기본값입니다. 128비트는 오프라인 무차별 대입으로도 수십 년 단위로 결코 닿지 않는 영역입니다.
모든 처리는 브라우저 내부에서 실행됩니다 — 파일·입력은 서버로 전송되지 않습니다.
슬라이더로 길이를 바꾸거나 직접 입력하고, 사용할 문자 집합(소문자·대문자·숫자·기호)을 토글하면 비밀번호가 자동으로 재생성됩니다. 엔트로피 바는 결과의 무차별 대입 저항성을 비트로 대략 보여줍니다. 40비트 미만은 약함, 60 이상이 일반 계정에는 충분, 90 이상이면 금고의 마스터 비밀번호 수준입니다.
"모호 문자 제외" 토글은 폰트에 따라 구분이 어려운 글자(I·l·1·O·0·o·`·'·"·|)를 제외합니다. 화면을 보며 입력하거나 전화로 구두 전달하는 상황에 유용합니다. 난수는 crypto.getRandomValues에서 가져오며, 모듈로 편향을 막기 위한 리젝션 샘플링으로 각 글자의 확률이 균등해지도록 맞춥니다. 어떤 데이터도 브라우저 밖으로 나가지 않습니다.
length: 20 sets: lower + upper + digits + symbols pool: 87 chars
g7#Lq2!vWp9Bz@Yx5dKr ≈ 128.7 bits (very strong)
신규 계정에 두루 쓸 수 있는 안전한 기본값입니다. 128비트는 오프라인 무차별 대입으로도 수십 년 단위로 결코 닿지 않는 영역입니다.
length: 16 sets: lower + upper + digits (no symbols) no ambiguous: yes pool: 52 chars
k7QxR2nbCa3VsT5p ≈ 91.2 bits (very strong)
전화로 구두 전달하거나 스마트폰으로 입력하거나, 기호 처리가 부실한 시스템(일부 레거시 SSO나 특정 DB)에서 사용할 때 쓰세요.
length: 6 sets: digits only pool: 10 chars
482703 ≈ 19.9 bits (weak)
시도 횟수가 제한된 상황(3회 실패하면 잠기는 은행 카드, 스마트폰 잠금 화면)에서는 6자리 PIN으로 충분합니다. 시도 횟수에 제한이 없는 공격자에게는 전혀 못 버팁니다.
12글자를 넘으면 길이가 복잡도보다 더 큰 효과를 냅니다. 시도 제한이 있는 온라인 계정에는 혼합 문자 집합으로 16글자면 충분합니다. 비밀번호 관리자의 마스터 비밀번호나 디스크 전체 암호화는 20글자 이상을 목표로 하세요. 암호화된 덩어리가 유출되면 오프라인 무차별 대입에 노출되기 때문입니다.
브라우저가 제공하는 암호학적으로 안전한 RNG인 crypto.getRandomValues를 사용하며 OS의 엔트로피 소스로 시드를 받습니다. 브라우저의 TLS키 생성과 동일한 생성기이며, 현실적인 위협 모델에서 RNG가 가장 약한 고리가 되는 일은 없습니다.
아니요. 생성은 브라우저 안에서 일어나고, 결과는 복사하거나 새로고침할 때까지 페이지 위에만 존재합니다. 어떠한 로그·동기화·저장도 하지 않습니다. 다만 클립보드에 들어간 시점에서 유출 경로가 늘어나므로 복사 직후 대상 필드에 붙여 넣고 클립보드 기록에 남기지 않도록 하세요.
기억해서 입력하는 비밀번호(금고 마스터, 디스크 전체 암호화)에는 패스프레이즈가 우수합니다. 무작위 문자열보다 사람이 기억하기 쉽기 때문입니다. 그 외에 비밀번호 관리자에 저장하는 비밀번호는 같은 엔트로피를 더 적은 글자 수로 얻을 수 있는 긴 무작위 문자열로 충분합니다.
같은 설정으로 같은 생성기가 만들 수 있는 비밀번호 총 개수의 log2를 추정합니다. 60비트라면 후보는 약 10^18개이고, 1비트가 늘 때마다 2배가 됩니다. 실제 공격 난이도는 비밀번호가 어떻게 저장돼 있는지에 달려 있습니다. 빠른 해시(MD5·SHA-1)는 공격 측이 초당 수십억 번 시도가 가능하지만, 느린 해시(bcrypt·Argon2)는 GPU 1장으로 초당 수십 번 수준입니다.
비밀번호 강도는 독립된 두 요소로 결정됩니다. 문자열의 길이, 그리고 각 자리에 등장 가능한 글자 수. 로그 공간에서 곱하면 엔트로피(비트)가 되며, 이는 공격자가 시도해야 할 후보 수의 log2입니다. 70글자 풀에서 12글자를 뽑은 비밀번호는 약 73비트, 24글자로 두 배가 되면 비트도 146으로 두 배가 됩니다. 길이는 가장 값싼 조정 손잡이이고, 복잡도는 가장 과대평가된 요소입니다.
NIST가 2017년에 발표하고 이후 재확인해 온 SP 800-63B의 규칙은 옛 권고를 명확히 폐기했습니다. 정기적 강제 변경, 문자 종류 혼합 의무화("숫자 1개와 기호 1개 포함"), 비밀 질문 폴백은 폐기되었습니다. 그 자리에 들어선 것은 충분히 긴 최소 길이, 인쇄 가능한 임의 문자 허용, 유출 코퍼스 대조, 로그인 시도 제한, 기억 방법은 사용자에게 맡기기입니다. 새로 생성한 무작위 비밀번호의 엔트로피는, 그 비밀번호를 저장하는 비밀번호 관리자가 실질적 통제 수단임을 보여 줍니다. 문자열을 추측당하는 것보다 관리자 접근을 잃는 쪽이 현실적인 실패 양상이며, 설계는 이쪽을 막아야 합니다.
Google Authenticator·1Password 호환 TOTP(RFC 6238)를 생성합니다. base32 시크릿 또는 `otpauth://` URL을 입력하면 실시간으로 갱신되며, 모든 처리는 브라우저 안에서 이루어집니다.
키와 메시지로 HMAC 서명(SHA-1 / SHA-256 / SHA-384 / SHA-512)을 계산합니다. hex·base64 출력 전환을 지원하며 Web Crypto API로 브라우저 안에서 처리합니다.
RSA 공개키/개인키 쌍을 PEM 포맷(PKCS#1 / PKCS#8)으로 생성합니다. JWT 서명키·SSH 테스트·일회성 암호화에 유용하며, 프로덕션 키는 OpenSSL을 권장합니다.
랜덤 UUID(v4)를 브라우저 안에서 생성합니다. 최대 100개를 한 번에 생성할 수 있습니다.
비밀번호는 crypto.getRandomValues로 브라우저 내에서 생성되며, 외부로 전송되지 않습니다.