사전 공격 (Dictionary Attack)

정보보안학
한 줄 정의: 사람들이 자주 쓰는 단어·문구를 모아 둔 목록을 순서대로 대입해 비밀번호를 알아내려는 공격입니다.

쉽게 풀면

모든 경우의 수를 무작정 다 시도하는 대신, '사람들이 실제로 잘 쓰는 비밀번호'를 모아 둔 목록을 하나씩 넣어 봅니다. 많은 사람이 흔한 단어나 뻔한 조합을 쓰기 때문에, 이 목록만으로도 상당수 계정이 뚫립니다. 무작정 다 해보는 것보다 훨씬 효율적입니다.

왜 중요한가

사전 공격은 사용자들의 비밀번호 선택 습관이 예측 가능하다는 약점을 파고들어, 무차별 대입보다 훨씬 적은 시도로 계정을 뚫습니다. 안전한 비밀번호 정책과 해시 처리의 필요성을 설명하는 대표적 위협입니다.

논문에서는 이렇게 쓰입니다

"유출된 해시 목록에 대해 자주 쓰이는 비밀번호 사전을 대입하는 오프라인 사전 공격으로, 솔트를 적용하지 않은 계정 다수의 원문 비밀번호가 복원되었다."

조금 더 깊게 보면

사전 공격은 모든 조합을 시도하는 무차별 대입 공격과 대비되며, 흔한 단어 목록을 쓴다는 점이 다릅니다. 실무에서는 단어에 숫자·특수문자를 덧붙인 변형까지 규칙으로 생성해 대입합니다. 방어책으로는 각 비밀번호에 고유한 솔트를 더해 해시하고, bcrypt·Argon2처럼 일부러 느린 해시 함수를 써서 대입 속도를 떨어뜨립니다. 온라인 공격은 시도 횟수 제한으로, 오프라인 공격은 강한 해시로 대응합니다.

주의할 점

여러 계정에 조금씩 흔한 비밀번호를 시도하는 패스워드 스프레이나, 모든 조합을 시도하는 무차별 대입과는 전략이 다릅니다. 솔트 없는 해시는 미리 계산된 표(레인보 테이블)로 순식간에 뚫릴 수 있어 반드시 솔트를 써야 합니다.

관련 용어