Skip to content
Logo Any Help Me

강력한 비밀번호 생성기: 암호학적으로 안전한 생성

보안: 강함
16
83264

복잡함보다 길이

비밀번호에 관해 대부분이 익힌 조언, 특수문자를 섞어라, o를 0으로 바꿔라, 90일마다 변경하라, 은 사람이 외우기는 어렵게 만들면서 기계가 알아내기는 그다지 어렵게 만들지 못하는 것으로 드러났습니다. NIST를 비롯한 현재의 권고는 반대 방향을 가리킵니다. 중요한 것은 길이이며, 강제된 복잡성 규칙은 대체로 예측 가능한 치환만 만들어 냅니다.

이 생성기는 브라우저의 암호학적 난수원을 사용하며, 길이와 문자 종류를 직접 지정할 수 있습니다.

비밀번호 생성하는 방법

길이를 먼저 정하세요. 일의 대부분을 해내는 입력입니다.

  1. 길이를 정하세요. 중요한 계정이라면 16자가 무난한 기본값이며, 비밀번호 관리자가 대신 기억해 준다면 더 길어도 비용이 들지 않습니다.
  2. 문자 종류를 고르세요. 대문자, 소문자, 숫자, 기호이며 넷 다 켜면 후보 집합이 가장 넓어집니다.
  3. 강도 표시를 확인하세요. 길이와 켜 놓은 종류 수를 함께 반영합니다.
  4. 결과를 복사해 비밀번호 관리자에 넣으세요. 다시 타이핑할 곳에 두지 마세요.
  5. 계정마다 새로 만드세요. 재사용이야말로 한 사이트의 유출을 모든 곳의 문제로 바꾸는 요인입니다.
  6. 사이트가 기호를 거부할 때만 기호를 끄고, 대신 길이를 늘려 보완하세요.

난수는 어디서 오는가

이 생성기는 `Math.random`이 아니라 브라우저의 암호학적 안전 난수원인 `crypto.getRandomValues`에서 값을 얻습니다. 이 구분은 중요합니다. `Math.random`은 빠르고 통계적으로 고르도록 설계되었을 뿐 예측 불가능하도록 만들어진 것이 아니며, 원리적으로는 이전 출력으로부터 재구성될 수 있습니다. 여기서 만들어지는 어떤 값도 시각이나 페이지, 관찰자가 재현할 수 있는 무언가에서 파생되지 않습니다.

네 종류를 모두 켜면 후보 집합은 91자이고, 한 글자당 약 6.5비트의 엔트로피에 해당합니다. 따라서 16자는 대략 104비트로, 어떤 현실적 규모의 오프라인 무차별 대입도 닿지 못하는 수준입니다. 비밀번호에 실질적인 위협은 피싱, 재사용, 데이터베이스 유출이며, 엔트로피를 더 늘려도 이들 중 어느 것도 막아 주지 못합니다.

길이와 문자 종류별 엔트로피

대략적인 엔트로피 비트 값이며, 비밀번호를 정직하게 비교하는 방법입니다.

길이소문자만영문 + 숫자네 종류 모두
8자약 38비트약 48비트약 52비트
12자약 56비트약 71비트약 78비트
16자약 75비트약 95비트약 104비트
20자약 94비트약 119비트약 130비트
24자약 113비트약 143비트약 156비트
32자약 150비트약 190비트약 208비트

소문자 비밀번호에 네 글자를 더하는 것이, 짧은 비밀번호에 키보드의 모든 기호를 더하는 것보다 이득입니다. 소문자 12자가 네 종류를 모두 쓴 8자를 이깁니다. 복잡함보다 길이라는 주장 전체가 이 한 줄에 담겨 있습니다.

강한 비밀번호가 막아 주지 못하는 것

엔트로피는 추측을 막아 주는데, 대부분의 계정은 추측으로 털리지 않습니다. 피싱은 입력하는 순간 비밀번호를 가져가고, 크리덴셜 스터핑은 사이트 간 재사용을 파고들며, 서비스 쪽 유출은 그들이 저장한 것을 강도와 무관하게 노출시킵니다. 이중 인증은 앞의 두 가지를 어떤 길이로도 할 수 없는 방식으로 다룹니다.

모든 처리는 브라우저에서 이루어집니다. 아무것도 전송되지 않고 생성된 비밀번호는 저장되거나 기록되지 않습니다. 다만 어떤 웹 페이지에서든 비밀번호를 만든다는 것은 그 페이지를 신뢰한다는 뜻입니다. 가장 값나가는 자격 증명이라면, 그러니까 비밀번호 관리자의 마스터 비밀번호나 복구 키라면, 이미 신뢰하는 관리자에 내장된 생성기를 쓰는 편이 더 보수적인 선택입니다.

자주 묻는 질문

비밀번호는 몇 자여야 하나요?
중요한 계정이라면 16자가 합리적인 기본값입니다. 관리자가 저장해 준다면 길어도 비용이 없고, 길이는 어떤 복잡성 규칙보다 엔트로피에 많이 기여합니다.
충분히 안전한 난수인가요?
네. 빠르고 고르지만 예측 불가능하지는 않은 `Math.random` 대신, 암호학적으로 안전한 브라우저의 `crypto.getRandomValues`를 사용합니다.
기호가 꼭 필요한가요?
도움은 되지만 길이만큼은 아닙니다. 소문자 12자가 모든 종류를 쓴 8자보다 엔트로피가 높으니, 기호를 고민하기 전에 길이를 늘리세요.
비밀번호를 주기적으로 바꿔야 하나요?
현재 권고는 아니라고 봅니다. 노출이 의심되는 경우가 아니라면요. 강제 변경은 진짜 새 비밀번호보다 예측 가능한 변형을 낳는 경향이 있습니다.
생성된 비밀번호가 어디론가 전송되나요?
아니요. 생성은 전적으로 브라우저에서 이루어지며 아무것도 전송·저장·기록되지 않습니다.
계정을 실제로 지켜 주는 것은 무엇인가요?
비밀번호를 재사용하지 않는 것, 그리고 이중 인증을 켜는 것입니다. 추측보다 훨씬 많은 계정 상실을 일으키는 피싱과 크리덴셜 스터핑을 다루기 때문입니다.
마스터 비밀번호에도 써도 되나요?
관리자의 마스터 비밀번호나 복구 키라면, 이미 신뢰하는 소프트웨어에 내장된 생성기가 더 보수적입니다. 웹 페이지를 신뢰할 필요 자체가 없어지기 때문입니다.

더 많은 도구 보기: 개발자

모두 보기 →