# 사전 공격 (Dictionary Attack)

사전 공격(dictionary attack)은 흔히 쓰이는 비밀번호, 사전의 단어, 과거에 유출된 비밀번호 목록 등을 차례로 대입해 비밀번호나 키를 맞히는 공격입니다. 가능한 모든 조합을 시도하는 무차별 대입 공격(brute force)보다 시도 횟수가 훨씬 적어 효율적입니다.

## 자세히 알아보기

사람이 고르는 비밀번호는 무작위가 아니라 단어, 이름, 생일, 키보드 배열, 흔한 변형 규칙(첫 글자 대문자, 끝에 숫자·특수문자 붙이기)을 따릅니다. 공격자는 수억 건 규모의 유출 비밀번호 목록과 변형 규칙을 결합해 후보를 만들고, 우선순위가 높은 것부터 시도합니다.

공격은 두 가지 환경에서 이루어집니다. 온라인 공격은 실제 로그인 화면에 대입하는 방식으로, 시도 횟수 제한·잠금·CAPTCHA·2단계 인증으로 막을 수 있습니다. 오프라인 공격은 유출된 비밀번호 해시나 암호화된 파일을 공격자 장비에서 GPU로 고속 대입하는 방식으로, 서버 측 방어가 통하지 않아 훨씬 위험합니다.

서비스 운영자의 방어는 다음과 같습니다. 비밀번호를 평문이나 빠른 해시(MD5, SHA-1, 단순 SHA-256)로 저장하지 말고, 사용자마다 다른 솔트를 붙여 Argon2id, scrypt, bcrypt 같은 느린 비밀번호 해시로 저장해야 합니다. 솔트는 미리 계산한 해시 테이블(레인보우 테이블) 공격도 막습니다. 이용자는 서비스마다 다른 긴 비밀번호를 비밀번호 관리자로 생성하고, 가능하면 패스키를 쓰는 것이 좋습니다.

공격자 입장에서 효율이 높은 이유는 비밀번호 재사용입니다. 한 사이트에서 유출된 비밀번호를 다른 서비스에 그대로 넣어 보는 '크리덴셜 스터핑'은 사전 공격의 변형으로, 거래소 계정 탈취의 흔한 원인입니다.

## 블록체인·암호화폐에서는

사람이 기억한 문장에서 개인 키를 만드는 '브레인 월렛'은 사전 공격에 특히 취약해, 유명한 문구나 짧은 문장으로 만든 지갑의 자금이 실제로 탈취된 사례가 많습니다. 지갑 앱이 시드를 무작위로 생성하는 BIP-39 방식(128~256비트 엔트로피)은 사전 공격으로 맞힐 수 없지만, 사용자가 직접 고른 단어 조합이나 짧은 패스프레이즈는 예외입니다. 암호화된 지갑 파일이나 키스토어 파일이 유출되면 그 비밀번호가 오프라인 사전 공격의 표적이 됩니다.

온체인 지갑 보안에서도 사전 공격은 현실적인 위협입니다. 사람이 고른 패스프레이즈는 길이보다 예측 가능성이 문제가 됩니다.

## 쉽게 말하면

자물쇠 번호를 0000부터 다 돌리는 대신, 사람들이 즐겨 쓰는 번호 목록부터 먼저 돌려 보는 방법입니다.

---
출처: https://achivx.kr/glossary/dictionary-attack-%EC%82%AC%EC%A0%84-%EA%B3%B5%EA%B2%A9/ · ACHIVX 용어 사전 · 수정일 2026-10-20
