새로운 제품이나 서비스를 설계할 때, 보안은 선택이 아닌 필수 요소입니다. 단순히 '무엇을 보호하고 누구로부터 보호할 것인가'를 넘어, 시스템 내 자산들의 복잡한 관계와 우리가 암묵적으로 전제하는 가정들, 심지어는 의도적으로 다루지 않기로 한 위협까지 명확히 하는 '위협 모델링(Threat Modeling)'이 중요합니다. 이는 설계 초기 단계에서 잠재적 보안 취약점을 식별하고, 더 견고한 아키텍처를 구축하는 데 결정적인 역할을 합니다.
좋은 위협 모델은 자산을 단순한 목록이 아닌 그래프 형태로 파악하고, 각 컴포넌트의 입력, 출력, 의존성을 면밀히 분석하여 위험과 전제를 확인합니다. 예를 들어, 패스키(passkey) 인증 도입은 사용자가 고엔트로피(high-entropy) 비밀번호를 기억해야 한다는 비현실적인 가정을 제거함으로써 크리덴셜 스터핑(credential stuffing)과 피싱(phishing) 같은 흔한 공격을 원천 차단합니다. 또한, 분산형 종단 간 암호화(E2EE) 메시징 시스템 설계 시, 메시지 순서 보장이나 키 관리 프로토콜(MLS)의 제약 사항을 위협 모델링을 통해 미리 파악하여 설계 오류를 방지할 수 있습니다. 특히 양자 내성 암호(PQC)와 관련한 논쟁에서도 하이브리드(hybrid) 방식과 순수(pure) 방식의 장단점, 그리고 '지금 수확하여 나중에 해독(Harvest Now, Decrypt Later)'이라는 실제 위협을 위협 모델링을 통해 명확히 이해할 수 있습니다.
위협 모델링은 한 번 만들고 끝나는 정적인 문서가 아니라, 시스템의 변화와 새로운 위협에 따라 지속적으로 갱신되어야 하는 '살아있는 문서'입니다. 우리가 세운 가정이 깨질 때, 기존에 수용했던 위험 목록도 재검토해야 합니다. 이는 방어자가 항상 옳아야 하고 공격자는 단 한 번만 성공하면 된다는 보안의 격언 속에서, 방어자가 공격자의 움직임을 예측하고 통제할 수 있는 지형을 만들도록 돕습니다. 결국 위협 모델링은 기술 선택의 제약과 실제 위험을 분리하여, 사용자에게 더 안전하고 신뢰할 수 있는 서비스를 제공하기 위한 필수적인 설계 도구입니다.