최근 수정 시각 : 2024-04-29 16:59:29

사전 공격

'''이론 컴퓨터 과학
{{{#!wiki style="display: inline-block; font-family:Times New Roman, serif;font-style:italic"'''
{{{#!wiki style="margin: 0 -10px -5px; min-height: calc(1.5em + 5px)"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin: -5px -1px -11px"
<colbgcolor=#a36> 이론
기본 대상 수학기초론{수리논리학(논리 연산) · 계산 가능성 이론 · 범주론 · 집합론} · 이산수학(그래프 이론) · 수치해석학 · 확률론통계학 · 선형대수학
다루는 대상과 주요 토픽
계산 가능성 이론 재귀함수 · 튜링 머신 · 람다대수 · 처치-튜링 명제 · 바쁜 비버
오토마타 이론 FSM · 푸시다운 · 튜링 머신(폰노이만 구조) · 정규 표현식 · 콘웨이의 생명 게임 · 형식언어
계산 복잡도 이론 점근 표기법 · 튜링 기계^고전, 양자, 비결정론적, 병렬 임의접근 기계^ · 알고리즘 · 자료구조 · 알고리즘 패러다임(그리디 알고리즘, 동적 계획법)
정보이론 데이터 압축(무손실 압축 포맷 · 손실 압축 포맷) · 채널 코딩(채널 용량) · 알고리즘 정보 이론(AIT) · 양자정보과학
프로그래밍 언어이론 프로그래밍 언어(함수형 언어 · 객체 지향 프로그래밍 · 증명보조기) · 메타 프로그래밍 · 유형 이론 · 프로그래밍 언어 의미론 · 파싱 · 컴파일러 이론
주요 알고리즘 및 자료구조
기초 정렬 알고리즘 · 순서도 · 탐색 알고리즘
추상적 자료형 및 구현 배열^벡터^ · 리스트^연결 리스트^ · 셋(set)^레드-블랙 트리, B-트리^ · 우선순위 큐^, 피보나치 힙^
수학적 최적화 조합 최적화 외판원 순회 문제 · 담금질 기법 · 유전 알고리즘 · 기계학습
볼록 최적화 내부점 방법 · 경사하강법
선형계획법 심플렉스법
계산 수론 및 암호학 밀러-라빈 소수판별법 · Pollard-rho 알고리즘 · 쇼어 알고리즘 · LLL 알고리즘 · 해시(MD5 · 암호화폐 · 사전 공격(레인보우 테이블) · SHA) · 양자 암호
대칭키 암호화 방식 블록 암호 알고리즘(AES · ARIA · LEA · Camellia) · 스트림 암호 알고리즘(RC4)
공개키 암호화 방식 공개키 암호 알고리즘(타원 곡선 암호 · RSA) · 신원 기반 암호 알고리즘(SM9)
계산기하학 볼록 껍질 · 들로네 삼각분할 및 보로노이 도형^Fortune의 line-sweeping 알고리즘^ · 범위 탐색^vp-tree, R-tree^ · k-NN
그래프 이론 탐색^BFS, DFS, 다익스트라 알고리즘, A* 알고리즘^ · 에드몬드-카프 · 크루스칼 알고리즘 · 위상 정렬 · 네트워크 이론
정리
정지 문제대각선 논법 · 암달의 법칙 · P-NP 문제미해결 · 콜라츠 추측미해결
틀:이산수학 · 틀:수학기초론 · 틀:컴퓨터공학 }}}}}}}}}


1. 개요2. 방어 방법3. 기타4. 관련 문서

1. 개요

/ dictionary attack

암호화되어 저장된 비밀번호를 알아내기 위한 공격방법 가운데 하나. 주로 암호학에서 쓰이고는 있지만 동적 계획법 중 하나라 생각하면 알고리즘에도 포함될 수 있다.

'0000', '1234', 'qwerty', 'password', '1q2w3e4r'처럼 비밀번호로 자주 쓰이는 문자열들을 대입해서 암호를 찾아내는 방법이다. 널리 사용되는 단어나 날짜, 전화번호 등과 같은 패턴들을 사전 형태로 만들고 이들을 조합하는 방식으로 공격한다. 브루트 포스와 마찬가지로 뚫릴 때까지 끝없이 시도하는 임의 대입법이라 삽질로 생각하는 사람들이 많은데, 의외로 적중확률이 높은 공격방법이다. 이는 사람들이 기억하기 쉬운 단순한 단어들을 조합해 사용하거나, 또는 자신의 생일이나 전화번호, 이름 이니셜 등과 같은 특정한 패턴을 사용하는 경향이 있기 때문이다.

특히, 사람들은 보통 귀차니즘에 빠져서 동일한 비밀번호를 쓴다거나 거의 비슷한 비밀번호를 쓰는 경향이 많다. 게다가 한 번 털린 비밀번호는 공격자가 사전에 등록해놓고 계속 이용해먹는 경우가 많기 때문에, 하나가 털렸으면 죄다 털린다. 그렇기에 어디서 비밀번호가 노출된 적이 있다면 비밀번호 패턴을 완전히 바꾸는 것이 가장 바람직한 방법이다.

참고로 숫자나 특수문자를 썼다고 자신의 비밀번호는 안전하다고 믿는 사람들이 있는데, 지나치게 과신하는 것은 금물이다. 어차피 사람들 생각하는 것이 다르다곤 하지만 실제 까보면 별 차이도 없을 뿐더러, 대개 간단하게 조합하는 경향이 있기 때문이다. 대표적으로 "he11o^th3r3"같은 leet체는 거의 직빵으로 털린다.

비밀번호가 해커에게 유출된 적이 있는 것인지 확인해 주는 사이트도 있다. 만일 자신이 쓰는 비밀번호가 유출된 적이 있다면 바꾸는 것이 좋다. 1234나 1234qwer처럼 간단한 비밀번호는 수십~수백만번 털렸다고 뜬다. 심지어 Pneumonoultramicroscopicsilicovolcanoconiosis도 1회 털렸다고 한다.

2. 방어 방법

사전 공격에 강한 비밀번호를 만드는 방법은 어떤 사전을 찾아봐도 도저히 나올 수 없는 조합으로 만드는 것이다. 알다시피 사전 공격은 적중도가 높기는 하지만, 생일, 단어 등과 전혀 상관없이 의식의 흐름대로 비밀번호를 막 지은 뒤에 달달 외워 사용하면 충분히 방어할 수 있다. 한국의 경우 dlqudals처럼 영타로 치면 외국 쪽에서는 뭥미 수준의 조합이 된다. (다만, 해커가 한국인이거나 한국어를 아는 해커가 공격할 수 있으므로 실제로는 저렇게 지으면 안 된다. 위의 사이트에서 확인 결과 이미 털렸다.섹스 영어체도 털렸다.)[1] 하지만 이렇게 만든 암호는 해커는 물론 사용자의 '사전'에도 없는 것이라 기억하기 참으로 곤란하다.

이를 깨는 방법으로 레인보우 테이블이 있긴 한데, 원문에 솔트 문자열을 끼워넣는 것으로 어느 정도 대응이 가능하다. 이 경우는 특히 해쉬에 주로 응용된다.

3. 기타

SK컴즈 개인정보 유출 사건MD5가 보안에 취약하다는 이야기가 많이 나왔는데, 이 문제와 관련이 있다. 나온 지 오래된데다 사용률이 높다 보니 사전 분량도 방대하기 때문.

본격 해킹 게임 업링크에서도 등장한다. 다른 해킹 어플리케이션들에 비해 가격이 싸며 실제로도 꽤 싼 편이다. 싸구려는 인터넷만 잘 뒤져도 공짜로 얻을 수 있고, 한국어용 알파벳 사전 파일도 중국쪽에서 싸게 싸게 만든다.

4. 관련 문서




[1] 일단 한국어 단어, 혹은 한국인 이름 영어로 친 것들은 요즘은 거의 사전에 있다고 보면 될 것이다.