← 전체 글로

앱 소개

비밀번호 생성기 — 기호를 넣는 것보다 길이를 늘리는 쪽이 센 이유

랜덤 비밀번호 생성기가 길이와 문자 종류로 엔트로피(비트)를 계산하는 공식과, 기호 추가와 길이 증가가 강도에 주는 차이를 실제 수치로 정리했다.

이 글의 목적

강력한 비밀번호를 만들 때 문자 종류를 늘릴지 길이를 늘릴지 판단할 기준을 준다.

핵심 내용

엔트로피는 길이 × log₂(문자 풀 크기)라서, 기호를 추가하는 것보다 글자 몇 개를 더 늘리는 쪽이 비트를 훨씬 크게 올린다.

읽고 나서

길이 슬라이더와 문자 종류를 바꿔 보며 엔트로피 비트가 어떻게 변하는지 확인한 뒤 결과를 복사한다.

목차

기호 하나 더 넣기와 두 글자 더 늘리기

비밀번호를 세게 만들라고 하면 대개 기호를 섞으라는 말부터 나온다. 이 도구가 보여 주는 엔트로피 공식으로 보면 기호보다 길이가 더 큰 손잡이다.

엔트로피는 길이 × log₂(문자 풀 크기) 로 계산한다. 문자 풀은 선택한 문자 종류를 모두 합친 글자 수다. 이 도구의 문자 종류별 크기는 다음과 같다.

  • 소문자 a-z: 26자
  • 대문자 A-Z: 26자
  • 숫자 0-9: 10자
  • 기호 !@#$%^&*()-_=+[]{};:,.<>?: 25자

소문자·대문자·숫자로 만든 16자는 풀이 62자라 16 × log₂(62) ≈ 95.3비트다. 여기에 기호를 켜면 풀이 87자가 되어 16 × log₂(87) ≈ 103.1비트, 약 8비트가 오른다. 반면 기호 없이 길이만 16자에서 18자로 두 글자 늘려도 18 × log₂(62) ≈ 107.2비트가 된다. 문자 종류는 로그 안에 들어가고 길이는 로그 밖에서 곱해지기 때문이다. 기호를 못 쓰는 사이트라면 길이를 늘리면 된다.

비밀번호 생성기 열기

결과 읽는 법

비밀번호 아래에 세 가지 숫자가 나온다.

  • 강도와 비트: 위 공식으로 구한 엔트로피를 반올림해 보여 준다. 40비트 미만은 약함, 60비트 미만은 보통, 80비트 미만은 강함, 그 이상은 매우 강함으로 표시한다.
  • 문자 풀 크기: 계산에 쓰인 풀의 글자 수다. 네 종류를 다 켜면 87종이다.
  • 오프라인 대입 공격 예상 시간: 가능한 조합 수(2의 엔트로피 제곱)의 절반을 초당 10억 번씩 시도한다고 가정하고 나눈 값이다.

예를 들어 네 종류를 다 켠 8자는 약 51.5비트로 “보통”, 예상 시간은 19일로 나온다. 같은 조건의 12자는 약 77.3비트로 “강함”, 3백만 년이다. 16자는 “수십억 년 이상 (사실상 안전)“으로 표시된다. 이 시간은 초당 10억 번이라는 하나의 가정에서 나온 값이다. 실제 공격 속도는 사이트가 비밀번호를 어떻게 저장했는지와 공격자의 장비에 따라 달라지므로, 길이와 조합을 서로 비교하는 기준으로만 보는 것이 맞다.

헷갈리는 문자 제외를 켜면 0, O, 1, l, I 다섯 글자가 빠진다. 풀이 87자에서 82자로 줄어 16자 기준 103.1비트가 101.7비트로 조금 낮아진다. 종이에 적거나 소리 내어 불러 줘야 하는 비밀번호에 쓸 만한 옵션이다.

만드는 방식

선택한 문자 종류마다 한 글자씩 먼저 뽑아 넣는다. 네 종류를 켰다면 소문자·대문자·숫자·기호가 적어도 한 글자씩은 반드시 들어간다. 남은 길이는 전체 풀에서 채우고, 마지막에 자리를 무작위로 섞는다.

글자를 뽑을 때마다 브라우저의 crypto.getRandomValues에서 32비트 난수를 받는다. 난수를 풀 크기로 나눈 나머지를 쓸 때 특정 글자가 조금 더 자주 나오는 편향이 생길 수 있어, 풀 크기의 배수 범위를 넘는 값은 버리고 다시 뽑는다. 생성된 비밀번호는 서버로 보내지 않는다.

쓰면 안 되는 곳

표시되는 비트는 어림값이다. 종류마다 한 글자씩 강제로 넣는 규칙 때문에 실제로 나올 수 있는 조합은 공식이 가정하는 수보다 조금 적다. 차이는 작지만 정확한 값은 아니다.

길이는 4자부터 64자까지, 문자 종류는 하나 이상 골라야 생성된다. 종류를 모두 끄면 결과가 나오지 않는다.

엔트로피는 무작위로 만든 비밀번호에만 의미가 있다. 결과를 보고 외우기 쉽게 몇 글자를 바꾸거나 생일을 덧붙이면 그 부분은 더 이상 무작위가 아니다. 여러 사이트에 같은 비밀번호를 쓰는 것도 이 계산과 무관하게 위험하다. 사이트마다 따로 만들어 비밀번호 관리자에 저장하는 것이 맞고, 공용 컴퓨터에서 복사했다면 클립보드도 비워야 한다.