레인보우 테이블 : 암호의 최악의 악몽

그들의 귀여운 이름이 당신을 속일 수있게하지 마십시오,이 것들은 무서운 것입니다.

레인보우 테이블을 절충주의 다채로운 가구로 생각할 수도 있지만, 우리가 논의 할 대상이 아닙니다. 우리가 이야기하고있는 레인보우 테이블은 암호 를 해독하는 데 사용되며 해커의 끊임없이 성장하는 병기 또 다른 도구입니다.

도대체 레인보우 테이블은 무엇입니까? 그렇게 귀엽고 귀여워하는 이름을 가진 무언가가 어떻게 그렇게 해로울 수 있겠습니까?

레인보우 테이블의 기본 개념

저는 엄지 드라이브를 서버 나 워크 스테이션에 연결하고 재부팅 한 후, 엄지 드라이브에 사용자 이름과 암호가 들어있는 보안 데이터베이스 파일을 복사하는 프로그램을 실행 한 나쁜 사람입니다.

파일의 암호가 암호화되어 읽을 수 없습니다. 파일 (또는 적어도 관리자 암호)에서 암호를 해독해야 시스템에 액세스 할 수 있습니다.

암호를 해독하기위한 옵션은 무엇입니까? John the Ripper와 같은 무차별 공격 암호 크래킹 프로그램을 사용해 볼 수 있습니다.이 프로그램은 암호 파일을 가볍게 두들겨 암호의 가능한 모든 조합을 반복적으로 추측하려고 시도합니다. 두 번째 옵션은 일반적으로 사용되는 수십만 개의 암호가 들어있는 암호 해독 사전을로드하고 조회가 있는지 확인하는 것입니다. 암호가 충분히 강하면이 방법을 사용하는 데 몇 주가 걸릴 수 있습니다.

암호가 시스템에 대해 "시도"되면 암호화를 사용하여 "해시"되므로 실제 암호가 통신 회선을 통해 일반 텍스트로 보내지지 않습니다. 이렇게하면 도청자가 암호를 가로채는 것을 방지 할 수 있습니다. 비밀번호의 해시는 일반적으로 가비지처럼 보이며 대개 원래 비밀번호와 다른 길이입니다. 암호는 "shitzu"일 수 있지만 암호 해시는 "7378347eedbfdd761619451949225ec1"과 비슷합니다.

사용자를 확인하기 위해 시스템은 클라이언트 컴퓨터에서 암호 해시 함수로 만든 해시 값을 가져와 서버의 테이블에 저장된 해시 값과 비교합니다. 해시가 일치하면 사용자는 인증되고 액세스 권한이 부여됩니다.

암호 해싱은 단방향 함수이므로 해시를 해독하여 암호의 일반 텍스트가 무엇인지 확인할 수는 없습니다. 생성 된 해시는 해독 할 키가 없습니다. 원하는 경우 "디코더 링"이 없습니다.

암호 해독 프로그램은 로그인 프로세스와 비슷한 방식으로 작동합니다. 크래킹 프로그램은 MD5와 같은 해시 알고리즘을 통해 실행되는 일반 텍스트 암호를 사용하여 시작한 다음 해시 출력을 도난당한 암호 파일의 해시와 비교합니다. 일치하는 항목이 있으면 프로그램에서 암호가 깨졌습니다. 전에 말했듯이,이 프로세스는 매우 오랜 시간이 걸릴 수 있습니다.

레인보우 테이블에 들어가기

레인보우 테이블은 기본적으로 가능한 일반 텍스트 비밀번호와 미리 일치하는 해시 값으로 채워진 미리 계산 된 테이블 집합입니다. 레인보우 테이블은 기본적으로 해커가 해싱 기능을 바꾸어 일반 텍스트 비밀번호를 결정합니다. 두 개의 서로 다른 암호가 동일한 해시로 나타날 수 있으므로 원래 해시 값이 동일한 지 확인하는 것이 중요하지 않습니다. 일반 텍스트 비밀번호는 사용자가 만든 비밀번호와 동일하지 않을 수 있지만 해시가 일치하는 한 원래 비밀번호가 무엇인지는 중요하지 않습니다.

레인보우 테이블을 사용하면 무차별 대법에 비해 매우 짧은 시간 내에 암호를 해독 할 수 있지만 레인보우 테이블 자체를 보관하려면 많은 저장 공간 (테라 바이트)이 필요하다는 단점이 있습니다. 요즘 스토리지는 풍부하고 저렴하므로 10 년 전 테라 바이트 드라이브가 로컬 Best Buy에서 픽업 할 수있는 것이 아니었던 것처럼이 트레이드 오프가 큰 문제는 아닙니다.

해커는 사전 계산 된 Rainbow Tables를 구입하여 Windows XP, Vista, Windows 7 및 MD5 및 SHA1 과 같은 취약한 운영 체제의 암호를 암호 해싱 메커니즘으로 구입할 수 있습니다. 많은 웹 응용 프로그램 개발자가 여전히 이러한 해싱 알고리즘을 사용합니다.

무지개 테이블 기반 암호 공격으로부터 자신을 보호하는 방법

우리는이 모든 것에 대해 더 나은 조언이 있었으면합니다. 우리는 더 강력한 암호 가 도움이 될 것이라고 말하고 싶지만, 문제가되는 암호의 약점이 아니기 때문에 이것은 사실이 아닙니다. 암호를 암호화하는 데 사용되는 해시 기능과 관련된 약점입니다.

사용자에게 제공 할 수있는 가장 좋은 조언은 암호 길이를 짧은 문자 수로 제한하는 웹 응용 프로그램에서 멀리 떨어져 나가는 것입니다. 이것은 취약한 구식 비밀번호 인증 루틴의 명백한 신호입니다. 확장 암호 길이와 복잡성은 조금 도움이 될 수 있지만 보장 된 형태의 보호는 아닙니다. 암호가 길수록 레인보우 테이블을 크랙 할 수 있어야하지만 더 많은 자원을 가진 해커가이를 수행 할 수 있습니다.

Rainbow Tables를 방어하는 방법에 대한 조언은 실제로 응용 프로그램 개발자와 시스템 관리자를위한 것입니다. 이 유형의 공격으로부터 사용자를 보호하는 데있어 최전선에 서 있습니다.

다음은 Rainbow Table 공격에 대한 방어에 대한 개발자 팁입니다.

  1. 암호 해시 기능에서 MD5 또는 SHA1을 사용하지 마십시오. MD5 및 SHA1은 구식 암호 해싱 알고리즘이며 암호 해독에 사용되는 대부분의 레인보우 테이블은 이러한 해싱 방법을 사용하는 대상 응용 프로그램 및 시스템에 구축됩니다. SHA2와 같은보다 현대적인 해싱 방법을 사용해보십시오.
  2. 암호 해싱 루틴에 암호 "Salt"를 사용하십시오. 암호 해시 함수에 암호 해독 기능을 추가하면 응용 프로그램에서 암호를 해독하는 데 사용되는 Rainbow Tables 사용을 막을 수 있습니다. 암호문을 사용하여 응용 프로그램을 "Rainbow-Proof"하는 데 도움이되는 코딩 예제를 보려면 해당 주제에 대한 훌륭한 기사가있는 WebMasters By Design 사이트를 확인하십시오.

해커가 Rainbow Tables를 사용하여 비밀번호 공격을 수행하는 방법을 보려면이 기술을 사용하여 비밀번호를 복구하는 방법에 대한 훌륭한 기사를 읽어보십시오.