미사일 방어는 왜 밑빠진 독에 물 붓기인가: NP-Complete와 시스템 아키텍처의 한계


최근 중동에서 벌어지는 분쟁 뉴스를 보면서, 엔지니어로서 제 머릿속을 맴도는 생각은 단 하나였습니다. “저 엄청난 트래픽(미사일)을 처리하는 시스템의 확장성과 비용 구조가 과연 감당 가능한 수준일까?”

우리는 종종 대규모 분산 시스템을 설계할 때 트래픽 급증을 막기 위해 로드 밸런서를 두고 노드를 스케일 아웃합니다. 미사일 방어 시스템도 겉보기엔 비슷해 보입니다. 미사일이 날아오면 요격 미사일(Interceptor)을 여러 발 쏴서 맞추면 되는 것 아니냐고 생각하기 쉽죠. 하지만 최근 흥미로운 글을 읽고 나서, 이 문제가 단순한 물리적 타격전이 아니라 NP-Complete 영역에 속하는 극악의 리소스 할당(Resource Allocation) 문제라는 것을 다시금 깨달았습니다.

제가 15년 넘게 아키텍처를 설계하며 겪었던 병목 현상들과 너무나도 닮아있는 이 미사일 방어 시스템의 수학적, 구조적 한계를 파헤쳐 보겠습니다.

엔지니어의 행복회로: SSPK와 독립 확률

먼저 요격체 하나가 얼마나 믿을 만한지 수치로 봐야 합니다. 이를 SSPK (Single Shot Probability of Kill)라고 부릅니다. 센서 정확도, 유도 정밀도 등을 모두 합친 단일 요격 성공 확률이죠. 미국의 GMD(Ground-Based Midcourse Defense) 시스템의 경우 이 SSPK가 약 56%로 추정됩니다. 요격체 하나당 가격은 무려 7,500만 달러(약 1,000억 원)입니다.

서버 하나의 가용성이 56%라면 우리는 어떻게 할까요? 당연히 이중화, 삼중화를 합니다. 요격 실패 확률이 서로 독립적이라고 가정하면, 요격체를 여러 발 쏠수록 최소 한 발이 명중할 확률은 급격히 올라갑니다.

수식으로 보면 P = 1 - (1 - SSPK)^n 입니다. 요격체를 4발 쏘면 성공 확률은 약 96.25%까지 올라갑니다. 1개의 목표물을 방어하기 위해 4개의 요격체를 할당하면 꽤 안전해 보입니다. 하지만 현실의 시스템은 이렇게 아름다운 수학 공식대로 돌아가지 않습니다.

C_tc: 단일 장애점(SPOF)과 Common Mode Failure의 공포

앞선 96%라는 숫자는 아주 치명적인 가정을 깔고 있습니다. 바로 “적이 쏜 미사일을 완벽하게 탐지하고, 추적하고, 진짜 탄두인지 가짜인지 분류해냈다”는 전제입니다.

Wilkening의 모델은 이 탐지-추적-분류 파이프라인의 성공 확률을 C_tc라는 변수로 정의합니다. 실제 요격 확률은 P_kill = C_tc * (1 - (1 - SSPK)^n)가 됩니다.

만약 레이더가 파괴되거나, 시스템이 교란되어 C_tc가 0으로 수렴한다면? 요격체를 4발이 아니라 400발을 쏴도 성공 확률은 0입니다. 백엔드 DB가 죽었는데 프론트엔드 웹 서버를 100대 스케일 아웃해봤자 아무 소용이 없는 것과 정확히 같습니다. 이것은 전형적인 공통 원인 고장 (Common Mode Failure)이자 시스템의 단일 장애점 (SPOF)입니다.

이 파이프라인이 얼마나 취약한지 보여주는 끔찍한 사례가 있습니다. 1991년 걸프전 당시 패트리어트 미사일 실패 사건입니다. 시스템 클럭의 누적된 부동소수점 절사(Floating-point truncation) 오류로 인해 추적 레이더가 하늘의 엉뚱한 곳을 바라보았고, 날아오는 스커드 미사일을 아예 탐지조차 못했습니다. 하드웨어는 완벽했지만 소프트웨어 버그 하나로 C_tc가 0이 되어버렸고, 결국 28명의 미군이 목숨을 잃었습니다.

최근 분쟁에서도 공격자들은 수천억 원짜리 방어 레이더를 먼저 타격하여 해당 지역의 추적 커버리지를 날려버리는 전술을 쓰고 있습니다. 눈을 가려버리면 요격체는 고철 덩어리에 불과해집니다.

WTA 문제: 왜 NP-Complete 인가?

이제 스케일을 키워봅시다. 적이 여러 발의 미사일을 서로 다른 도시(가치가 다름)를 향해 쐈습니다. 우리는 제한된 요격체를 어떻게 할당해야 피해를 최소화(방어 가치를 극대화)할 수 있을까요? 이를 WTA (Weapon-Target Assignment) 문제라고 부릅니다.

  • 무기 (Weapons): m개의 요격체
  • 표적 (Targets): n개의 날아오는 탄두
  • 가치 (Value): 각 탄두가 위협하는 자산의 가치
  • 제약 (Constraints): 각 요격체는 최대 1개의 표적에만 할당 가능

단순한 선형 할당 문제(Linear Assignment Problem)라면 헝가리안 알고리즘 같은 것으로 다항 시간(Polynomial time) 내에 최적해를 구할 수 있습니다. 하지만 WTA는 다릅니다.

목표물에 요격체를 1개 할당했을 때와 2개 할당했을 때의 한계 효용이 다릅니다(수확 체감의 법칙). 즉, 특정 요격체를 어디에 할당하느냐에 대한 가치가 다른 요격체들의 할당 상태에 의존하게 됩니다. 이 비선형성(Nonlinearity) 때문에 문제를 작게 쪼개서 푸는 것이 불가능해지며, 1986년에 이미 이 문제가 NP-Complete 라는 것이 수학적으로 증명되었습니다.

알고리즘이 문제가 아니다: 공격자가 지배하는 비대칭 게임

물론 NP-Complete라고 해서 실무에서 아예 못 푸는 건 아닙니다. 2025년 Bertsimas와 Paskov의 연구에 따르면, Branch-Price-and-Cut 알고리즘을 사용해 10,000개의 무기와 10,000개의 표적 할당 문제를 맥북 프로에서 7분 만에 최적해를 찾아냈다고 합니다.

“오, 그럼 컴퓨팅 파워로 해결된 거 아님?” 이라고 생각하실 수 있습니다. 하지만 시니어 엔지니어라면 여기서 진짜 병목이 무엇인지 눈치채셨을 겁니다. 문제의 크기(n)를 결정하는 것은 방어자가 아니라 공격자입니다.

공격자는 진짜 탄두 사이에 값싼 기만체 (Decoy)를 섞어 쏩니다. 방어 시스템의 분류 확률이 낮다면 이 기만체들은 모두 행렬의 새로운 열(Column)이 되어 WTA 문제의 복잡도를 폭발적으로 증가시킵니다.

현재 미국이 보유한 GMD 요격체 44발로는 4발씩 할당한다고 가정할 때 고작 11개의 탄두만 안정적으로 막아낼 수 있습니다. 적이 12개의 탄두를 쏘거나, 10개의 탄두에 10개의 기만체를 섞어 쏘는 순간 방어망의 수학적 한계치를 초과해버립니다.

결론 및 개인적인 견해

이 글을 읽고 나니, 미사일 방어는 근본적으로 방어자에게 극도로 불리한 비대칭 최적화 문제 라는 확신이 듭니다.

방어자는 불확실한 SSPK와 C_tc 값을 가지고, 적이 언제 몇 발의 기만체를 섞어 쏠지 모르는 상태에서 NP-Complete 문제를 실시간으로 풀어야 합니다. 반면 공격자는 이미 고정되어 있는 방어자의 아키텍처(요격체 수, 레이더 위치)를 뻔히 들여다보며, 방어망을 뚫을 수 있는 최소한의 페이로드만 계산해서 던지면 그만입니다. 선공권(First mover advantage)마저 공격자에게 있죠.

이것은 마치 대규모 DDoS 공격을 방어하는 상황과 비슷합니다. 우리가 아무리 WAF(Web Application Firewall)를 튜닝하고 오토스케일링을 완벽하게 세팅해 두어도, 공격자가 봇넷을 동원해 생성하는 트래픽 비용이 방어자가 감당해야 할 클라우드 컴퓨팅 비용보다 압도적으로 싸다면 결국 경제성에서 지게 됩니다.

지향성 에너지 무기(레이저 등)가 대안으로 거론되지만, 체류 시간이나 대기열 감쇠 같은 새로운 스케줄링 제약이 추가될 뿐 본질적인 확장성 문제는 여전합니다. 완벽한 방어 시스템이란 존재하지 않으며, 결국 공격 비용을 방어 비용보다 비싸게 만드는 구조적 패러다임의 전환 없이는 이 밑빠진 독에 물 붓기는 계속될 것입니다.


References: