Dictionary Attack
事前에 하는 공격이 아니다
사전으로 맞으면 아프긴 하겠지만 그런 의미도 아니다.
암호화되어 저장된 비밀번호를 알아내기 위한 공격방법 가운데 하나.
주로 암호학에서 쓰이고는 있지만 동적 계획법 중 하나라 생각하면 알고리즘에도 포함될 수 있다.
1 개요
보통 널리 사용되는 단어나 날짜, 전화번호 등과 같은 패턴들을 사전형태로 만들고 이들을 조합하는 방식으로 공격한다. 얼핏 들어서는 단순 대입법 못지않게 삽질로 생각하는 사람들이 많지만 의외로 적중확률이 높은 공격방법이다. 이는 사람들이 자신의 생일이나 전화번호, 이름 이니셜 등과 같은 특정한 패턴을 사용하는 경향이 있기 때문이다.
특히, 사람들은 보통 귀차니즘에 빠져서 동일한 비밀번호를 쓴다거나 거의 비슷한 비밀번호를 쓰는 경향이 많다. 게다가 한 번 털린 비밀번호는 공격자가 사전에 등록해놓고 계속 이용해먹는 경우가 많기 때문에, 하나가 털렸으면 죄다 털린다. 그렇기에 어디서 비밀번호가 노출된 적이 있다면 비밀번호 패턴을 완전히 바꾸는 것이 가장 바람직한 방법이다.
참고로 숫자나 특수문자를 썼다고 자신의 비밀번호는 안전하다고 믿는 사람들이 있는데, 지나치게 과신하는 것은 금물이다. 어차피 사람들 생각하는 것이 다르다곤 하지만 실제 까보면 별 차이도 없을 뿐더러, 대개 간단하게 조합하는 경향이 있기 때문이다. 대표적으로 "he11o^there"같은 건 거의 직빵으로 털린다.
2 방어 방법
사전 공격에 강한 비밀번호를 만드는 방법은 어떤 사전을 찾아봐도 도저히 나올 수 없는 조합으로 만드는 것이다. 알다시피 사전 공격은 적중도가 높기는 하지만 100%는 아닌지라 ]-[|/34<#!_@-zv_@ 어떻게 외울까같은 식으로 지으면 충분히 방어할 수 있다. 한국의 경우 dlqudals 처럼 영타로 치면 외국 쪽에서는 뭥미 수준의 조합이 된다. (다만, 한국어를 아는 해커가 공격할 수 있으므로 실제로는 저렇게 지으면 안된다.) 하지만 이렇게 만든 암호는 해커는 물론 사용자의 '사전'에도 없는 것이라 기억하기 참으로 곤란하다.
이를 깨는 방법으로 레인보우 테이블이 있긴 한데, 원문에 솔트 문자열을 끼워넣는 것으로 어느정도 대응이 가능하다. 이 경우는 특히 해쉬에 주로 응용된다.
3 기타
SK컴즈 개인정보 유출 사건때 MD5가 보안에 취약하다는 이야기가 많이 나왔는데, 이 문제와 관련이 있다. 나온 지 오래된데다 사용률이 높다 보니 사전 분량도 방대하기 때문.
본격 해킹 게임 업링크에서도 등장한다. 다른 해킹 어플리케이션들에 비해 가격이 싸다.[1]- ↑ 실제로도 꽤 싼 편이다. 싸구려는 인터넷만 잘 뒤져도 공짜로(...)얻을 수 있고, 한국어용 알파벳 사전 파일도 중국쪽에서 싸게 싸게 만든다.