DT

안전한 비밀번호 & API 키 생성기

암호학적 난수로 강력한 비밀번호를 만들고 강도를 즉시 계산합니다.

이 도구는 100% 브라우저에서 실행됩니다. 입력한 데이터는 서버로 전송되지 않습니다.

사람이 직접 만든 비밀번호는 예측 가능한 패턴을 따릅니다. 이름과 생년월일, 자판 배열, 마지막에 붙이는 !1. 공격자는 이런 패턴을 학습한 사전을 사용하므로, 겉보기에 복잡해 보여도 실제 안전성은 기대보다 훨씬 낮습니다.

이 도구는 브라우저의 암호학적 난수 생성기(crypto.getRandomValues)로 비밀번호, 외우기 쉬운 패스프레이즈, API 키를 만듭니다. 생성된 값의 엔트로피를 비트 단위로 계산하고 무차별 대입에 걸리는 예상 시간까지 함께 보여 주므로, '충분히 강한지'를 감이 아니라 숫자로 판단할 수 있습니다.

사용 방법

  1. 용도에 맞는 모드 선택웹 서비스 로그인에는 비밀번호, 노트북 로그인이나 마스터 비밀번호처럼 직접 입력해야 하는 곳에는 패스프레이즈, 서버 환경변수에 넣을 값에는 API 키 · 토큰을 고릅니다.
  2. 옵션 조정길이와 사용할 문자 종류를 정합니다. 길이가 안전성에 가장 크게 기여하므로 사이트가 허용한다면 20자 이상을 권합니다. 손으로 옮겨 적어야 한다면 헷갈리는 문자 제외를 켜서 0과 O, l과 1의 혼동을 피하세요.
  3. 강도 확인엔트로피와 예상 소요 시간을 확인합니다. 엔트로피 75비트 이상이면 강함, 100비트 이상이면 매우 강함으로 표시됩니다. 옵션을 바꾸면 값이 즉시 갱신됩니다.
  4. 복사 후 비밀번호 관리자에 저장목록에서 원하는 항목을 클릭하면 복사됩니다. 생성된 비밀번호는 기억할 필요 없이 비밀번호 관리자에 저장하는 것을 전제로 사용하세요.

자주 묻는 질문

생성된 비밀번호가 어딘가로 전송되나요?

전송되지 않습니다. 생성은 전적으로 브라우저 안에서 이루어지며 값이 네트워크로 나가지 않습니다.

난수는 운영체제의 안전한 난수원에 연결된 crypto.getRandomValues() 로 얻습니다. Math.random() 과 달리 예측 가능한 시드에서 나오지 않으므로 암호학적 용도에 적합합니다. 다만 아주 민감한 자격증명이라면 온라인 도구 대신 비밀번호 관리자에 내장된 생성기나 오프라인 도구를 쓰는 것이 원칙적으로 더 안전합니다.

패스프레이즈가 정말 비밀번호보다 안전한가요?

길이만 충분하다면 그렇습니다.

amber-glacier-tundra-quartz 는 27자이고 200단어 목록에서 4개를 고르는 방식이라 약 30비트의 엔트로피를 가집니다. 단어 수를 6개로 늘리면 약 46비트가 되고, EFF의 7,776단어 목록을 쓰면 6단어로 77비트에 이릅니다.

핵심은 단어를 무작위로 골라야 한다는 점입니다. 좋아하는 노래 가사나 속담에서 단어를 뽑으면 엔트로피가 급격히 떨어집니다. 사람이 고르는 순간 무작위성이 사라지기 때문입니다.

예상 소요 시간이 '사실상 불가능'인데 정말 안전한가요?

그 계산은 비밀번호 자체를 추측하는 무차별 대입만 가정한 값입니다.

현실의 계정 탈취는 대부분 다른 경로로 일어납니다. 다른 사이트에서 유출된 비밀번호를 그대로 시도하는 크리덴셜 스터핑, 피싱, 기기 감염된 악성코드가 대표적입니다. 아무리 강한 비밀번호도 여러 사이트에서 재사용하면 무의미합니다.

따라서 강한 비밀번호 생성은 기본이고, 여기에 사이트마다 다른 비밀번호2단계 인증을 함께 써야 실제 안전성이 확보됩니다.

API 키에는 어떤 형식이 좋나요?

Base62(영문 대소문자+숫자)가 무난합니다. URL·헤더·환경변수 어디에 넣어도 이스케이프가 필요 없고 더블클릭으로 전체 선택이 잘 됩니다.

32바이트(256비트)면 충분히 안전합니다. sk_live_ 같은 접두사를 붙이면 유출된 키를 발견했을 때 어느 서비스의 어떤 환경 키인지 바로 알 수 있어 대응이 빨라집니다. 실제로 GitHub의 시크릿 스캐닝은 이런 접두사 패턴을 이용해 유출을 자동 탐지합니다.

알아두면 좋은 개념

엔트로피가 뜻하는 것

엔트로피는 비밀번호를 맞히기 위해 시도해야 하는 경우의 수를 비트로 나타낸 값입니다. 길이 × log₂(문자 집합 크기) 로 계산합니다. 대소문자·숫자·기호를 모두 쓰면 문자 집합이 약 95가지이므로 한 글자당 약 6.5비트, 20자면 약 130비트입니다.

1비트가 늘어날 때마다 경우의 수는 두 배가 됩니다. 그래서 문자 종류를 늘리는 것보다 길이를 늘리는 쪽이 훨씬 효과적입니다. 8자에 기호를 섞는 것보다 16자 소문자만 쓰는 편이 안전합니다.

해시와 솔트, 그리고 저장 방식

비밀번호는 어떤 경우에도 평문으로 저장하면 안 됩니다. 서비스 개발자라면 bcrypt, scrypt, Argon2 같은 느린 해시 함수를 쓰고 계정마다 다른 솔트를 붙여야 합니다.

SHA-256 같은 범용 해시는 너무 빨라서 부적합합니다. GPU로 초당 수십억 번 계산할 수 있어 유출 시 대량 크래킹이 가능합니다. 반면 Argon2는 메모리를 많이 쓰도록 설계되어 병렬 공격 비용을 크게 올립니다. 사용자 입장에서는 서비스가 이런 조치를 했는지 알 수 없으므로, 비밀번호를 재사용하지 않는 것이 유일한 방어책입니다.

주기적 변경보다 중요한 것

90일마다 비밀번호를 바꾸게 하는 정책은 오랫동안 상식이었지만, 미국 NIST는 2017년 지침에서 이를 권장하지 않는 쪽으로 바꿨습니다. 강제로 자주 바꾸게 하면 사람들이 Password1!Password2! 식으로 예측 가능한 변형을 쓰기 때문입니다.

현재 권장되는 방향은 길고 무작위한 비밀번호를 한 번 만들어 관리자에 저장하고, 유출 정황이 있을 때만 교체하는 것입니다. 여기에 2단계 인증을 더하는 편이 주기적 변경보다 훨씬 효과가 큽니다.

함께 쓰면 좋은 도구

최종 업데이트: 2026-08-12