이 비밀번호 생성기가 다른 것과 다른 점
많은 온라인 생성기는 비밀번호를 서버 측에서 생성하거나 (비밀번호가 사용자 컴퓨터를 떠남) 암호학적으로 안전하지 않은 Math.random()을 사용합니다. 둘 다 진정한 보안에는 부적합합니다.
- 진정한 무작위:
crypto.getRandomValues는 암호학적으로 신뢰할 수 있는 숫자를 제공하며, modulo bias를 막는 Rejection Sampling이 보완됩니다.
- 완전 오프라인:
fetch 없음, 서드파티 스크립트 없음, CDN 없음, 쿠키 없음, LocalStorage 없음.
- 단일 파일: HTML, CSS, JavaScript뿐. 페이지를 저장하여 인터넷 없이도 사용할 수 있습니다.
- 투명성: 소스 코드가 보이고 읽을 수 있습니다 (우클릭, "페이지 소스 보기").
- 저장 없음: 탭을 닫으면 비밀번호가 사라지며, 기록 없음, 흔적 없음.
정말 안전한 비밀번호를 선택하는 방법
가장 중요한 규칙: 길이가 복잡성보다 중요합니다. 긴 비밀번호는 특수 문자가 많은 짧은 비밀번호보다 수학적으로 더 안전합니다.
- 일반 계정의 경우 최소 16자, 이메일, 뱅킹, 마스터 비밀번호, 서버 접근의 경우 24~32자.
- 서비스마다 고유 비밀번호. 한 사업자가 해킹되어도 다른 계정은 안전합니다.
- 비밀번호 관리자 사용 (예: KeePassXC, Bitwarden, 1Password). 강력한 마스터 비밀번호 하나만 기억하면 됩니다.
- 가능한 모든 곳에서 2단계 인증 활성화.
- 같은 비밀번호를 절대 재사용하지 말고 패턴으로 만들지 마세요 (예:
Sommer2024!). 사전 공격은 이를 몇 초 만에 깨뜨립니다.
공격자가 깨는 데 얼마나 걸릴까요?
오프라인 공격 (해커가 유출된 비밀번호 해시를 가지고 모든 조합을 로컬에서 시도) 의 경우, 현대 GPU 장비는 초당 약 1조 회를 시도할 수 있습니다 (MD5 또는 SHA-1과 같은 약한 해시 방식의 경우). bcrypt나 Argon2와 같은 강력한 방식의 경우 훨씬 적지만, 여기서는 보수적으로 계산합니다.
| 길이 |
문자 집합 |
가능한 조합 |
크래킹 시간 (1조/초) |
| 8 | 소문자만 | 2 · 1011 | 0.2초 |
| 8 | 문자 + 숫자 | 2 · 1014 | 3분 |
| 12 | 문자 + 숫자 | 3 · 1021 | 100년 |
| 16 | 문자 + 숫자 | 5 · 1028 | 15억 년 |
| 20 | 문자 + 숫자 | 7 · 1035 | 10²² 년 |
| 32 | 문자 + 숫자 (기본) | 2 · 1057 | 사실상 무한대 |
값은 반올림된 것으로, 62개의 가능한 문자 (a~z, A~Z, 0~9) 와 초당 10¹² 회 시도를 기반으로 합니다.