회원정보 데이터베이스에서 아이디는 경우 보이는 그대로 저장하지만, 비밀번호는 특정한 알고리즘으로 무장하여 저장하는데 이를 해시(hash)라고 합니다.
즉, 'abcd'와 같은 비밀번호는 특정한 함수를 이용하여 계산하면 '3QC$40D'와 같이 변한되며, 반대로 해시 값을 이용해서 원래의 비밀번호를 찾기가 매우 어렵습니다. 즉, 단방향 함수이며, 역방향으로 값을 찾으려면 거의 모든 값을 무차별로 입력하여 원래의 값과 비교하는 단순 무식(Brute-Force)한 공격(Attack) 방식이 거의 유일합니다.
레인보우 크랙 프로젝트는 해시 값에서 부터 원래의 값을 무차별 대입 방법을 사용하지 않고 나름대로의 고유한 기술(faster time-memory trade-off technolody)을 이용하여 빠른 시간 내에 찾아내는 프로젝트입니다. 이 기술에 대한 자세한 내용은 아래 링크를 참고하십시오.
http://lasecwww.epfl.ch/php_code/publications/search.php?ref=Oech03
하여튼 이 기술을 간단히 요약하면 메모리상에서 미리 계산된 특정한 데이터(테이블)를 사용하여 암호화(해시)하는데 걸리는 시간을 줄이는 기술입니다. 1980년에 Martin Hellman이 최초로 기술하였으며 1982년에 Rivest가 조회하는 메모리의 개수를 줄이는 보다 나은 기술을 선보이게 됩니다. 즉
이를 우리의 컴퓨터 생활에 적용해 보면,
랜매니저와 MD5 테이블은 아래의 레이보우 테이블에서 예로 들어 설명합니다. 가장 흥미로운 부분은 6번째 테이블로 윈도우의 암호(NTLM)를 14글자까지 입력한 경우에는 몇 분 내에 깰 수 있다는 놀라운 사실입니다.
configuration #6
| 입력할 수 있는 문자의 종류 | [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ] |
| 키 크기 | 7555858447479 (2^42.8) |
| 테이블 크기 | 64 GB |
| 성공 가능성 | 99.9% |
이 테이블은 윈도우의 비밀번호(최대 14글자)를 크랙할 수 있는데 입력할 수 있는 문자의 종류는 영문자, 숫자 그리고 일부 특수문자를 포함합니다. 하지만, 약 몇 분 이내에 99.9% 이내의 확률로 비밀번호를 알아낼 수 있습니다. 이는 한대의 컴퓨터를 이용한 것으로 여러 대의 컴퓨터를 이용하면 보다 빨리 알아 낼 수 있습니다. 예 #1: 다음과 같은 암호를 알아 내는 화면/동영상(WMP 9) }m-6BRz*Cj=J}G D2@,:H?+e5#: $ Ot\KZ?/a/qr4d^ yc~<{1!Oe}l_j| 5~|3&-K^4S#c3q 예 #2. 윈도우 비밀번호를 100자리로 입력할 때 비밀번호를 알아 낸 화면 | |
출처: 레인보우 크랙 프로젝트
다운로드: 윈도우용
