레인보 테이블

레인보 테이블(영어: rainbow table)은 해시 함수를 사용하여 변환 가능한 모든 해시 값을 저장시켜 놓은 표이다. 보통 해시 함수를 이용하여 저장된 비밀번호로부터 원래의 비밀번호를 추출해 내는데 사용된다.

단순화한 레인보 테이블.

레인보 테이블은 일반적으로 비밀번호 해시 크래킹을 위해 암호화 해시 함수의 출력을 캐싱하기 위해 미리 계산된 표이다. 비밀번호는 일반적으로 일반 텍스트 형식이 아닌 해시 값으로 저장된다. 해시된 비밀번호 데이터베이스가 공격자의 손에 들어간 경우 사전 계산된 레인보 테이블을 사용하여 일반 텍스트 비밀번호를 복구할 수 있다. 이 공격에 대한 일반적인 방어는 각 비밀번호를 해시하기 전에 각 비밀번호에 "솔트 (암호학)"를 추가하는 키 파생 기능을 사용하여 해시를 계산하는 것이다. 서로 다른 비밀번호는 해시와 함께 일반 텍스트로 저장되는 서로 다른 솔트를 수신한다.

레인보 테이블은 시공간 절충의 실제적인 예이다. 모든 시도에서 해시를 계산하는 무차별 대입 공격보다 컴퓨터 처리 시간과 저장 공간을 덜 사용하지만, 데이터를 저장하는 간단한 테이블보다 처리 시간과 저장 공간을 더 많이 사용한다. 가능한 모든 비밀번호의 해시이다.

레인보 테이블은 필립 외슬린이 마틴 헬만의 더 빠르고 간단한 알고리즘을 적용하여 발명했다.

같이 보기 편집

출처 편집

외부 링크 편집