강력한 비밀번호의 조건
강력한 비밀번호란 공격자가 현실적인 시간 안에 맞힐 수 없는 비밀번호입니다. 이를 결정하는 것은 두 가지, 비밀번호의 길이와 각 자리에 올 수 있는 문자의 가짓수입니다. 무작위성도 중요합니다. 반려동물 이름 뒤에 연도를 붙인 것처럼 사람이 직접 지은 비밀번호는 길이에 비해 훨씬 쉽게 뚫립니다. 사람은 예측 가능한 방식으로 고르기 때문입니다.
이 비밀번호 생성기는 허용한 문자 종류에서 모든 글자를 무작위로 고릅니다. 그래서 강도를 정확히 계산할 수 있고, 공격자가 노릴 만한 패턴도 없습니다.
비밀번호 생성기 사용 방법
- 페이지가 열리자마자 생성된 비밀번호에 새 비밀번호가 나타납니다.
- 길이 슬라이더를 끌거나 빼기, 더하기 버튼으로 4자부터 128자 사이에서 고릅니다. 기본값은 20자입니다.
- 사용할 문자에서 대문자, 소문자, 숫자, 특수문자를 켜거나 끕니다.
- 옵션을 고릅니다.
- 헷갈리는 문자 제외 (I l 1 O 0): 혼동하기 쉬운 문자를 뺍니다.
- 선택한 종류 모두 포함: 선택한 문자 종류마다 최소 한 글자씩 들어가게 합니다.
- 다른 비밀번호가 필요하면 새로 만들기를, 복사하려면 복사를 누릅니다.
- 여러 개가 필요하다면 비밀번호 개수에서 숫자를 고릅니다. 전체 비밀번호에 목록이 나타나고, 모두 복사를 누르면 목록 전체가 복사됩니다.
비밀번호 아래에는 막대와 라벨로 강도가 표시되며, 비트 단위의 추정치도 함께 나옵니다.
강도 등급
| 엔트로피 비트 | 등급 |
|---|---|
| 28 미만 | 매우 약함 |
| 28 ~ 44 | 약함 |
| 45 ~ 63 | 보통 |
| 64 ~ 99 | 강함 |
| 100 이상 | 매우 강함 |
예시
아래 비밀번호와 수치는 생성기를 실제로 실행해 얻은 것입니다. 이미 공개된 값이므로 그대로 쓰지 마세요.
| 길이 | 문자 종류 | 비트 | 등급 | 예시 |
|---|---|---|---|---|
| 6 | 숫자 | 19.93 | 매우 약함 | 546382 |
| 8 | 소문자 | 37.60 | 약함 | orvapcvl |
| 8 | 네 종류 모두 | 51.93 | 보통 | QpF4b@<V |
| 12 | 네 종류 모두 | 77.90 | 강함 | .y9}g-.ta$rP |
| 16 | 영문과 숫자 | 95.27 | 강함 | ydrGkOZ9PrXPB6TL |
| 16 | 네 종류 모두 | 103.87 | 매우 강함 | Aj~oJ-WDTW}8rJu2 |
| 20 | 네 종류 모두 | 129.84 | 매우 강함 | CwEfwEyMg)>w~b-tMx.9 |
| 20 | 네 종류 모두, 헷갈리는 문자 제외 | 127.50 | 매우 강함 | B;8#]&Dr/*3X8y]fP#-P |
문자 종류보다 길이가 더 큰 역할을 한다는 점을 보세요. 네 종류를 모두 쓴 상태에서 8자를 16자로 늘리면 비트 수가 대략 두 배가 됩니다.
작동 원리
네 가지 문자 종류에는 대문자 26개, 소문자 26개, 숫자 10개, 특수문자 28개가 있어 모두 90개입니다. 헷갈리는 문자 제외는 그중 I, l, 1, 세로 막대(|), O, 0, o의 7개를 빼서 83개를 남깁니다.
각 글자는 브라우저의 암호학적 난수원인 crypto.getRandomValues로 뽑습니다. 난수를 문자로 바꿀 때 단순한 나머지 계산 대신 거부 샘플링(rejection sampling)을 쓰기 때문에, 후보 문자 모두가 정확히 같은 확률로 나옵니다.
선택한 종류 모두 포함이 켜져 있으면, 선택한 종류 중 하나라도 빠진 비밀번호는 버리고 새로 뽑습니다. 그래서 결과가 고르게 무작위로 유지됩니다.
강도 추정치는 길이에 후보 문자 수의 log2를 곱한 값입니다. 90개 문자에서 20자를 뽑으면 20 x 6.49로 약 129.84비트입니다. 이는 상한값입니다. 모든 종류를 반드시 넣도록 하면 가능한 비밀번호 수가 약간 줄어들지만, 일반적인 길이에서는 그 차이가 작습니다.
개인정보와 보안
- 기기 밖으로 아무것도 나가지 않습니다. 서버를 거치는 단계가 없습니다. 비밀번호는 복사하기 전까지 이 페이지에만 존재합니다.
- 아무것도 저장되지 않습니다. 페이지를 새로 고치면 비밀번호가 사라집니다. 이 도구에는 의도적으로 기록 기능을 두지 않았습니다.
- 공용 컴퓨터라면 붙여넣은 뒤 클립보드를 비우세요.
- 비밀번호 관리자를 쓰세요. 무작위 비밀번호는 안전하게 보관할 수 있어야 쓸모가 있습니다. 관리자가 자동으로 입력해 주므로 길이가 길어도 불편하지 않습니다.
- 2단계 인증을 켜세요. 가짜 로그인 페이지에 비밀번호를 빼앗기면 아무리 강력한 비밀번호도 소용이 없습니다.
- 사이트 규칙도 확인하세요. 일부 사이트는 쓸 수 있는 특수문자나 최대 길이를 제한합니다. 가입이 거부되면 특수문자를 끄고 길이를 늘려 강도를 맞추세요.
표시되는 비트 수는 이 도구처럼 무작위로 만든 비밀번호를 전제로 합니다. 직접 지어서 다른 검사기에 입력한 비밀번호에는 해당하지 않습니다.
다른 방법으로 비밀번호 만들기
Python이 설치된 컴퓨터에서는 아래 명령을 실행할 때마다 영문과 숫자로 된 20자 비밀번호가 새로 출력됩니다.
python -c "import secrets, string; a = string.ascii_letters + string.digits; print(''.join(secrets.choice(a) for _ in range(20)))"
OpenSSL이 설치되어 있다면 openssl rand -base64 18로 무작위 문자 24자를 출력할 수 있습니다. 대부분의 비밀번호 관리자에도 생성기가 들어 있습니다.
비밀번호를 만들 때 Excel의 RAND 함수나 JavaScript의 Math.random은 피하세요. 예측할 수 없도록 설계된 함수가 아닙니다.
관련 도구
비밀 값이 아니라 고유 ID가 필요하다면 UUID 생성기를 쓰세요. 범위 안의 무작위 숫자는 랜덤 숫자 생성기로, 파일 체크섬은 MD5 해시 생성기로 만들 수 있습니다.