해커들은 비밀번호를 크랙하기 위해 다양한 방법을 사용하며, 그중 하나가 레인보우 테이블 공격입니다. 특정 상황에서 이 방법은 사전 공격 또는 크리덴셜 스터핑보다 빠를 수 있습니다.

이 글에서는 레인보우 테이블 공격의 작동 방식과 예방 방법을 살펴봅니다.

레인보우 테이블 공격 정의

레인보우 테이블 공격은 해커가 디지털 지문 역할을 하는 해시에서 비밀번호를 알아내어 시스템을 해킹하는 암호화 공격입니다. 해시 함수는 각 비밀번호를 해당 문자열에 매핑합니다.

모든 비밀번호를 하나씩 시도하는 무차별 대입 공격과 달리, 레인보우 테이블 공격은 테이블이 미리 계산되어 있으면 추측할 필요가 없습니다. 이 미리 계산된 테이블(색상 코드로 표시되는 방식 때문에 레인보우 테이블이라고 함)은 기본적으로 일반 텍스트에 대응하는 해시 값 쌍의 거대한 데이터베이스입니다.

레인보우 테이블 비밀번호 공격의 작동 방식

1. 비밀번호 목록 생성

레인보우 테이블을 생성할 때 해커는 종종 간단한 패턴(예: 123456, password, qwerty)을 가진 가장 그럴듯하고 흔히 사용되는 비밀번호, 사전 단어 또는 보안 사고로 얻은 비밀번호 덤프를 표적으로 삼습니다.

2. 해시 함수 선택 및 비밀번호 변환

레인보우 테이블 공격은 MD-5, SHA-1, LM Hash, NTLM Hash와 같이 솔팅(해싱 전 각 비밀번호에 임의의 데이터를 추가)이나 키 스트레칭(비밀번호를 반복적으로 해싱)과 같은 보안 기능을 사용하지 않는 더 단순하고 빠른 암호화 해시 함수에서 효과적입니다.

MD-5로 해시된 비밀번호서식 없는 텍스트 비밀번호
482c811da5d5b4bc6d497ffa98491e38password123

각 서식 없는 텍스트 비밀번호는 해시 함수를 통해 실행되어 위 예시처럼 고유한 고정 크기 문자열인 해당 해시를 생성합니다. 모든 비밀번호가 해싱되면 해커는 이를 사용하여 레인보우 테이블을 만들 수 있습니다.

3. 비밀번호를 알아내기 위한 레인보우 테이블 생성

레인보우 테이블은 첫 번째 열에는 해시된 비밀번호가 있고 두 번째 열에는 서식 없는 텍스트 비밀번호가 있는 커다란 엑셀 시트로 볼 수 있습니다. 이 테이블에 유출된 해시가 있다면, 그 옆의 셀에 있는 것이 바로 유출된 비밀번호입니다.

레인보우 테이블 공격 사례

레인보우 테이블 공격이 어떻게 이루어지는지 설명하는 두 가지 가상 사례는 다음과 같습니다.

  • 해커가 솔팅을 사용하지 않는 구식 해싱 알고리즘을 사용하는 소셜 미디어 사이트를 식별합니다. SQL 인젝션 결함을 악용하여 웹사이트 데이터베이스에서 사용자 비밀번호의 해시 값을 추출합니다. 그런 다음 미리 계산된 레인보우 테이블을 사용하여 이러한 수천 개의 해시를 서식 없는 텍스트 비밀번호로 빠르게 변환하여 사용자 계정을 유출합니다.
  • 일상적인 네트워크 모니터링 중에 해커가 전자상거래 웹사이트가 서버 간에 비밀번호 해시를 안전하지 않게 전송한다는 사실을 발견하고 네트워크 스니핑 도구를 사용하여 이 데이터를 가로챕니다. 이제 비밀번호 해시에 접근할 수 있게 된 해커는 레인보우 테이블 공격을 사용하여 고객 비밀번호를 해독하고 쇼핑 계정과 개인 정보에 접근합니다.

레인보우 테이블 공격 데이터 보안 사고

레인보우 테이블 공격은 실제 환경에서 수백만 건의 로그인 세부사항을 훔치는 데 사용되었습니다.

예를 들어, 2012년 러시아 사이버 범죄자들에 의한 LinkedIn 해킹(새 창)으로 인해 약 650만 명의 사용자 계정 비밀번호가 도난당하여 심각한 데이터 보안 사고가 발생했습니다. 초기 발견 이후 LinkedIn은 2016년에 동일한 사건과 관련된 1억 개의 유출된 이메일 주소와 비밀번호를 추가로 발견했습니다. 도난당한 비밀번호는 보호 수준이 낮았고 솔팅과 같은 추가 보안 조치가 부족했기 때문에 공격자가 표준 레인보우 테이블을 사용하여 해독하기가 더 쉬웠습니다.

레인보우 테이블 공격 방지 방법

강력한 해시 함수를 사용하는 플랫폼 선택

bcrypt(새 창)Argon2(새 창)와 같은 안전한 해시 함수는 솔팅(새 창)을 사용하여 해시를 생성하기 전에 비밀번호에 임의의 데이터를 추가합니다. 솔트가 없으면 비밀번호의 해시가 레인보우 테이블에 나타나지 않으므로 공격이 실패하게 됩니다.

특정 서비스나 앱이 비밀번호 저장에 어떤 해시 함수를 사용하는지 알아보려면 해당 서비스의 개인정보취급방침(새 창), FAQ 섹션, 지원 페이지, 보안 인증 또는 감사(있는 경우), 기술 문서 또는 개발자 리소스(새 창)를 확인하십시오. 간단한 인터넷 검색으로 찾을 수 있으며, 고객 지원팀에 문의할 수도 있습니다.

직접 웹사이트나 데이터베이스를 운영하는 경우 강력한 해싱 알고리즘을 구현하는 플러그인이나 모듈을 사용하여 보안 설정을 최신 상태로 유지하십시오.

복잡한 비밀번호 사용

추측하기 쉬운 비밀번호 대신 대문자와 소문자, 숫자, 기호를 포함하여 최소 12자로 구성된 안전한 비밀번호를 선택하십시오. 강력한 비밀번호의 예로는 ?GmmM1Z[c5:F 또는 beht=ty]P:)Gf^c?p?+7이 있습니다. 사이버 공격자가 레인보우 테이블 공격을 사용하여 이러한 복잡한 비밀번호를 노릴 가능성은 낮습니다.

다중 인증 활성화

2단계 인증(2FA)과 같은 다중 인증(MFA)은 비밀번호 요청 시 최소 한 가지 이상의 인증 형식을 추가합니다(예: 2FA 인증기의 코드). 공격자가 레인보우 테이블 공격으로 비밀번호를 알아내는 데 성공하더라도 다음 인증 단계를 통과할 수 없습니다.

또한 예상치 못한 추가 인증 요청을 받으면 누군가가 귀하의 계정에 접근하려고 한다는 분명한 신호입니다. 비밀번호를 변경하여 즉시 대응할 수 있습니다.

이메일 별칭 사용

이메일 별칭(새 창)은 기본 이메일 주소와 연결되지 않으므로 레인보우 테이블 공격으로 이어질 수 있는 데이터 보안 사고로부터 귀하를 보호할 수 있습니다. 예를 들어, 중요한 메시지나 금융 거래에는 메인 이메일을 계속 사용하고 신뢰할 수 없는 서비스에 가입하는 등 보안이 덜 중요한 활동에는 이메일 별칭을 사용할 수 있습니다. 이메일 별칭이 해킹되면 간단히 비활성화하면 됩니다.

인터넷상의 데이터 보안 사고 모니터링

최신 보안 사고에 대한 정보를 파악하면 귀하가 사용하는 서비스가 유출되었는지, 그리고 귀하의 데이터가 유출되었는지 확인할 수 있습니다. 이를 통해 비밀번호 즉시 변경과 같은 선제적인 조치를 취하여 해커가 노출된 데이터를 사용하여 귀하의 계정에 무단으로 접근하지 못하도록 방지할 수 있습니다.

Proton Pass의 도움을 받는 방법

Proton Pass는 강력한 비밀번호를 생성(새 창)하고 한곳에서 관리하여 레인보우 테이블 공격으로부터 귀하를 보호합니다. 또한 2FA 토큰을 위한 TOTP(시간 기반 일회용 비밀번호) 인증기를 지원합니다. 또한, 앱은 기본 이메일 주소가 온라인에 노출되지 않도록 hide-my-email 별칭을 제공합니다.

모든 Proton Pass 구독자는 Pass Monitor(새 창)를 사용하여 모든 비밀번호의 상태를 모니터링하고, 다크 웹 모니터링을 통해 데이터 보안 사고를 위한 다양한 소스를 추적할 수 있습니다. 당사의 보안 모델은 안전한 bcrypt 해싱 알고리즘을 사용하며, 이는 레인보우 테이블 공격을 방지하기 위해 비밀번호를 해싱하기 전에 솔트를 적용합니다. 또한, 당사는 계정 탈취 공격을 감지하고 방지하기 위해 Proton Sentinel이라는 고급 보안 프로그램을 실행하고 있습니다.

오늘 무료 Proton Pass 계정에 가입하여 레인보우 테이블 공격으로부터 계정을 보호하십시오.