비밀번호 생성기
길이와 문자 종류를 직접 선택해 강력한 무작위 비밀번호를 생성하세요 — 브라우저의 암호학적 난수를 사용합니다.
조회수 1,323회
작동 방식
비밀번호 강도는 더하기가 아니라 곱하기, 즉 지수 함수로 작동합니다. 가능한 조합의 수는 문자 집합 크기를 길이만큼 거듭제곱한 값(문자집합^길이)과 같으며, 바로 이 지수 관계 때문에 길이가 단일 요소 중 가장 강력한 지렛대가 됩니다. 소문자만 사용하는 8자리 비밀번호는 26자로 이루어진 집합에서 뽑히므로 26^8 — 약 2080억 개의 조합이 나오는데, 이는 최신 하드웨어가 초당 수십억 번의 시도를 테스트하기 전까지는 많아 보입니다. 대문자, 숫자, 기호를 추가하고 길이를 12자리로 늘리면 집합은 약 95자로 커지고, 95^12 — 약 540해(5.4 × 10^23)에 이르는 조합이 나옵니다. 이는 소소한 개선이 아니라, 문자 하나가 늘 때마다 총합이 더해지는 게 아니라 곱해지기 때문에 자릿수가 몇 단계나 더 커지는 것입니다. 구체적인 예로, 소문자만 쓰는 8자리 비밀번호에서 네 가지 문자 종류를 모두 포함하는 12자리 비밀번호로 바꾸는 것은 보안을 단순히 두 배로 늘리는 게 아니라, 무차별 대입 공격에 걸리는 시간을 "적당한 기간 안에 뚫릴 수 있음"에서 "미래의 하드웨어로도 현실적으로 도달할 수 없는 수준"으로 완전히 바꿔놓습니다.
이 생성기는 모든 문자를 Math.random()이 아니라 브라우저의 암호학적으로 안전한 난수 생성기인 crypto.getRandomValues로 뽑습니다. 이 구분은 중요합니다. Math.random()은 애니메이션과 게임을 위해 만들어진 빠르고 예측 가능한 의사 난수 생성기이며, 그 내부 상태는 경우에 따라 관찰된 출력값으로부터 재구성될 수 있어 보안과 관련된 어떤 용도에도 적합하지 않습니다. crypto.getRandomValues는 운영체제의 암호학적 엔트로피 소스에서 값을 가져오며, 이전 출력값을 본 공격자에게도 예측 불가능하도록 특별히 설계되어 있습니다.
알아둘 사항
길이는 거의 항상 복잡성을 이깁니다. 소문자만 사용하는 16자리 비밀번호(26^16)는 모든 문자 종류를 섞은 8자리 비밀번호(95^8)보다 수학적으로 훨씬 더 강력한데, 이는 단순히 지수가 밑수보다 더 결정적인 요소이기 때문입니다. 더 길고 단순한 비밀번호와 더 짧고 복잡한 비밀번호 사이에서 선택해야 한다면, 더 긴 쪽을 선택하십시오.
비밀번호는 사용자의 기기를 절대 벗어나지 않습니다. 전적으로 브라우저 안에서 생성되며, 이 도구에 의해 어떤 서버로도 전송되거나 기록되거나 어디에도 저장되지 않습니다. 페이지를 새로고침하거나 닫으면 완전히 사라지는데, 바로 그렇기 때문에 화면이나 텍스트 파일에 남겨두는 대신 비밀번호 관리자에 곧바로 복사해 넣어야 합니다.
하나의 비밀번호를 여러 계정에서 재사용하면 단 한 번의 데이터 유출이 여러 건의 유출로 바뀝니다. 어느 한 사이트의 데이터베이스가 유출되면 — 신중하고 잘 관리되는 서비스에서도 유출은 일어납니다 — 유출된 비밀번호 목록이 유통되기 시작하는 순간, 그 비밀번호를 공유하는 다른 모든 계정이 위험해집니다. 사이트마다 생성한 고유한 비밀번호를 비밀번호 관리자에 저장해두면, 한 번의 유출로 인한 피해를 그 계정 하나로만 한정할 수 있습니다.
자주 묻는 질문
비밀번호는 몇 자리가 적당한가요?
일반 계정은 최소 12자, 이메일이나 은행처럼 중요한 계정은 16자 이상을 권장합니다. 길이가 복잡성보다 중요합니다 — 소문자로만 이루어진 16자리 비밀번호가 기호를 포함한 8자리보다 더 강력합니다.
생성된 비밀번호가 서버로 전송되나요?
아니요. 브라우저의 crypto.getRandomValues API로 기기 안에서만 생성되며 밖으로 나가지 않습니다. 페이지를 새로고침하면 사라집니다.
같은 비밀번호를 여러 사이트에 써도 되나요?
절대 안 됩니다. 한 사이트에서 유출되면 모든 계정이 위험해집니다. 사이트마다 고유한 비밀번호를 생성해 비밀번호 관리자에 보관하세요.
문자를 하나 더 추가하는 것이 기호를 하나 추가하는 것보다 왜 더 도움이 되나요?
길이는 지수이고 문자 종류의 다양성은 그저 밑수이기 때문입니다. 길이에 문자를 하나 추가하면 전체 조합 수가 문자 집합 전체 크기만큼 곱해지지만, 기호 종류를 하나 더 추가하면 밑수가 몇 단위만 커질 뿐입니다. 현실적인 어떤 비밀번호 길이에서도 길이를 늘리는 쪽이 훨씬 큰 차이로 이깁니다.
Math.random()은 이미 충분히 무작위적이지 않나요?
게임이나 애니메이션에는 그렇습니다 — 하지만 이는 암호학적 생성기가 아니라 빠른 의사 난수 생성기이며, 그 출력값은 어떤 경우에는 예측되거나 재구성될 수 있습니다. 비밀번호 생성에는 브라우저의 암호학적으로 안전한 소스인 crypto.getRandomValues가 필요하며, 이 도구는 오직 그것만을 사용합니다.
비슷한 도구
문제 신고하기
비밀번호 생성기
댓글
아직 댓글이 없습니다 — 첫 댓글을 남겨보세요!