검수요청.png검수요청.png

"레인보우 테이블"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
18번째 줄: 18번째 줄:
  
 
== 종류 ==
 
== 종류 ==
===사전공격(dictionary attack)===
+
===패스워드 크래킹===
 +
====사전공격(dictionary attack)====
 
원본(평문)에 대해 미리 계산된 해쉬값들을 모아서 사전 형태로 만들어놓고, 대입해보는 공격 방법<ref name="fd">차재복, 〈[http://www.ktword.co.kr/word/abbr_view.php?m_temp1=5739  Dictionary Attack  사전 공격]〉, 《정보통신기술용어해설》, 2017-12-11</ref>
 
원본(평문)에 대해 미리 계산된 해쉬값들을 모아서 사전 형태로 만들어놓고, 대입해보는 공격 방법<ref name="fd">차재복, 〈[http://www.ktword.co.kr/word/abbr_view.php?m_temp1=5739  Dictionary Attack  사전 공격]〉, 《정보통신기술용어해설》, 2017-12-11</ref>
 
사전 공격(Dictionary attack)은 사전에 있는 단어를 입력하여 암호를 알아내거나 해독하는 컴퓨터 공격법이다. 암호를 알아내기 위한 공격은 사전의 단어를 순차적으로 입력하는 것이다. 단어를 그대로 입력할 뿐 아니라, 대문자와 소문자를 뒤섞기도 하고, 단어에 숫자를 첨부하기도 하는 등의 처리도 병행하면서 공격을 할 수 있다.
 
사전 공격(Dictionary attack)은 사전에 있는 단어를 입력하여 암호를 알아내거나 해독하는 컴퓨터 공격법이다. 암호를 알아내기 위한 공격은 사전의 단어를 순차적으로 입력하는 것이다. 단어를 그대로 입력할 뿐 아니라, 대문자와 소문자를 뒤섞기도 하고, 단어에 숫자를 첨부하기도 하는 등의 처리도 병행하면서 공격을 할 수 있다.
 
수십만 개의 단어가 수록되어 있는 사전을 컴퓨터에 자동 처리시킴으로써 짧은 시간 안에 모든 단어를 입력할 수 있기 때문에 사전단어공격은 기본적인 패스워드 탐색의 수법으로 이용된다. 이에 대처하기 위해서는 인명이나 의미가 있는 단어를 패스워드로 쓰지 말아야 하며, 기호나 숫자 등을 랜덤으로 결합시키는 방법을 사용해야 한다.
 
수십만 개의 단어가 수록되어 있는 사전을 컴퓨터에 자동 처리시킴으로써 짧은 시간 안에 모든 단어를 입력할 수 있기 때문에 사전단어공격은 기본적인 패스워드 탐색의 수법으로 이용된다. 이에 대처하기 위해서는 인명이나 의미가 있는 단어를 패스워드로 쓰지 말아야 하며, 기호나 숫자 등을 랜덤으로 결합시키는 방법을 사용해야 한다.
 
암호해독의 수법으로 사서공격을 이용하는 경우에는, 사서에 있는 단어나 무작위로 모은 평문(平文)을 모두 암호화하여 이것을 해독하고자 하는 암호에 맞춰보고 일치 여부를 조사하는 방법을 쓴다. 이에 대한 대처법으로는 암호문을 길게 하는 것이 효과적이다.
 
암호해독의 수법으로 사서공격을 이용하는 경우에는, 사서에 있는 단어나 무작위로 모은 평문(平文)을 모두 암호화하여 이것을 해독하고자 하는 암호에 맞춰보고 일치 여부를 조사하는 방법을 쓴다. 이에 대한 대처법으로는 암호문을 길게 하는 것이 효과적이다.
사전 공격은 미리 만들어진 목록에 의한 공격만 해당하며 드루킹 특검에서처럼 비밀구절(passphrase)에 특정인이 넣을만한 단어들을 추측해서 집어넣는 것은 사전 공격의 범주에 들어가지 않는다는 주장도 있다. 이런 식의 공격은 사전 지식을 이용한 추측(educated guess)을 사용한 공격이다. 이런 educated guess attack은 해커들이 선호하는 공격 중 하나이다. 레인보우 테이블도 사전공격에 속하는 하나의 해킹기술이다.<ref>〈[https://ko.wikipedia.org/wiki/%EC%82%AC%EC%A0%84_%EA%B3%B5%EA%B2%A9 사전 공격]〉, 《위키백과》</ref>
+
사전 공격은 미리 만들어진 목록에 의한 공격만 해당하며 드루킹 특검에서처럼 비밀구절(passphrase)에 특정인이 넣을만한 단어들을 추측해서 집어넣는 것은 사전 공격의 범주에 들어가지 않는다는 주장도 있다. 이런 식의 공격은 사전 지식을 이용한 추측(educated guess)을 사용한 공격이다. 이런 educated guess attack은 해커들이 선호하는 공격 중 하나이다. 레인보우 테이블도 사전공격과 비슷한 해킹기술이다.<ref>〈[https://ko.wikipedia.org/wiki/%EC%82%AC%EC%A0%84_%EA%B3%B5%EA%B2%A9 사전 공격]〉, 《위키백과》</ref>
 
+
====무차별 대입 공격====
=== 패스워드 크래킹 ===
+
무차별 대입 공격(영어: brute force attack)은 특정한 암호를 풀기 위해 가능한 모든 값을 대입하는 것을 의미한다. 대부분의 암호화 방식은 이론적으로 무차별 대입 공격에 대해 안전하지 못하며, 충분한 시간이 존재한다면 암호화된 정보를 해독할 수 있다. 하지만 대부분의 경우 모든 계산을 마치려면 실용적이지 못한 비용이나 시간을 소요하게 되어, 공격을 방지하게 한다. 암호의 '취약점'이라는 의미에는 무차별 대입 공격보다 더 빠른 공격 방법이 존재한다는 것을 의미한다.
 +
대칭키 암호의 경우 암호에 사용된 키를 알아내면 암호화된 정보를 복원할 수 있고, 여기에서 사용한 키 길이에 따라 무차별 대입 공격의 최대 소요 시간이 정해진다. 암호화 키가 n비트일 경우 가능한 값은 최대 {\displaystyle 2^{n}} 2^{n}가지가 존재한다.
 +
2009년 기준으로 128비트 이상의 키는 안전하다고 평가된다. 64비트 이하의 경우 실제 무차별 대입 공격이 성공하였다. 예를 들어, 56비트를 사용하는 DES의 경우 약 하루 안에 전체 키를 대입하는 하드웨어가 1999년에 공개되었다. 64비트 키를 사용하는 RC5의 경우 Distributed.net이라는 분산 컴퓨팅 프로젝트에서 해독한 사례가 있다.
 +
사용자 암호와 같이 암호가 특정 패턴을 이루고 있을 경우에는 대입해야 할 값의 범위를 크게 줄일 수 있다. 이 경우 사전의 단어를 조합하여 대입하는 사전 공격이 사용된다. 그러므로 암호의 패턴을 불규칙적으로 하고 자신의 개인정보와 연계되지 않도록 하는 것이 좋다.<ref>*〈[https://ko.wikipedia.org/wiki/%EB%AC%B4%EC%B0%A8%EB%B3%84_%EB%8C%80%EC%9E%85_%EA%B3%B5%EA%B2%A9 무차별 대입 공격]〉, 《위키백과》</ref>
  
 
== 대안 ==
 
== 대안 ==
41번째 줄: 45번째 줄:
 
* 차재복, 〈[http://www.ktword.co.kr/word/abbr_view.php?m_temp1=5739  Dictionary Attack  사전 공격]〉, 《정보통신기술용어해설》, 2017-12-11
 
* 차재복, 〈[http://www.ktword.co.kr/word/abbr_view.php?m_temp1=5739  Dictionary Attack  사전 공격]〉, 《정보통신기술용어해설》, 2017-12-11
 
*〈[https://ko.wikipedia.org/wiki/%EC%82%AC%EC%A0%84_%EA%B3%B5%EA%B2%A9 사전 공격]〉, 《위키백과》
 
*〈[https://ko.wikipedia.org/wiki/%EC%82%AC%EC%A0%84_%EA%B3%B5%EA%B2%A9 사전 공격]〉, 《위키백과》
 +
*〈[https://ko.wikipedia.org/wiki/%EB%AC%B4%EC%B0%A8%EB%B3%84_%EB%8C%80%EC%9E%85_%EA%B3%B5%EA%B2%A9 무차별 대입 공격]〉, 《위키백과》
 +
 +
  
  

2019년 8월 6일 (화) 10:50 판

레인보우 테이블(rainbow table)은 해시함수(MD-5, SHA-1, SHA-2 등)를 사용하여 만들어낼 수 있는 값들을 대량으로 저장한 표이다. 보통 해시함수를 이용하여 저장된 비밀번호로부터 원래의 비밀번호를 추출해 내는데 사용된다.

개요

레인보우 테이블은 해시 함수(MD5, SHA-1, SHA-2 등)을 사용하여 만들어낼 수 있는 값들을 대량으로 저장한 표이다. 1980년 마틴 헬만에 의해 소개되었고 MD5 암호화가 쉽게 복호화될 수 있다는 것을 보여준 해킹기법 중 하나이다. 하나의 패스워드에서 시작해 변이된 형태의 여러 패스워드를 생성하여 그 패스워드의 해시를 고리처럼 연결해 일정 수의 패스워드와 해시로 이루어진 테이블이다. 조합 가능한 모든 문자열을 하나씩 대입해 보는 방식으로 문제를 푸는 브루트 포스 공격을 뒷받침 해주는 역할을 하기도 하고 해시에서 평문을 추출해내기 위함의 역할도 있다.

특징

활용

레인보우 테이블을 이용한 공격

공격자의 사전 공격 방법 중 하나이다.

  1. 레인보우 테이블에 크래킹하려는 해시값과 같은 MD5 해시값이 있는지 확인
  2. 레인보우 테이블에 크래킹하려는 해시값이 없으면 크래킹할 해시값에 R함수를 적용한다. 패스워드를 구하고 다시 해시값을 구한다.
  3. 구한 해시값이 레인보우 테이블이 있는지 확인한다.
  4. 레인보우 테이블에서 확인한 해시값을 발견한 뒤 그 해시값에 해당하는 최초 패스워드를 구한다.
  5. 확인한 최초 패스워드에서 다시 패스워드와 일치하는 해시값이 나올 때까지 MD5 해시와 R함수를 반복 수행한다. 해당 해시값이 확인 되면 찾는 패스워드는 해당 해시값을 생성한 문자열이다.[1]


종류

패스워드 크래킹

사전공격(dictionary attack)

원본(평문)에 대해 미리 계산된 해쉬값들을 모아서 사전 형태로 만들어놓고, 대입해보는 공격 방법[2] 사전 공격(Dictionary attack)은 사전에 있는 단어를 입력하여 암호를 알아내거나 해독하는 컴퓨터 공격법이다. 암호를 알아내기 위한 공격은 사전의 단어를 순차적으로 입력하는 것이다. 단어를 그대로 입력할 뿐 아니라, 대문자와 소문자를 뒤섞기도 하고, 단어에 숫자를 첨부하기도 하는 등의 처리도 병행하면서 공격을 할 수 있다. 수십만 개의 단어가 수록되어 있는 사전을 컴퓨터에 자동 처리시킴으로써 짧은 시간 안에 모든 단어를 입력할 수 있기 때문에 사전단어공격은 기본적인 패스워드 탐색의 수법으로 이용된다. 이에 대처하기 위해서는 인명이나 의미가 있는 단어를 패스워드로 쓰지 말아야 하며, 기호나 숫자 등을 랜덤으로 결합시키는 방법을 사용해야 한다. 암호해독의 수법으로 사서공격을 이용하는 경우에는, 사서에 있는 단어나 무작위로 모은 평문(平文)을 모두 암호화하여 이것을 해독하고자 하는 암호에 맞춰보고 일치 여부를 조사하는 방법을 쓴다. 이에 대한 대처법으로는 암호문을 길게 하는 것이 효과적이다. 사전 공격은 미리 만들어진 목록에 의한 공격만 해당하며 드루킹 특검에서처럼 비밀구절(passphrase)에 특정인이 넣을만한 단어들을 추측해서 집어넣는 것은 사전 공격의 범주에 들어가지 않는다는 주장도 있다. 이런 식의 공격은 사전 지식을 이용한 추측(educated guess)을 사용한 공격이다. 이런 educated guess attack은 해커들이 선호하는 공격 중 하나이다. 레인보우 테이블도 사전공격과 비슷한 해킹기술이다.[3]

무차별 대입 공격

무차별 대입 공격(영어: brute force attack)은 특정한 암호를 풀기 위해 가능한 모든 값을 대입하는 것을 의미한다. 대부분의 암호화 방식은 이론적으로 무차별 대입 공격에 대해 안전하지 못하며, 충분한 시간이 존재한다면 암호화된 정보를 해독할 수 있다. 하지만 대부분의 경우 모든 계산을 마치려면 실용적이지 못한 비용이나 시간을 소요하게 되어, 공격을 방지하게 한다. 암호의 '취약점'이라는 의미에는 무차별 대입 공격보다 더 빠른 공격 방법이 존재한다는 것을 의미한다. 대칭키 암호의 경우 암호에 사용된 키를 알아내면 암호화된 정보를 복원할 수 있고, 여기에서 사용한 키 길이에 따라 무차별 대입 공격의 최대 소요 시간이 정해진다. 암호화 키가 n비트일 경우 가능한 값은 최대 {\displaystyle 2^{n}} 2^{n}가지가 존재한다. 2009년 기준으로 128비트 이상의 키는 안전하다고 평가된다. 64비트 이하의 경우 실제 무차별 대입 공격이 성공하였다. 예를 들어, 56비트를 사용하는 DES의 경우 약 하루 안에 전체 키를 대입하는 하드웨어가 1999년에 공개되었다. 64비트 키를 사용하는 RC5의 경우 Distributed.net이라는 분산 컴퓨팅 프로젝트에서 해독한 사례가 있다. 사용자 암호와 같이 암호가 특정 패턴을 이루고 있을 경우에는 대입해야 할 값의 범위를 크게 줄일 수 있다. 이 경우 사전의 단어를 조합하여 대입하는 사전 공격이 사용된다. 그러므로 암호의 패턴을 불규칙적으로 하고 자신의 개인정보와 연계되지 않도록 하는 것이 좋다.[4]

대안

솔티드 해시(Salted hashed)

기존에는 패스워드만 해시함수에 통과시켰으나 최근에는 가입 시간이나 난수를 비밀번호와 같이 해시값에 포함시킨다. 이 때 추가적으로 포함된 가입 시간이나 난수를 솔트(salt)라고 한다. 이는 서로 다른 계정이 같은 비밀번호를 사용하더라고 솔트가 다르면 완전 다른 해시값이 생성되며, 설령 같은 해시값을 같더라 하여도 솔트 값이 전혀 다르기 때문에 평문을 유추하기 힘들다는 논리다. 일방향성이 아닌 암호화/역암호화시 둘다 사용되는(쌍으로 이루어지는) 솔트는, 같은 솔트가 사용되어야 하고 레인보우 테이블에 의한 암호 크랙 공격(사전 공격)을 어느정도 무력화시킬 수 있다.[2]

블룸 필터(Bloom filter)

블룸 필터는 원소가 집합에 속하는지 여부를 검사하는데 사용되는 확률적 자료 구조이다. 즉, 개발자들은 사용자가 회원 가입을 할때 레인보우 테이블에 있는 비밀번호에 대하여 사용을 금지하는 방법을 선택하는데 이러한 과정속에서 금지된 비밀번호를 걸러 내는 역할을 한다. 이 방법을 사용하면 사용자는 취약한 비밀번호의 사용이 금지되어 공격자가 가지고 있는 패스워드 사전도 취약하게 된다. 설령 공격자가 갱신을 한 패스워드 사전을 가지고 있다 하여도 개발자가 해당 사전을 수집할 수 있으므로 금지 비밀번호를 갱신하면 된다.[5]

각주

  1. 달콤맛마이쮸, 〈https://dalkom7.tistory.com/12 유동현]〉, 《네이버 블로그》, 2016-09-18
  2. 2.0 2.1 차재복, 〈Dictionary Attack 사전 공격〉, 《정보통신기술용어해설》, 2017-12-11
  3. 사전 공격〉, 《위키백과》
  4. *〈무차별 대입 공격〉, 《위키백과》
  5. 수니감자, 〈(보안)SALTED HASH / BLOOM FILTER〉, 《티스토리》, 2016-10-23

참고자료




같이 보기


  검수요청.png검수요청.png 이 레인보우 테이블 문서는 블록체인 기술에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.