강력하고 고유한 비밀번호는 온라인 계정을 지키는 가장 경제적인 방어 수단입니다. 하지만 정작 필요한 순간은 회사 업무용 계정을 새로 만들 때, 인터넷 뱅킹에서 비밀번호 변경을 강제할 때, 새로 구입한 공유기를 설정할 때, 또는 마침내 비밀번호 관리자(password manager)로 전환할 때처럼 갑작스럽게 찾아옵니다. 이 강력한 무료 비밀번호 생성기를 사용하면 클릭 한 번으로 완전히 무작위적인 비밀번호를 만들 수 있습니다. "길이"를 필요한 만큼 설정하고, 포함할 문자 유형(대소문자, 숫자, 기본 기호(%$#@!?&), 복잡한 기호(.,;[]()^-_=+{}:<>|))을 선택한 후 "결과 생성" 버튼을 누르기만 하면 됩니다.
이 생성기는 보안을 최우선으로 고려하여 설계되었습니다. 따라서 TLS 및 기타 중요한 보안 작업에서 의존하는 것과 동일한, 암호학적으로 안전한 시스템 수준의 난수에서 값을 추출하는 Web Crypto API(crypto.getRandomValues)를 기반으로 구축되었습니다. Math.random()이나 예측 가능한 유사 난수 함수를 사용하는 생성기와 달리, 공격자가 이전 결과를 보더라도 다음 결과를 전혀 유추할 수 없도록 만들어졌습니다. 또한 모든 생성 과정은 사용자의 기기 내에서만 이루어집니다. 비밀번호는 서버로 전송되지 않고, 로그에 남지 않으며, 개발자인 저희도 볼 수 없습니다. 즉, 중간에 가로챌 데이터도, 저희가 보관하는 데이터도 전혀 존재하지 않습니다.
다양한 옵션을 통해 어떤 사이트의 비밀번호 정책이든 쉽게 맞출 수 있습니다. 생성된 모든 비밀번호는 사용자가 선택한 각 문자 유형을 최소 한 개 이상 반드시 포함하도록 보장합니다. 따라서 "대문자와 숫자를 반드시 포함할 것"과 같은 요구 사항이 자동으로 충족됩니다. 또한 "각 문자 유형의 개수를 거의 동일하게 유지" 옵션이 기본으로 켜져 있어, 특정 문자 유형 하나에만 결과가 편중되는 것을 막아줍니다. 최고 수준의 강도를 원한다면 기호를 켜고, 이를 허용하지 않는 구형 시스템이라면 기호를 끕니다. "혼동하기 쉬운 문자 제외" 기능을 켜면 사람이 육안으로 읽을 때 헷갈리기 쉬운 문자들(Il1O0o)을 제거할 수 있습니다.
비밀번호가 여러 개 필요하거나 사이트의 요구 조건이 특이한가요? "생성 개수"를 설정하면 팀 계정을 만들 때처럼 최대 100개의 비밀번호 목록을 한 번에 생성할 수 있습니다. 개수가 1보다 클 경우, "결과 형식"을 통해 비밀번호를 "줄바꿈", "공백으로 구분", 또는 "쉼표로 구분" 중 어떤 방식으로 나열할지 결정합니다. 그 외의 세부적인 설정은 모두 "고급 옵션" 아래에 있습니다. 동일한 문자가 두 번 이상 나타나도 괜찮다면 "하나의 비밀번호에서 중복 문자 제외"를 끄십시오. 한편, 이 도구는 한국어 고유 문자를 지원하지 않지만, 우크라이나어, 그리스어, 세르비아어부터 폴란드어, 튀르키예어, 베트남어에 이르기까지 다른 35개 언어의 문자를 포함할 수 있습니다. 비밀번호를 완벽하게 제어하고 싶거나 자신만의 문자를 추가하고 싶다면, "문자 집합 (줄당 하나)"을 이용해 직접 집합을 정의할 수 있습니다. 입력한 각 줄은 생성기가 문자를 추출하는 독립적인 문자 유형으로 취급됩니다.
이 비밀번호 생성기를 선택해야 하는 이유
- 브라우저 전용 생성: 비밀번호는 기기 내에서만 만들어지며 외부로 전송되지 않음
- Web Crypto API 무작위성: Math.random()이 아닌 암호학적으로 안전한 난수 사용
- 무제한 무료 제공: 가입 없이 필요한 만큼 비밀번호 무한 생성 가능
- 문자 유형별 보장: 선택한 문자 유형이 결과에 무조건 포함됨
- 맞춤형 문자 집합: 특이한 비밀번호 정책에도 자체 문자 집합으로 대응
- 엔트로피 평가: 비트 단위로 모든 비밀번호의 강도 확인
- 혼동하기 쉬운 문자 제외: 읽기 오류 및 오타 방지
- 로컬 알파벳 지원: 35개 언어의 고유 문자를 비밀번호에 혼합
- 일괄 생성 모드: 클릭 한 번으로 여러 개의 비밀번호 목록 생성
난수는 어떻게 만들어질까요? 여러분의 운영체제는 하드웨어 이벤트에서 발생하는 예측할 수 없는 노이즈(엔트로피)를 지속적으로 수집하여 암호학적으로 안전한 난수 생성기에 공급합니다. 사용자가 결과 생성을 누르면, 이 페이지의 JavaScript가 crypto.getRandomValues를 통해 브라우저에 무작위 값을 요청합니다. 그리고 그 값을 사용자가 선택한 문자 유형에 매핑하고, 모든 유형이 누락 없이 포함되었는지 확인한 뒤 비밀번호를 조립합니다. 이 과정에는 추측 가능한 '시드(seed)'도 없고, 비밀번호 해독 전용 하드웨어가 뚫고 들어올 수 있는 알고리즘상의 지름길도 존재하지 않습니다. 또한 어떠한 단계에서도 네트워크 요청이 발생하지 않으며, 전체 과정이 전적으로 사용자의 기기에서만 실행됩니다.
생성된 결과 아래에는 비밀번호의 강도를 나타내는 척도인 비트 단위의 예측 불가능성(엔트로피) 추정치가 표시됩니다. 대략 60비트 이상이면 일상적인 계정에 적합하고, 80비트 이상이면 강력하며, 100비트 이상이면 최신 하드웨어를 동원한 무차별 대입(brute force) 공격으로도 사실상 해독이 불가능합니다. 무엇보다도 다음 두 가지 습관이 가장 중요합니다. 첫째, 복잡함보다 '길이'가 우선입니다. 중요한 계정일수록 16자 이상을 사용하세요. 다른 기호 유형을 추가하는 것보다 길이를 단 한 글자 늘리는 쪽이 공격자의 해독 작업량을 훨씬 더 빠르게 배가시킵니다. 둘째, '고유성'입니다. 한 웹사이트에서 데이터 유출(data breach)이 발생하면, 유출된 로그인 정보는 즉시 다른 서비스에 대입해 보는 크리덴셜 스터핑(credential stuffing) 공격에 악용됩니다. 따라서 비밀번호 하나를 재사용하는 것만으로 하나의 유출 사고가 전체 계정 탈취로 이어질 수 있습니다. 모든 계정에 각각 고유한 비밀번호를 만들어 비밀번호 관리자에 보관하고, 지원되는 곳이라면 반드시 2단계 인증(2FA)을 활성화하십시오. 이러한 보안 수칙은 KISA가 권장하는 지침과도 일치합니다. 마지막으로, 완전히 무작위로 생성된 비밀번호에 반복되는 문자나 읽을 수 있는 짧은 단어 조각이 포함되어 있다고 해서 놀라지 마십시오. 진정한 난수에서는 이러한 연속적인 패턴이 흔하게 발생하며, 이것이 비밀번호를 결코 약하게 만들지 않습니다.