비밀번호 생성기에 대하여
이 무료 비밀번호 생성기는 강하고 무작위한 비밀번호를 만듭니다. 길이와 포함할 문자 종류를 고르면 곧바로 고유한 비밀번호가 나오며, 강도 표시는 모호한 색이 아니라 실제 엔트로피를 비트 단위로 알려 줍니다.
비밀번호는 브라우저 안에서 crypto.getRandomValues, 즉 브라우저에 내장된 암호학적으로 안전한 난수원을 사용해 만들어집니다. 아무것도 전송되지 않고 기록되지 않으며, 여기에 표시된 비밀번호가 서버에 존재한 적은 한 번도 없습니다. 이것은 사소한 문제가 아닙니다. 서버에서 생성하는 비밀번호 생성기는 그 서버를 전적으로 믿어야 하는 생성기입니다.
비밀번호를 정말로 강하게 만드는 것
기호가 아닙니다. 앞의 대문자와 끝의 1 도 아닙니다. 길이와 무작위성 — 중요한 것은 이 둘뿐이고, 그중에서도 길이가 더 중요합니다.
척도는 엔트로피이며 비트로 셉니다. 비트가 하나 늘 때마다 공격자가 훑어야 할 경우의 수는 두 배가 됩니다. 62개 문자(영문자와 숫자)에서 무작위로 뽑은 비밀번호는 한 글자당 약 5.95비트를 담으므로, 12자면 약 71비트, 16자면 약 95비트가 됩니다.
제대로 된 장비를 갖춘 공격자가 오프라인에서 추측할 때, 이 숫자들이 실제로 뜻하는 바는 다음과 같습니다.
- 40비트 미만 — 몇 초 만에 뚫립니다
- 50~60비트 — 몇 시간에서 며칠
- 70~80비트 — 수년이 걸리며 대부분의 공격자에게는 현실성이 없습니다
- 90비트 이상 — 현재 기술로는 불가능합니다
네 글자를 더하는 것이 ! 하나를 더하는 것보다 훨씬 큽니다. 글자를 하나 늘릴 때마다 작업량이 몇 배가 되지만, 기호는 사용 가능한 문자 집합을 조금 넓힐 뿐입니다.
「Passw0rd!」가 약하고 긴 무작위 비밀번호는 약하지 않은 이유
비밀번호 규칙은 한 세대에게 *사람*은 외우기 어렵고 *컴퓨터*는 추측하기 쉬운 비밀번호 만드는 법을 가르쳤습니다. 앞에 대문자, 끝에 숫자, a 대신 @. 공격자는 그 모두를 알고 있습니다. 모든 크래킹 도구가 바로 그 치환을 자동으로 적용합니다. 누구나 같은 치환을 하기 때문입니다.
실제 공격은 aaaa, aaab, aaac 를 차례로 시도하지 않습니다. 유출된 비밀번호 목록 — 실제 유출 사고에서 나온 수십억 개의 진짜 비밀번호 — 에서 시작해 예측 가능한 변형을 적용합니다. P@ssw0rd! 는 그 목록에 여러 번 올라 있습니다. 아홉 글자이지만 실질적인 엔트로피는 사실상 0입니다.
무작위 16자 비밀번호에는 이용할 규칙성이 없으므로 그 모든 장치가 소용없습니다. 무차별 대입으로 깨야 하는데, 95비트의 무차별 대입은 끝나지 않습니다.
나머지 절반은 재사용입니다. 어떤 사이트가 뚫리면, 훔친 이메일과 비밀번호 쌍이 수백 개의 다른 사이트에서 자동으로 시도됩니다. 재사용한 비밀번호 하나가 한 회사의 실수를 모든 곳에서 당신의 문제로 바꿉니다. 사이트마다 다른 무작위 비밀번호를 쓰면 피해가 그 계정 하나에 머무릅니다 — 이것이 비밀번호 관리자를 쓰는 진짜 이유입니다.
길이 고르기
- 16자 — 거의 모든 곳에 적합한 기본값
- 20자 이상 — 이메일, 은행, 비밀번호 관리자의 마스터 비밀번호 등 다른 계정을 재설정할 수 있는 것
- 12자 — 사이트가 더 긴 것을 받지 않을 때의 허용 가능한 하한
- 12자 미만 — 시스템이 강제할 때만. 그 계정은 보호가 약한 것으로 여기십시오
가장 긴 비밀번호를 받아야 할 곳은 이메일 계정입니다. 당신의 이메일을 장악한 사람은 나머지 거의 모든 것의 비밀번호를 재설정할 수 있습니다.
헷갈리는 문자 제외 설정에 대하여
헷갈리는 문자 제외를 켜면 O, 0, l, 1, I 같은 문자가 빠집니다. 화면에서 비밀번호를 읽어 다른 곳에 입력할 때 사람이 혼동하는 문자들입니다.
비밀번호를 손으로 입력해야 할 때 사용하십시오. 공유기 카드에 적힌 와이파이 키, 리모컨으로 설정하는 기기, 전화로 불러 주는 것, 인쇄해 건네는 것.
비밀번호 관리자에 바로 들어가 붙여넣기만 할 것이라면 꺼 두십시오. 문자를 빼면 문자 집합이 줄어 엔트로피가 조금 낮아집니다. 길이를 한두 자 늘리면 쉽게 되찾을 수 있습니다.
사용 방법
- 길이를 정하고 문자 종류(대문자, 소문자, 숫자, 기호)를 고릅니다
- 생성 — 새 비밀번호가 나타납니다(다시 누르면 다른 것이 나옵니다)
- 복사 — 복사 버튼을 눌러 필요한 곳에 붙여넣습니다
알아두면 좋은 점
- 생성한 비밀번호를 재사용하지 마십시오. 같은 문자열이 다섯 계정을 지키고 있다면 그 강도는 아무 의미가 없습니다.
- 비밀번호 관리자에 보관하십시오. 메모나 스프레드시트, 브라우저 탭이 아니라. 외울 수 없는 강한 비밀번호는 무언가가 대신 기억해 줄 때만 쓸모가 있습니다.
- 조용히 잘라 버리는 사이트가 있습니다. 일부 시스템은 아무 말 없이 16자나 20자에서 비밀번호를 자릅니다. 가입할 때는 받아들여진 긴 비밀번호가 로그인에서 거부된다면 대개 이것이 원인입니다.
- 아직 기호를 금지하는 사이트도 있습니다. 기호를 끄고 대신 길이를 늘리십시오. 잃는 것은 거의 없습니다.
- 클립보드는 바로 잊지 않습니다. 복사한 비밀번호는 그대로 남아 있습니다. 기기를 함께 쓴다면 나중에 다른 것을 복사해 두십시오.
- 2단계 인증이 더 긴 비밀번호보다 낫습니다. 무작위 16자를 넘어서면 다음 보안 개선은 열일곱 번째 글자가 아니라 2FA입니다.
자주 묻는 질문
비밀번호는 몇 자여야 하나요?
무작위 16자가 합리적인 기본값이며 거의 모든 계정에 충분히 강합니다. 이메일, 은행, 비밀번호 관리자의 마스터 비밀번호에는 스무 자 이상을 쓰십시오. 그것들이 나머지 전부를 열 수 있기 때문입니다. 사이트가 더 긴 것을 받지 않으면 열두 자가 현실적인 하한입니다. 짧은 비밀번호에 특이한 기호를 넣는 것보다 길이가 훨씬 더 큰 안전을 가져다줍니다.
이 비밀번호들은 정말 무작위인가요?
네. crypto.getRandomValues, 즉 브라우저의 암호학적으로 안전한 난수 생성기에서 나옵니다. 암호화 키에 쓰이는 것과 같은 부류의 난수원입니다. 예측 가능하여 보안 용도에 부적합한 Math.random() 이 아닙니다. 생성은 전부 사용자의 기기 안에서 이루어집니다.
웹사이트에서 비밀번호를 생성해도 안전한가요?
어디에서 생성되는지에 전적으로 달려 있습니다. 서버에서 생성하는 사이트라면 그 서버가 당신의 비밀번호를 본 것이고, 당신은 그 서버를 전적으로 믿는 셈입니다. 이 도구는 브라우저에서 생성합니다. 비밀번호는 기기에서 만들어지고 전송되지 않으며 다른 어디에도 존재하지 않습니다. 인터넷 연결을 끊어도 작동하는 것으로 확인할 수 있습니다.
비밀번호에 기호가 필요한가요?
조금 도움이 되지만 생각만큼은 아닙니다. 기호를 넣으면 문자 집합이 62개에서 약 94개로 넓어지며, 글자당 약 0.6비트가 늘어나는 정도입니다. 두 글자를 더 늘리는 편이 더 낫습니다. 사이트가 기호를 거부한다면 그저 더 길게 만드십시오. 의미 있는 손실은 없습니다.
비트 숫자는 무엇을 뜻하나요?
엔트로피, 즉 비밀번호가 담고 있는 진짜 무작위성의 양입니다. 비트가 하나 늘 때마다 공격자에게 필요한 시도 횟수가 두 배가 됩니다. 40비트 미만이면 빠르게 뚫리고, 70~80비트면 깨는 것이 현실적이지 않으며, 90비트를 넘으면 현재 기술의 범위 밖입니다. 대개 문자 종류만 세는 빨강-노랑-초록 막대보다 훨씬 정직한 척도입니다.
비밀번호를 정기적으로 바꿔야 하나요?
정해진 주기로는 아닙니다. 강제 변경은 사람들이 더 약하고 예측하기 쉬운 비밀번호를 고르게 만듭니다. Summer2024! 가 Summer2025! 가 될 뿐입니다. 현재 NIST의 권고는 길고 고유한 비밀번호를 쓰고, 이유가 있을 때 바꾸라는 것입니다. 유출 통지, 공유해 버린 비밀번호, 계정 접근이 의심되는 경우 등이 그 이유입니다.
사이트가 비밀번호 길이를 제한하면 어떻게 하나요?
그 사이트가 받아들이는 가장 긴 길이로 생성하고, 기호가 거부되면 기호를 끄십시오. 조용한 잘림에 유의하십시오. 설정할 때는 되던 비밀번호가 다음 로그인에서 실패한다면 사이트가 말없이 잘랐을 가능성이 큽니다. 그럴 때는 일부러 더 짧은 것을 설정해 무엇이 저장되었는지 정확히 아십시오.