레인보우 테이블

1 개요[ | ]

rainbow table
레인보우 테이블
  • 해시 함수의 입력(예: 비밀번호)과 출력 해시값 간의 대응을 미리 계산·저장한 테이블
  • 데이터베이스에 저장된 해시를 평문으로 역추적(crack)할 때 사용된다.
  • 마틴 헬만(Martin Hellman)의 시공간 절충(time–memory trade-off) 개념 기반
  • 필립 외슬린(Philippe Oechslin)이 2003년 제안한 색인화된 고속 테이블

2 작동 원리[ | ]

  • 테이블 생성: 평문 후보(P)에 해시 함수(H)와 감소 함수(R)를 반복 적용해 체인 생성 → 시작값과 끝값만 저장
  • 크래킹 과정: 대상 해시를 역방향으로 체인에 적용 → 일치하는 끝값 발견 시 해당 체인을 따라 평문 복원

3 장단점[ | ]

  • 장점
    • 브루트포스보다 빠르고 계산량 적음
    • 사전 공격보다 저장 공간 효율적
  • 단점
    • 테이블 크기가 큼 (수십~수백 GB 이상)
    • 충돌(collisions)과 감소 함수 설계가 복잡

4 대응 방법[ | ]

  • 솔트(salt) 사용 → 각 비밀번호에 랜덤 값 추가 시 테이블 무력화
  • 키 스트레칭(bcrypt, PBKDF2 등) → 해시 연산을 느리게 만들어 공격 비용 상승
  • 다단계 인증(MFA) → 비밀번호 유출 시에도 추가 인증 요구

5 같이 보기[ | ]

6 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}