안전한 랜덤 비밀번호 생성 · crypto.getRandomValues · 브라우저에서 바로 처리(서버 전송 없음)
16

비밀번호 생성기가 하는 일

사람이 직접 지은 비밀번호는 대개 예측 가능한 자리에 대문자가 오고, 끝에 숫자와 느낌표가 붙습니다. 공격 도구는 바로 그 습관을 노립니다. 이 도구는 사람의 손을 거치지 않고 브라우저에 내장된 암호용 난수 발생기 crypto.getRandomValues로 한 글자씩 뽑아 비밀번호를 만듭니다. 흔히 쓰이는 Math.random 같은 일반 난수는 사용하지 않습니다.

난수를 문자 개수로 나눌 때 생기는 이른바 모듈로 편향도 제거했습니다. 32비트 난수를 뽑되 문자 개수의 배수를 넘어가는 값이 나오면 버리고 다시 뽑는 방식이라, 어떤 글자든 뽑힐 확률이 똑같습니다. 또 대문자·소문자·숫자·특수문자 중 켜 놓은 종류마다 최소 한 글자가 반드시 들어가도록 먼저 채운 다음, 전체 자리를 뒤섞어 특정 종류가 앞자리에 몰리지 않게 합니다.

길이는 4자에서 64자까지 슬라이더로 정하고, 한 번에 최대 50개까지 만들 수 있습니다. 특수문자는 !@#$%^&*()-_=+[]{};:,.<>? 를 쓰며, 헷갈리는 문자 제외를 켜면 숫자 0과 대문자 O, 숫자 1과 소문자 l·대문자 I, 그리고 세로줄과 백틱이 후보에서 빠집니다. 종이에 적어 전달하거나 전화로 불러 줘야 하는 비밀번호라면 이 옵션이 도움이 됩니다.

각 결과 아래의 막대는 강도 표시입니다. 선택한 문자 집합의 크기와 길이로 계산한 정보량을 기준 삼아 40비트 미만이면 약함, 64비트 미만이면 보통, 90비트 미만이면 강함, 그 이상이면 매우 강함으로 나눕니다. 문자 종류를 늘리는 것보다 길이를 늘리는 쪽이 이 값을 훨씬 빨리 끌어올립니다.

사용 방법

  1. 길이 슬라이더를 옮겨 자릿수를 정합니다. 중요한 계정이라면 16자 이상을 권합니다.
  2. 포함할 문자 종류를 체크합니다. 특수문자를 막는 사이트라면 해당 항목을 꺼 주세요.
  3. 필요하면 헷갈리는 문자 제외를 켭니다.
  4. 생성 개수를 정하고 생성을 누릅니다. 옵션을 바꾸면 자동으로 다시 만들어집니다.
  5. 마음에 드는 줄의 복사 아이콘을 누르거나, 전체 복사로 목록을 한꺼번에 가져갑니다.

궁금한 사항 있으신가요?