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

레인보우 테이블

위키원
wlgns12244 (토론 | 기여)님의 2019년 8월 6일 (화) 10:25 판 (활용)
이동: 둘러보기, 검색

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

개요

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

특징

활용

사전공격(dictionary attack)

패스워드 크래킹

패스워드 크래킹(password cracking)이란 시스템의 비밀번호를 각종 툴(프로그램)을 통해 알아내는 공격 기법이다. 패스워드 트래킹에는 3가지 공격 방법이 있다.

  • 사전 대입 공격
  • 무작위 대입 공격
  • 레인보우 테이블을 이용한 공격

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

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

대안

솔티드 해시(Salted hashed)

기존에는 패스워드만 해시함수에 통과시켰으나 최근에는 가입 시간이나 난수를 비밀번호와 같이 해시값에 포함시킨다. 이 때 추가적으로 포함된 가입 시간이나 난수를 솔트(salt)라고 한다. 이는 서로 다른 계정이 같은 비밀번호를 사용하더라고 솔트가 다르면 완전 다른 해시값이 생성되며, 설령 같은 해시값을 같더라 하여도 솔트 값이 전혀 다르기 때문에 평문을 유추하기 힘들다는 논리다.

블룸 필터(Bloom filter)

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

각주

  1. 달콤맛마이쮸, 〈https://dalkom7.tistory.com/12 유동현]〉, 《네이버 블로그》, 2016-09-18
  2. 수니감자, 〈(보안)SALTED HASH / BLOOM FILTER〉, 《티스토리》, 2016-10-23

참고자료

같이 보기


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