02. 위협 모델링 (Threat Model)
1. Systematic Plans (체계적 계획)
보안은 임시방편(Ad-hoc)으로 해결할 수 없습니다. 시스템을 설계할 때 가장 중요한 것은 보안을 시스템의 체계적 계획(Systematic Plans) 단계부터 포함시키는 것입니다. 보안 정책(Policy), 위협 모델(Threat Model), 그리고 방어 메커니즘(Mechanism)이 삼위일체를 이루어야 합니다.
2. Other Properties (추가적인 보안 속성)
이전 강의에서 다룬 CIA(기밀성, 무결성, 가용성) 외에도 실제 시스템에서는 다음과 같은 추가적인 보안 속성들이 요구됩니다.
- Authentication (인증): 통신하는 상대방이 정말 자신이 주장하는 그 사람이 맞는지 확인하는 과정입니다.
- Accountability (책임성/추적성): 시스템 내에서 일어난 행동을 특정 사용자에게 귀속시킬 수 있는 능력입니다. 침해 사고 발생 시 누가 그 행동을 했는지 로그를 통해 증명해야 합니다.
- Non-repudiation (부인 방지): 어떤 행위를 한 사람이 나중에 자신이 그 행위를 하지 않았다고 부인(Deny)할 수 없게 만드는 성질입니다. 디지털 서명이 대표적인 예입니다.
3. Friends and Enemies: Alice, Bob, Trudy/Eve
암호학과 보안 프로토콜을 설명할 때 항상 등장하는 가상의 인물들입니다.
- Alice & Bob (Friends): 서로 안전하게 메시지를 주고받고자 하는 합법적인 통신 주체입니다.
- Eve (Eavesdropper): 소극적인 공격자로, 통신 선로를 엿듣기만(Sniffing) 합니다. (Passive Attacker)
- Trudy (Intruder): 적극적인 공격자로, 통신을 가로채어 메시지를 조작하거나 위조합니다. (Active Attacker)
4. Security Attacks: Passive vs Active
Eve와 Trudy의 행동 패턴에 따라 보안 공격은 두 가지로 나뉩니다.
Passive Attacks (수동적 공격)
Passive Attack은 시스템 리소스에 영향을 주지 않고 단지 정보를 획득하는 데 목적이 있습니다. 메시지 도청이나 트래픽 분석이 이에 해당합니다. 탐지가 매우 어렵기 때문에 예방(Prevention)(예: 데이터 암호화)이 최선의 방어입니다.
Active Attacks (능동적 공격)
Active Attack은 데이터 스트림을 변조하거나 허위 스트림을 생성합니다. 메시지 변조, 재생 공격(Replay), 서비스 거부(DoS) 등이 포함됩니다. 완벽히 예방하기 어렵기 때문에, 공격을 빠르게 탐지(Detection)하고 복구하는 방향으로 방어합니다.
5. Problems (보안 실패의 원인들)
보안 사고는 다음과 같은 세 가지 설계 단계의 문제(Problems)에서 발생합니다.
Problems with the Policy (정책의 문제)
보안 정책 자체가 현실과 동떨어져 있거나 잘못 설정된 경우입니다. 예를 들어, 너무 복잡한 비밀번호 정책을 강제하면 사용자들이 포스트잇에 비밀번호를 적어 모니터에 붙여놓게 되어 오히려 보안이 취약해집니다.
Problems with Threat Model (위협 모델의 문제)
가정한 위협 모델이 실제 공격자의 능력을 과소평가하거나 엉뚱한 방향을 잡은 경우입니다. 공격자가 네트워크 외부에서만 올 것이라 가정(Threat Model)하고 방화벽만 철저히 세웠는데, 실제로는 내부 직원이 USB를 통해 악성코드를 유포한다면 해당 위협 모델은 실패한 것입니다.
Problems with the Mechanism (메커니즘의 문제)
정책과 위협 모델은 완벽했으나, 이를 구현하는 코드나 메커니즘에 버그가 있는 경우입니다. 흔히 발생하는 버퍼 오버플로우(Buffer Overflow)나 암호화 라이브러리의 취약점(예: Heartbleed)이 여기에 해당합니다.
결론적으로, 이 세 가지 단계(Policy, Threat Model, Mechanism)를 체계적으로 점검하고 일치시키는 Systematic Plans만이 안전한 시스템을 보장할 수 있습니다.