비밀번호는 실제로 몇 자가 적당할까
대부분의 안내는 근거 없이 숫자만 말합니다. 그래서 그 숫자가 계속 바뀝니다. 정직한 답은 이렇습니다 — 길이는 공격자가 우회할 수 없는 유일한 요소라서, 가장 먼저 당겨야 할 손잡이입니다.
길이가 특수문자를 이깁니다, 그것도 큰 차이로
글자를 하나 더할 때마다 경우의 수는 문자 집합 크기만큼 곱해집니다. 짧은 비밀번호에 기호를 추가하면 한 번 곱해지지만, 네 글자를 더하면 네 번 더 곱해집니다. 글자와 숫자만 쓴 20자 비밀번호가 키보드의 모든 기호를 동원한 10자보다 경우의 수가 많습니다.
"특수문자를 반드시 포함" 같은 규칙이 별 효과가 없는 이유도 여기 있습니다. 모두를 똑같은 뻔한 치환으로 몰아넣을 뿐 — 끝에 느낌표, A 대신 골뱅이 — 길이는 그대로입니다.
'비트'가 뜻하는 것
생성된 비밀번호 옆에 붙는 비트 수는 엔트로피입니다. 그 생성기가 만들 수 있었던 동일 확률 비밀번호의 개수를 밑이 2인 로그로 나타낸 값입니다. 1비트가 늘 때마다 추측하는 쪽의 수고가 두 배가 됩니다. 대략의 구간은 이렇습니다.
- 40비트 미만. 약합니다. 요즘 장비라면 오프라인에서 현실적인 시간 안에 훑을 수 있습니다.
- 60비트 언저리. 일상 계정에는 괜찮습니다. 특히 몇 번 틀리면 잠기는 서비스라면 충분합니다.
- 80~100비트. 유출된 비밀번호 데이터베이스를 오프라인으로 공격해도 현실적으로 닿지 않습니다.
- 100비트 이상. 이제 보안의 가장 약한 고리는 비밀번호가 아닙니다. 다른 곳입니다.
엔트로피는 정말 무작위로 뽑았을 때만 유효합니다. 사람이 직접 지은 12자는 무작위 12자보다 훨씬 낮습니다. 사람의 선택은 단어·날짜·키보드 패턴 근처에 몰리고, 크래킹 도구는 그 근처를 가장 먼저 뒤지기 때문입니다.
쓸 만한 길이
- 메일·은행: 무작위 20자. 메일은 나머지 전부의 재설정 경로라서 가장 강한 것을 줄 만합니다.
- 일상 계정: 무작위 16자. 현실적인 위협을 여유 있게 넘기면서, 관리자 없이 손으로 옮겨 적을 만한 길이입니다.
- 와이파이: 20자 이상. 와이파이 핸드셰이크는 가로채서 횟수 제한 없이 오프라인으로 공격할 수 있어 길이가 가장 중요한 자리입니다. 자주 입력하지 않으니 길게 잡으세요.
- 일회성 가입: 16자면 충분합니다. 더 짧게 할 이유가 없습니다. 외우는 게 아니라 붙여넣는 거니까요.
- 꼭 외워야 하는 것: 여섯 단어 조합. 약 63비트이고, 실제로 기억에 남습니다.
대신 정해 버리는 제한
아직도 최대 길이를 두는 사이트가 있고, 드물게 12자나 16자까지 내려갑니다. 그럴 땐 허용하는 만큼 꽉 채우고 받아주는 문자 종류를 전부 켜세요. 최대 길이가 낮다는 건 비밀번호가 바람직하지 않은 방식으로 보관되고 있다는 힌트이기도 하니, 그 사이트에서만 쓰는 고유한 비밀번호인지 특히 확인할 자리입니다.
실제로 문제가 되는 것
현실에서 잘 고른 긴 비밀번호가 무차별 대입으로 뚫리는 일은 거의 없습니다. 뚫리는 이유는 같은 비밀번호를 다른 곳에도 썼고 그쪽이 털렸기 때문입니다. 길이는 추측으로부터, 고유함은 남의 사고로부터 나를 지킵니다. 둘 다 필요하고, 매번 새로 만드는 것이 고유함을 얻는 가장 싼 방법입니다.
Lockmint
Lockmint 의 권장 프리셋은 헷갈리는 글자를 뺀 무작위 20자를 줍니다. 결과마다 엔트로피를 비트로 보여주고 그 옆에 그게 무슨 뜻인지 한 문장으로 적어, 숫자를 스스로 해석하지 않아도 됩니다. 길이 슬라이더는 까다로운 사이트를 위해 4자에서 64자까지 열려 있고, 그 규칙을 이름 붙인 프리셋으로 저장할 수 있습니다.