어떤 알고리즘을 쓰나요?
zxcvbn입니다. 단어·이름·도시·날짜·키보드 패턴 사전에서 비밀번호를 찾아보고 몇 번 시도하면 맞힐 수 있는지 추정하는 오픈 소스 라이브러리입니다. 예전에는 PasswordMeter(2006)를 썼습니다. 문자 종류의 다양함을 세는 방식이라 Password1!을 「매우 강함」이라 하고 무작위 다섯 단어 구문을 「매우 약함」이라 했습니다. 정확히 반대였습니다.
대문자나 기호의 개수는 세지 않습니다. 단어·이름·도시·날짜·키보드 패턴 사전에서 비밀번호를 찾아보고, 실제로 몇 번 시도하면 맞힐 수 있는지 추정합니다.
모든 분석은 브라우저 안에서만 이루어집니다. 정보를 전송하거나 결과를 저장하지 않습니다.
기본값으로 비밀번호를 숨깁니다. 측면 버튼으로 표시 여부를 전환할 수 있습니다.
판정은 백분율이 아니라 시간에서 나옵니다.
무차별 대입으로 뚫는 데 걸리는 시간
알려진 패턴을 찾지 못했으므로 이 수치는 상한입니다. 비밀번호가 정말 무작위라면 맞지만, 직접 생각해 낸 것이라면 실제로는 훨씬 낮을 가능성이 큽니다.
무차별 대입은 초당 1012회 시도를 기준으로 추정합니다. 빠른 해시에 대한 오프라인 공격의 규모이며, 생성기와 같은 모델입니다. bcrypt나 Argon2 같은 느린 해시에서는 이 수치가 여러 자릿수 올라갑니다.
유출된 비밀번호·단어·이름·성·도시·날짜·키보드 경로 사전에서 찾아보고, 거꾸로 쓰기나 a를 @로 바꾸기 같은 흔한 수법도 알아냅니다. 오픈소스인 zxcvbn-ts를 전부 브라우저 안에서 실행합니다.
알 수 없는 것: 패턴을 찾으면 그 수치는 믿을 만합니다. 그 패턴이 공격자가 쓸 지름길이기 때문입니다. 못 찾으면 수치는 상한일 뿐입니다. 당신의 패턴을 모른다는 뜻이지, 없다는 뜻이 아닙니다.
그래서 이 사이트에서 유일하게 정확한 수치는 생성기에 있습니다. 거기서는 기계가 무작위로 만들기 때문에 조합의 수를 정확히 압니다. 여기서는 추정만 가능합니다.
비밀번호를 어디로도 보내지 않고 저장하지도 않습니다. 네트워크를 지나는 것은 분석기뿐이며, 입력을 시작할 때 내려받습니다.
판정은 그것을 깨는 데 걸리는 시간에서 나옵니다. 문자 종류의 다양함에 점수를 더한 합계가 아닙니다. 「매우 약함」은 오프라인 공격에 1초도 못 버틴다는 뜻이고, 「매우 강함」은 십만 년이 넘는다는 뜻입니다. 그래도 비밀번호는 절대 재사용하지 말고 제대로 된 관리자에 기대세요.
문자를 섞고 예측 가능한 패턴(1234, qwerty, 개인적인 날짜)은 피하세요. 주황색 경고가 뜨면 읽어 보세요. 당신의 열쇠를 실제로 약하게 만드는 것을 가리킵니다.