비밀번호 생성기

브라우저에서 강력한 무작위 비밀번호를 만듭니다. 길이와 문자 유형을 고르고 서로 헷갈리기 쉬운 문자를 뺄 수 있으며, 한 번에 최대 100개까지 생성하고 강도 등급과 엔트로피 비트 수를 함께 확인할 수 있습니다.

길이

브라우저에서만 실행되며 어떤 데이터도 업로드되지 않습니다.

사용 방법

  1. 슬라이더나 숫자 입력란으로 ‘길이’를 설정합니다. 비밀번호 관리자에 보관할 비밀번호라면 16자 이상이 무난한 기본값입니다.
  2. 문자 유형으로 ‘대문자(A-Z)’, ‘소문자(a-z)’, ‘숫자(0-9)’, ‘특수 문자(!@#$...)’를 선택합니다. ‘선택한 유형 모두 포함’은 기본으로 켜져 있으며, 모든 비밀번호에 각 유형을 하나 이상 넣습니다.
  3. 필요하면 ‘비슷한 문자 제외(i l 1 L o 0 O)’로 l, 1, O처럼 헷갈리기 쉬운 문자를, ‘모호한 기호 제외’로 모호한 기호를 뺍니다. 사이트에서 받아들이지 않는 특정 문자는 ‘제외할 문자’에 입력합니다.
  4. ‘생성’을 클릭하고 ‘강도’ 표시와 엔트로피를 확인한 다음, 비밀번호를 하나씩 복사하거나 ‘모두 복사’로 전부 복사합니다.

강력한 비밀번호의 조건

무작위로 생성한 비밀번호의 강도는 엔트로피로 측정하며, 그 값은 length × log2(pool size)비트, 즉 길이에 문자 풀 크기의 밑이 2인 로그를 곱한 값입니다. 문자 풀은 비밀번호를 뽑아내는 문자 집합을 말합니다. 비트가 하나 늘 때마다 필요한 추측 횟수는 두 배가 됩니다. 엔트로피는 길이에 비례해 늘어나지만 풀을 키우면 문자당 조금씩만 늘어나므로, 길이가 더 중요합니다. 소문자로만 된 16자 비밀번호는 네 가지 유형을 모두 섞은 8자 비밀번호보다 가능한 조합이 약 1,100만 배 많습니다.

길이문자풀엔트로피
4숫자(PIN)1013.3비트
8소문자2637.6비트
8네 가지 유형 모두8951.8비트
12영문자와 숫자6271.5비트
16소문자2675.2비트
16네 가지 유형 모두89103.6비트
20네 가지 유형 모두89129.5비트

여기서 네 가지 유형을 모두 쓰면 풀은 26 + 26 + 10 + 특수 문자 27개로 89자입니다. 도구는 엔트로피를 정수 비트로 내림해 표시합니다. 이 수치는 무작위 비밀번호에만 해당하며, 사람이 직접 지어낸 비밀번호는 길이에 비해 엔트로피가 훨씬 낮습니다.

NIST SP 800-63B의 권고 사항

미국 연방 정부의 디지털 인증 지침인 NIST SP 800-63B는 비밀번호를 확인하는 서비스를 대상으로 합니다. 최신 개정판인 SP 800-63B-4에 따르면 이런 서비스는 다음과 같이 해야 합니다.

  • 비밀번호가 유일한 인증 요소라면 15자 이상, 다른 인증 요소와 함께 쓰인다면 8자 이상을 반드시 요구하고, 최소 64자까지는 허용하는 것이 바람직합니다.
  • "대문자, 숫자, 특수 문자를 각각 하나 이상" 같은 구성 규칙이나 주기적인 변경을 강요해서는 안 되지만, 유출되었다는 증거가 있으면 반드시 변경하게 해야 합니다.
  • 새 비밀번호를 흔히 쓰이거나 예상 가능하거나 유출된 비밀번호의 차단 목록과 반드시 대조해야 합니다.
  • 출력 가능한 모든 ASCII 문자와 공백을 허용하고, 비밀번호 관리자를 쓸 수 있도록 붙여넣기를 허용하는 것이 바람직합니다.

사용자에게 주는 교훈도 같습니다. 중요한 것은 길이와 무작위성이며, P@ssw0rd1처럼 예측 가능한 치환은 도움이 되지 않습니다.

비밀번호 관리자와 패스프레이즈

재사용한 비밀번호는 짧은 비밀번호보다 더 큰 위험이 되는 경우가 많습니다. 유출 사고가 일어나면 공격자는 유출된 이메일과 비밀번호 조합을 다른 사이트에 대입해 봅니다(크리덴셜 스터핑). 계정마다 다른 무작위 비밀번호를 쓰고 비밀번호 관리자가 기억하게 하십시오. 그러면 20자 비밀번호도 8자 비밀번호만큼이나 손쉽게 쓸 수 있습니다.

관리자의 마스터 비밀번호처럼 외워서 입력하는 몇 안 되는 비밀번호에는 패스프레이즈가 더 편합니다. 예를 들어 주사위와 EFF 긴 단어 목록(long word list)으로 단어를 무작위로 고르는 방식입니다. 7,776개 항목에서 고른 단어 하나는 약 12.9비트를 더하므로, 여섯 단어면 약 77.5비트가 됩니다. 이 도구는 패스프레이즈가 아닌 문자 비밀번호를 만듭니다. API 키를 비롯해 기계가 사용하는 비밀 값에는 무작위 Base64 생성기를 사용하십시오.

이 생성기의 작동 방식

비밀번호는 브라우저의 암호학적으로 안전한 난수 생성기인 crypto.getRandomValues()로 사용자의 기기에서 생성되며, 전송되거나 저장되지 않습니다. 단순한 나머지 연산을 쓰면 일부 문자가 조금 더 자주 나오게 되므로, 이 도구는 거부 샘플링을 사용합니다. 32비트 무작위 값이 풀 크기의 가장 큰 배수 이상이면 다시 뽑으므로 모든 문자가 정확히 같은 확률로 선택됩니다.

비슷한 문자 제외는 i l 1 L o 0 O를 제거합니다. Wi-Fi 키처럼 비밀번호를 소리 내어 불러 주거나 종이를 보고 입력할 때 유용합니다. 모호한 기호 제외는 일부 입력 양식, 셸, 설정 파일에서 제대로 처리되지 않는 괄호, 슬래시, 물결표와 , ; : .를 제거하고 ! @ # $ % ^ & * - _ = + ?만 남깁니다. 두 옵션 모두 풀을 줄이므로 한두 글자를 더해 보완하십시오.

자주 묻는 질문

비밀번호는 얼마나 길어야 합니까?

비밀번호만으로 보호되는 계정이라면 15자 이상이어야 합니다. 이는 NIST SP 800-63B-4가 단일 요소 비밀번호에 정한 최소 길이입니다. 비밀번호 관리자를 쓴다면 16~24자의 무작위 문자를 사용해도 부담이 없습니다. 자주 입력하는 비밀번호라면 무작위 단어 대여섯 개로 된 패스프레이즈를 고려해 보십시오.

웹사이트에서 생성한 비밀번호를 사용해도 안전합니까?
비밀번호가 사용자의 기기에서 생성되고 기기 밖으로 나가지 않는다면 안전할 수 있습니다. 이 생성기는 crypto.getRandomValues()를 사용해 전적으로 브라우저에서 실행되며, 비밀번호는 전송되거나 기록되거나 저장되지 않습니다. 필요한 비밀번호를 복사해 바로 비밀번호 관리자에 넣으십시오.
엔트로피 비트 수는 무엇을 의미합니까?

현재 설정으로 만들 수 있는 비밀번호 개수에 밑이 2인 로그를 취한 값입니다. 80비트는 가능한 비밀번호가 2의 80제곱 개라는 뜻이며, 비트가 하나 늘 때마다 추측에 드는 작업량이 두 배가 됩니다. 엔트로피는 비밀번호를 생성한 방식을 나타내므로 무작위 비밀번호에만 적용됩니다.

비밀번호를 정기적으로 바꿔야 합니까?

정해진 주기에 따라 바꿀 필요는 없습니다. 사람들이 예측 가능한 변형으로 대응하기 때문에, NIST SP 800-63B-4는 서비스가 주기적인 변경을 강요하지 않도록 하고 있습니다. 서비스가 유출 사고를 알리거나, 비밀번호가 유출 자료에 나타나거나, 다른 사람이 알고 있다고 의심될 때 바꾸십시오.

모든 문자 유형을 반드시 포함하면 비밀번호가 더 강력해집니까?

아니요. 기본으로 켜져 있는 ‘선택한 유형 모두 포함’ 옵션은 구성 규칙이 있는 사이트에서 비밀번호가 거부되지 않도록 할 뿐입니다. 도구는 선택한 유형이 빠진 비밀번호를 버리고 다시 생성하는데, 이 때문에 일부 조합이 제외되어 실제 엔트로피가 약간 낮아집니다. 짧은 비밀번호일수록 차이가 두드러지므로 표시되는 수치는 상한값입니다. 강도를 높이려면 길이를 늘리는 편이 낫습니다.