안전한 비밀번호 생성기
브라우저 내장 암호학 난수 생성기(Web Crypto API)를 사용하여 해킹 위험 없는 안전한 무작위 비밀번호를 생성합니다.
처리는 전부 사용자 PC 브라우저 안에서 이루어집니다. 생성된 암호는 서버로 전송되거나 저장되지 않습니다. 페이지를 닫기 전에 복사하여 안전한 곳에 보관하세요.
여러 개 일괄 생성하기
Math.random()으로 만들면 안 되는 이유
이 도구는 브라우저의 crypto.getRandomValues()로 값을
뽑습니다. 운영체제의 암호학용 난수원에서 받아오는 함수라, 앞서 나온 출력을 아무리 모아도 다음 값을 계산해
낼 수 없습니다.
반면 Math.random()은 속도만 보고 만든 함수입니다.
크롬과 Node.js가 쓰는 V8 엔진은 xorshift128+를 쓰는데, 내부 상태가 128비트뿐이라
연속된 출력 몇 개만 관찰하면 상태를 역산해 이후 값을 전부 재현할 수 있습니다.
주사위를 굴리는 데는 충분하지만 비밀번호에는 쓸 수 없는 이유입니다. 값을 뽑고 섞는 일은 전부 이 페이지 안에서 끝나며 결과는 어디로도 전송되지 않습니다.
엔트로피를 비트로 세는 법
무작위 비밀번호의 강도는 공격자가 뒤져야 할 경우의 수이고, 이것을 2의 거듭제곱으로 적은 값이 엔트로피입니다.
엔트로피(비트) = 길이 × log₂(문자 종류 수)
대소문자 52종에 숫자 10종, 특수문자 32종을 다 켜면 94종이라 한 글자가 약 6.55비트, 16자면 105비트입니다. 아래 표는 초당 1조(10¹²)회를 시도하는 공격자가 평균적으로 절반을 뒤졌을 때 걸리는 시간입니다.
| 문자 종류 | 1자당 | 12자 | 16자 | 20자 |
|---|---|---|---|---|
| 소문자만 (26종) | 4.70비트 | 56비트 · 13시간 | 75비트 · 690년 | 94비트 · 3억 년 |
| 소문자 + 숫자 (36종) | 5.17비트 | 62비트 · 27일 | 83비트 · 13만 년 | 103비트 · 2100억 년 |
| 대소문자 + 숫자 (62종) | 5.95비트 | 71비트 · 51년 | 95비트 · 7.6억 년 | 119비트 · 1.1경 년 |
| 특수문자까지 (94종) | 6.55비트 | 79비트 · 7500년 | 105비트 · 5900억 년 | 131비트 · 4600경 년 |
8자는 뺐습니다. 94종을 전부 써도 52비트라 같은 조건에서 한 시간을 버티지 못합니다. 이 숫자는 로그인 창을 두드리는 온라인 공격이 아니라 유출된 해시를 오프라인으로 터는 상황을 가정합니다. 서비스가 bcrypt나 Argon2처럼 느린 해시를 썼다면 시도 속도가 초당 수만 회로 떨어져 표의 시간에 억 단위 배수가 붙습니다.
길이가 문자 종류를 이깁니다
위 수식에서 길이는 곱해지고 문자 종류는 로그 안으로 들어갑니다. 종류를 62개에서 94개로 절반 넘게 늘려도 한 글자당 이득은 5.95비트에서 6.55비트, 10% 남짓입니다. 반면 길이는 한 글자 붙일 때마다 그 6.55비트가 통째로 더해집니다. 그래서 이런 역전이 생깁니다.
- 특수문자까지 전부 쓴 16자는 105비트, 영문과 숫자만 쓴 18자는 107비트입니다
- 소문자만 쓴 20자는 94비트로, 특수문자를 섞은 14자(92비트)보다 오히려 강합니다
고를 수 있다면 종류를 늘리기보다 두세 글자를 더 붙이는 편이 언제나 낫습니다. 혼동 문자 제외도 같은 계산으로 판단합니다. i, l, 1, L, o, 0, O를 빼면 풀이 94종에서 87종으로 줄어 16자 기준 105비트가 103비트가 됩니다. 손해가 2비트뿐이라 한 글자만 늘리면 원래보다 높아집니다. 종이에 적어 건네거나 붙여넣기가 막힌 서버 콘솔에 입력해야 한다면 켜 두고, 관리자에 붙여 넣고 다시 볼 일이 없다면 켤 이유가 없습니다.
만든 다음이 더 중요합니다
20자 무작위 문자열을 외울 방법은 없습니다. 이 도구의 결과물은 외우라고 만든 것이 아니라 비밀번호 관리자에 넣으라고 만든 것입니다. 계정 탈취의 대부분은 무차별 대입이 아니라 다른 사이트에서 유출된 비밀번호를 그대로 넣어 보는 자격증명 스터핑이므로, 재사용을 끊는 일이 길이를 늘리는 일보다 먼저입니다.
주기적 변경은 권고에서 빠진 지 오래입니다. 미국 NIST의 SP 800-63B는 2017년 개정에서 정기적 변경 요구를 걷어냈고, 2025년 확정된 개정 4판은 정기적으로 바꾸도록 요구해서는 안 된다고 규정했습니다. 90일마다 바꾸게 하면 끝의 숫자만 하나씩 올라가고 공격자도 그 규칙을 알기 때문입니다. 대신 유출 정황이 있으면 즉시 바꾸도록 요구합니다. 같은 개정판은 단독 인증용 비밀번호의 최소 길이를 15자로 올렸고, 문자 종류를 강제하는 구성 규칙은 부과하지 말라고 못 박았습니다.
사람이 직접 외워야 하는 자리, 이를테면 관리자의 마스터 비밀번호에는 이 도구가 답이 아닙니다. 무작위 단어를 이어 붙인 패스프레이즈가 낫습니다. 널리 쓰이는 7,776개짜리 단어 목록에서 한 단어가 약 12.9비트라, 여섯 단어면 78비트로 94종 12자와 비슷해집니다.
알아두실 점
- 발음하기 쉬운 단어 조합을 켜면 위 게이지 숫자를 믿으면 안 됩니다. 자음과 모음이 번갈아 나오도록 자리가 고정돼 있어 한 글자당 실제 엔트로피가 약 3.36비트입니다. 16자로 뽑아도 54비트 남짓인데, 게이지는 대소문자가 섞여 있다는 것만 보고 91비트로 표시합니다. 전화로 불러 줘야 하는 임시 비밀번호에만 쓰고, 그마저도 30자 안팎으로 뽑으십시오
- 길이를 16자에서 자르거나 특수문자를 거부하는 사이트가 아직 많습니다. 값이 거부되면 문자 종류를 줄이기보다 허용되는 최대 길이까지 채우는 쪽이 유리합니다
- 새로고침하면 방금 만든 값은 복구할 수 없으니 복사한 뒤 관리자에 먼저 저장하십시오. 클립보드는 다른 프로그램도 읽을 수 있어, 붙여 넣은 다음 다른 내용을 한 번 복사해 덮어써 두면 좋습니다
다른 도구
전체 보기 →- QR코드 생성기 웹사이트 URL, Wi-Fi 자동 연결, vCard 명함, 일반 텍스트 QR코드를 맞춤 색상 및 고해상도로 제작합니다.
- 바코드 생성기 Code 128, EAN-13, UPC, Code 39 표준 규격 바코드를 생성하고 SVG/PNG로 다운로드합니다.
- 내 IP 주소 확인 & WebRTC 보안 점검 현재 공인 IP 주소(IPv4/IPv6), 통신사(ISP), 접속 지역 및 WebRTC 로컬 IP 누출 여부를 실시간 확인합니다.
- User-Agent 확인 & 브라우저 분석기 현재 브라우저의 User-Agent 원문 문자열과 OS, 엔진, 화면 배율, 디바이스 정보를 정밀 분석합니다.
- 내 컴퓨터 사양 확인 (CPU, RAM, GPU, Hz) 프로그램 설치 없이 CPU 코어 수, RAM 용량 추정, 그래픽카드 모델명, 모니터 주사율(Hz), 배터리를 진단합니다.
- 모니터 불량화소 테스트 & 결함 진단 전체화면 RGBW 색상 순환으로 불량화소(광점, 암점), 빛샘, 잔상, 명암비, 그라데이션 밴딩을 점검합니다.