비밀번호 크래킹(Password Cracking)은 저장되거나 전송되는 암호화된 비밀번호 데이터로부터 원본 비밀번호를 알아내거나, 무작위 또는 사전 기반의 시도를 통해 올바른 비밀번호를 찾아내는 행위를 의미한다. 주로 시스템에 대한 무단 접근, 데이터 탈취, 또는 보안 취약점 점검 등의 목적으로 수행된다.
개요
비밀번호 크래킹은 컴퓨터 시스템, 네트워크, 또는 데이터베이스에 저장된 사용자 계정에 접근하기 위해 비밀번호를 해독하거나 추측하는 과정을 말한다. 이 과정은 일반적으로 강력한 컴퓨팅 자원을 사용하여 수많은 가능성을 빠르게 시도함으로써 이루어진다. 그 목적은 악의적인 공격에서부터 시스템 관리자가 잃어버린 비밀번호를 복구하거나 보안 전문가가 시스템의 취약점을 평가하는 윤리적 해킹에 이르기까지 다양하다. 성공적인 비밀번호 크래킹은 개인 정보 유출, 시스템 제어권 탈취, 서비스 방해 등 심각한 보안 위협으로 이어질 수 있다.
주요 기법
비밀번호 크래킹에 사용되는 주요 기법들은 다음과 같다.
- 무차별 대입 공격 (Brute-force Attack): 가능한 모든 문자 조합을 하나씩 시도하여 비밀번호를 찾아내는 방식이다. 비밀번호의 길이가 길고 복잡할수록 성공까지 걸리는 시간이 기하급수적으로 늘어난다.
- 사전 대입 공격 (Dictionary Attack): 미리 준비된 단어 목록(사전 파일)을 사용하여 비밀번호를 추측하는 방식이다. 일반적인 단어나 구문, 흔한 비밀번호 패턴이 비밀번호로 사용될 가능성이 높다는 점을 이용한다.
- 레인보우 테이블 공격 (Rainbow Table Attack): 해시된 비밀번호를 역으로 변환하기 위해 미리 계산된 해시 값과 원본 비밀번호 쌍을 저장한 테이블(레인보우 테이블)을 사용하는 방식이다. 솔트(salt)가 적용되지 않은 해시 함수에 특히 효과적이다.
- 자격 증명 스터핑 (Credential Stuffing): 다른 웹사이트나 서비스에서 유출된 사용자 이름과 비밀번호 조합을 사용하여 다른 시스템에 로그인 시도를 하는 방식이다. 이는 직접적인 크래킹과는 다르지만, 유출된 비밀번호를 활용한다는 점에서 연관성이 높다.
- 마스크 공격 (Mask Attack): 비밀번호에 대한 일부 정보를 알고 있을 때(예: 첫 글자는 대문자, 마지막은 숫자 등), 해당 패턴을 기반으로 한 문자 조합만 시도하는 방식으로 무차별 대입 공격의 효율성을 높인다.
난이도에 영향을 미치는 요소
비밀번호 크래킹의 성공 여부 및 소요 시간에 영향을 미치는 주요 요소는 다음과 같다.
- 비밀번호 복잡성: 길이가 길고, 대문자, 소문자, 숫자, 특수문자 등이 혼합된 비밀번호일수록 크래킹이 어렵다.
- 해싱 알고리즘: SHA-256, bcrypt, scrypt, Argon2와 같이 강력하고 연산 시간이 오래 걸리도록 설계된 해싱 알고리즘은 크래킹을 지연시킨다. MD5, SHA-1과 같이 오래된 알고리즘은 취약하다.
- 솔트 (Salt): 해싱 시 무작위 문자열인 솔트를 추가하면, 동일한 비밀번호라도 다른 해시 값을 가지게 되어 레인보우 테이블 공격을 무력화하고 사전 대입 공격을 어렵게 한다.
- 키 스트레칭 (Key Stretching): 해싱 과정을 여러 번 반복하여 연산 시간을 의도적으로 늘려 무차별 대입 공격의 효율을 크게 떨어뜨린다.
- 계정 잠금 정책: 일정 횟수 이상 로그인 실패 시 계정을 잠그는 정책은 무차별 대입 공격을 방지하는 데 효과적이다.
윤리적 및 법적 측면
허가 없이 타인의 비밀번호를 크래킹하는 행위는 대부분의 국가에서 불법이며, 심각한 법적 처벌을 받을 수 있다. 대한민국에서는 정보통신망 이용촉진 및 정보보호 등에 관한 법률 등에 의거하여 처벌될 수 있다. 그러나 보안 컨설턴트나 침투 테스터(penetration tester)는 시스템의 보안 취약점을 발견하고 개선하기 위한 목적으로 고용주나 고객의 명시적인 허가를 받아 합법적으로 비밀번호 크래킹을 시도하기도 한다. 이를 '윤리적 해킹'이라고 부른다.
예방 및 대응
비밀번호 크래킹으로부터 시스템과 정보를 보호하기 위한 방법은 다음과 같다.
- 강력하고 고유한 비밀번호 사용: 각기 다른 서비스에 고유하고 복잡한 비밀번호를 사용해야 한다. 비밀번호 관리 도구를 활용하는 것도 좋은 방법이다.
- 다단계 인증 (Multi-factor Authentication, MFA): 비밀번호 외에 추가적인 인증 수단(예: OTP, 생체 인식, FIDO2)을 사용하여 보안을 강화한다.
- 최신 해싱 기술 적용: 솔트와 키 스트레칭이 적용된 강력한 해싱 알고리즘(예: bcrypt, Argon2)을 사용하여 비밀번호를 저장한다.
- 계정 잠금 및 속도 제한: 로그인 시도 횟수를 제한하고, 실패 시 계정을 일시적으로 잠가 무차별 대입 공격을 방어한다.
- 정기적인 보안 업데이트: 운영체제, 소프트웨어, 보안 시스템을 항상 최신 상태로 유지하여 알려진 취약점을 제거한다.
- 보안 교육: 사용자들이 비밀번호 보안의 중요성을 인식하고 안전하게 관리하도록 교육한다.
참고 항목
- 해싱
- 무차별 대입 공격
- 다단계 인증
- 정보 보안