비밀번호를 바꾸라는 알림이 뜰 때마다 머리가 아프다. "영문 대소문자 + 숫자 + 특수문자 포함, 8자 이상"이라는 조건을 만족시키면서 기억할 수 있는 조합을 짜내는 건 쉽지 않다. 결국 기존 비밀번호 끝에 !나 1을 붙이는 식으로 때우게 되는데, 이게 보안에는 거의 도움이 안 된다.
자주 쓰이는 비밀번호, 왜 위험한가
해커들이 가장 먼저 시도하는 게 "사전 공격"이다. 자주 사용되는 비밀번호 목록을 차례대로 넣어보는 방식인데, 상위 10개만 보면 얼마나 예측 가능한지 알 수 있다.
- 123456
- password
- 12345678
- qwerty
- abc123
이런 비밀번호는 1초도 안 걸려서 뚫린다. 본인 이름+생년월일 조합도 SNS만 뒤지면 알아낼 수 있어서 마찬가지로 취약하다.
비밀번호 강도, 길이가 핵심이다
같은 조합이라도 길이에 따라 보안 수준이 극적으로 달라진다.
| 비밀번호 길이 | 소문자만 | 대소문자+숫자 | 대소문자+숫자+특수문자 |
|---|---|---|---|
| 8자리 | 수 초 | 수 시간 | 수 일 |
| 12자리 | 수 주 | 수백 년 | 수만 년 |
| 16자리 | 수백 년 | 수억 년 | 사실상 불가 |
8자리 비밀번호는 특수문자를 넣어도 현대 컴퓨팅 파워로 며칠이면 깨진다. 12자리 이상이면 현실적으로 무차별 대입이 불가능해진다.
참고 위 수치는 이론적 추정치이며 실제 해킹 속도는 하드웨어, 알고리즘에 따라 다르다. 하지만 길이가 길수록 기하급수적으로 안전해진다는 원칙은 동일하다.
사이트마다 다른 규칙에 대응하는 법
문제는 사이트마다 요구하는 조건이 제각각이라는 점이다.
- "특수문자 필수" → @, #, $ 등 포함
- "특수문자 사용 불가" → 영문+숫자만
- "8~16자 이내" → 길이 제한
- "연속 3자 이상 같은 문자 금지" → aaa, 111 불가
매번 조건에 맞는 비밀번호를 머리로 만들기보다, 랜덤 비밀번호 생성기에서 길이와 포함할 문자 유형을 선택하면 조건에 맞는 비밀번호가 바로 나온다. 생성된 비밀번호의 강도도 표시되니까 "양호" 이상인지 확인하고 쓰면 된다.
비밀번호 관리 팁
사이트마다 다른 비밀번호를 써라
하나의 비밀번호를 여러 사이트에 돌려쓰면, 한 곳에서 유출됐을 때 나머지 계정이 전부 위험해진다. "크리덴셜 스터핑"이라고 하는데, 유출된 아이디/비밀번호 조합을 다른 사이트에 자동으로 대입하는 공격이다.
비밀번호 관리자 앱을 쓰는 것도 방법이다
사이트마다 다른 비밀번호를 전부 기억하는 건 현실적으로 불가능하다. 크롬이나 삼성 패스 같은 내장 비밀번호 관리자를 활용하거나, 별도 관리 앱을 쓰면 마스터 비밀번호 하나만 기억하면 된다.
2단계 인증을 함께 켜라
비밀번호가 아무리 복잡해도 피싱에 당하면 소용없다. OTP 앱이나 SMS 인증을 추가로 설정해두면 비밀번호가 유출되더라도 2차 방어가 가능하다.
비밀번호 하나가 뚫리면 이메일, 금융, SNS까지 연쇄적으로 피해가 번진다. 귀찮더라도 사이트별로 다른 비밀번호를 쓰고, 직접 조합을 짜내기 어려우면 생성기를 쓰는 게 훨씬 안전하다.