비밀번호의 강도를 알려주는 zxcvbn
dev | 2023-04-23
사용자가 추측하기 쉬운 비밀번호를 사용하면 계정이 탈취될 수 있기 때문에 보통 비밀번호 규칙을 정해서 너무 쉬운 비밀번호는 사용 하지 못하게 한다. 최소 길이를 제한하거나 영어 대소문자나 숫자, 특수문자를 포함하도록 하는 경우가 많다.
하지만 다양한 기호를 섞어서 비밀번호를 만들기 보다는 16자 정도의 충분히 긴 비밀번호를 사용하는 것이 보안상 더 도움이 되는 듯 하다. zxcvbn 소개 글에도 언급되어 있는 xkcd의 만화가 좋은 예를 보여주고 있다. 'Tr0ub4dour&3' 같이 복잡한 기호를 사용했지만 짧은 비밀번호 보다 'correcthorsebatterystaple' 같이 쉬운 단어를 사용했지만 충분히 긴 비밀번호가 해커가 추측도 힘들고 사용자가 기억하기도 더 쉽다는 내용이다. 'Passw0rd!' 같은 비밀번호도 복잡한 기호를 섞어서 비밀번호 규칙은 통과하지만 실제로는 많이 공유되어서 취약한 비밀번호이다. 또한 'admin'이나 '1234'같이 많이 사용되는 문자를 섞어 사용하는 것도 비밀번호 강도를 낮추게 된다.
이러한 고민의 영향을 받아 쉽게 사용할 수 있도록 고안된 비밀번호 강도를 나타내주는 라이브러리가 바로 Dropbox에서 만든 zxcvbn이다. 많이 사용되는 구문이나 사람들이 자주 사용하는 비밀번호도 사전으로 만들어서 강도 계산에 사용한다. zxcvbn('Passw0rd!')
와 같이 비밀번호를 넣어주면 비밀번호에 대한 다양한 정보를 알려준다. score
를 이용하면 간단하게 비밀번호 강도를 보여주는 것이 가능하다.
Strength:
라이브러리가 사전을 포함하고 있어서 803KB로 용량이 큰데 번들에 포함시키기 보다는 동적으로 로딩하는 것을 권장하고 있다.
큰 사이트들이 비밀번호 강도 검사를 어떻게 하고 있는지 살펴봤는데 'Passw0rd!' 같은 공개된 비밀번호도 대부분 사용할 수 있고 'correcthorsebatterystaple' 같이 충분히 긴 비밀번호는 사용할 수 없게 하는 경우가 많았다. 기호를 섞어 쓰는 룰기반의 비밀번호 규칙을 쓰고 있어서 생기는 한계다. 요즘은 브라우저나 운영체제에서 제공하는 비밀번호 관리 기능을 많이 사용하는데 여기서 생성한 충분히 강력한 비밀번호도 사이트의 규칙과 맞지 않아서 사용하지 못하는 경우도 있다. 룰기반으로 제한을 두기 보다는 비밀번호 강도를 계산하고 알려주는 방식으로 바뀌면 이러한 불편한 점도 사라지고 비밀번호를 관리해주는 툴도 잘 사용할 수 있어서 전반적인 보안 강화에 도움이 되지 않을까 싶다.
Site | Passw0rd! | qwER43@! | Tr0ub4dour&3 | correcthorsebatterystaple |
---|---|---|---|---|
PasswordMonster | Very Weak | Weak | Medium | Very Strong |
Search Space | 1h 46m 12s | 1m 7s 200ms | 1.74 centuries | 7.83 hundred billion centuries |
Tools43 | low | guessable | guessable | strong |
사용가능 | 사용가능 | 사용가능 | 사용가능 | |
JS Pattern | 4 | 4 | 4 | 1 |
The Password Meter | Strong | Very Strong | Very Strong | Weak |
Naver | 안전 | 안전 | 안전 | 사용불가 |
Kakao | - | - | - | 숫자, 특수문자를 함께 입력해 주세요. |
dcinside | 안전 | 안전 | 안전 | 사용불가 |
coupang | 사용 가능한 비밀번호입니다. | 사용 가능한 비밀번호입니다. | 사용 가능한 비밀번호입니다. | 영문/숫자/특수문자 2가지 이상 조합 (8~20자) |
KT | 사용가능 | 사용가능 | 사용가능 | 사용불가 |
SKT | 안전한 비밀번호 | 안전한 비밀번호 | 안전한 비밀번호 | 영문, 숫자, 특수문자를 모두 이용해 8자 이상을 입력해주세요. |
Strong | Strong | Strong | Weak | |
fmkorea | 입력가능 | 입력가능 | 입력가능 | 입력가능 |
namu | 입력가능 | 입력가능 | 입력가능 | 입력가능 |
RULIWEB | 사용가능 | 사용가능 | 사용가능 | 사용가능 |
* namu는 1을 허용. RULIWEB은 12341234를 허용.
Comments