Password-Based Authentication
패스워드 기반 인증
- 사용자는 시스템에게 이름 혹은 Identifier(ID)와 더불어 비밀번호(패스워드)를 제공하여 본인임을 인증한다.
- Cost가 매우 저렴하고, 다루기 간편한 가장 전통적인 인증 수단이다.
- 하지만 아직까지도 많은 Issue를 겪고 있는 수단이다.
Password Experiment (패스워드 관련 실험)
- 3개의 실험군에 대해, 아래와 같이 패스워드를 설정하게 하고 Crack Ratio를 비교했다.
Experimental Group | Description | Crack Ratio |
Group A |
At least 6 characters, 1 non letter | 30% |
Group B |
Password based on passphrase | 10% (패스워드를 기억하기 쉽고 안전하다.) |
Group C |
8 random characters (Alphabet or Numeric) |
10% (안전하나, 완전한 난수를 기억하기 힘들다.) |
* Passphrase
- 기억하기 쉬운 문장을 축약한 형태를 의미한다.
ex) It's 12 noon and I am hungry = I'S12&IAH
Password File (패스워드 파일)
- 사용자의 <ID, Password> Pair를 저장하는 Data Structure이다.
- 일반적으로, 패스워드를 Hashing 하여 저장한다.
- Dictionary Attack과 같은 Forward Search 공격에 대비되어 있어야 한다.
- Salt/Pepper 방법으로 공격자의 Burden을 늘리는 방법으로 방어할 수 있다.
* Dictionary Attack
- <Plaintext : Hash Value> Pairs를 미리 구해놓고, Hash Value를 도청하여 Plaintext를 유추해내는 공격 방법이다.
- 즉, Hash Function에 대한 역연산을 시도하는 공격이다.
Vulnerability of Password (패스워드의 취약점)
- 일반적으로, 공격자는 일반 사용자 계정들을 먼저 공격한 후 최종적으로 Administrator의 계정을 공격한다.
- 패스워드 체계에 대한 공격 유형은 아래와 같다.
- APT (Advanced Persistent Threat; 지능형 지속 위협)
- 장기간에 걸쳐 단일 사용자의 패스워드를 표적으로 하여 다양한 수단으로 해킹을 시도하는 공격 방식이다.
- 해킹 표적에 대한 Social Engineering Attack, Phishing 등을 통해 표적 디바이스를 감염시킨다. - Offline Dictionary Attack (오프라인 사전 공격)
- Password File을 강탈한 공격자가
흔히 사용되는 패스워드의 해시값과 Password File의 해시값을 비교하여
사용자의 패스워드를 알아내는 공격 방식이다. - Macro Attack (매크로 공격)
- Password Retry에 따른 Account Blocking Time이 상대적으로 짧을 경우,
공격자는 Macro Program을 통해 패스워드를 알아낼 때까지 시도하기가 쉬워진다. - DoS Attack (Denial of Service Attack; 서비스 거부 공격)
- Password Retry에 따른 Account Blocking Time이 상대적으로 긴 경우,
공격자는 이를 이용하여 특정 사용자의 계정을 의도적으로 Block 시키는 DoS 공격을 수행할 수 있다. - Use Default Password (기본 패스워드의 사용)
- Router, Set-Top Box와 같은 통신장치에 기본으로 부여된 패스워드를 지속하여 사용할 경우
공격자의 표적이 되기 쉽다. - Attacker-Installed or Attacker-Spoofed WiFi Access Point (공격자가 설치한 WiFi AP)
- 공격자에 의해 만들어진 가짜 무선 인터넷에 사용자의 접근을 유도하는 공격 방식이다. - Credential Stuffing (크리덴셜 스터핑)
- 공격자가 사용자의 계정 정보를 탈취해 다른 서비스에 무작위로 대입하여 무단 로그인을 시도하는 공격 방식이다. - Cached Password in Modern WEB Browser (최신 웹 브라우저들의 비밀번호 저장)
- 최신 웹 브라우저들은 사용자 편의를 위해 비밀번호를 저장(캐싱)해놓는 경우가 많은데,
이는 패스워드 암호 체계를 취약하게 만든다. - Specific Account Attack (특정 계정 공격)
- 특정 계정의 비밀번호를 알아낼 때까지 추측하여 입력하는 공격 방식이다. - Popular Password Attack (잘 알려진 패스워드 공격)
- 사용자가 기억하기 쉬운 패스워드를 사용하는 경우 공격의 난이도가 쉬워진다. - Password Guessing Against Single User (단일 사용자의 패스워드 추측)
- 공격자가 사용자의 계정 정보와 시스템 비밀 번호 정책을 통해 비밀번호를 추측할 수 있다. - Workstation Hijacking (단말기 강탈)
- 공격자가 사용자의 Device를 직접 이용하게 될 경우이다.
- 일정 시간 작동이 없으면 로그아웃하게 하거나
사용자의 행동 변화를 감지하면 로그아웃하게 하는 방법으로 예방할 수 있다. - Exploiting User Mistakes (사용자의 실수를 이용)
- 사용자가 패스워드를 잊지 않기 위해 패스워드를 메모해놓는 등의 보안상 실수이다.
Social Engineering Attack과 같은 인간의 상호 작용을 기반으로 한 비기술적 공격이다. - Exploiting Multiple Password Use (하나의 패스워드를 다중으로 사용)
- 사용자가 여러 네트워크에서 단일 패스워드를 사용할 경우,
공격자의 공격에 지워지는 Burden이 작아져 공격이 쉬워지는 경우이다. - Electronic Monitoring (컴퓨터 모니터링)
- 패스워드가 네트워크상에서 원격으로 전달될 경우, Eavesdropping(도청)에 취약할 수 있다.
Hashing Password (패스워드 해싱)
- 패스워드를 해싱하는 대표적인 방법으로 Salt/Pepper Method가 있다.
- Hash Iterations(여러차례 거듭한 해싱)을 통해 패스워드의 경우의 수를 기하급수적으로 증가시켜
공격자의 Burden을 증가시키는 방법을 사용할 수 있다.
Salt Method (솔트 메서드)
- 말 그대로, Hashing 과정에 소금을 치는 것을 의미한다.
- 공격자가 하나의 Dictionary만으로 여러 사이트를 동시에 공격할 수 없게 하는 방법이다.
\(y = h(\mathrm{Password, Salt})\)
- \((\mathrm{Salt}, y)\) Pair를 Password File에 저장한다.
- 사이트별로 \(\mathrm{Salt}\)값은 다르게 운영된다.
- 여기서 \(\mathrm{Salt}\) 값은 비밀 값이 아니며, Salted Password는 쉽게 검증된다.
Pepper Method (페퍼 메서드)
- Salt Method와 유사하나, 가염 처리된 값이 비밀에 부쳐진다는 점에서 차이가 있다.
- 공격자가 하나의 Dictionary로 여러 사이트를 동시에 공격할 수 없게 하는 방법이다.
\(y = h(\mathrm{Password, Pepper})\)
- \((\mathrm{Pepper}, y)\) Pair를 Password File에 저장한다.
- 사이트별로 \(\mathrm{Pepper}\)값은 다르게 운영된다.
- 여기서 \(\mathrm{Pepper}\) 값은 비밀에 부쳐지며,
\(\mathrm{Pepper}\)값은 한 번의 검색으로 알아낼 수 있기 때문에 Peppered Password 또한 쉽게 검증된다.
Reference: Information Security: Principles and Practice 2nd Edition
(Mark Stamp 저, Pearson, 2011)
Reference: Computer Security: Principles and Practice 3rd Edition
(William Stallings, Lawrie Brown, Pearson, 2014)
Reference: 2022학년도 1학기 홍익대학교 네트워크 보안 강의, 이윤규 교수님