[소고] 게임 보안: 마이너리티 리포트 딜레마 #0

@codemaru · February 21, 2013 · 11 min read

                    0 md 0

IRIS

Because these Minority Reports are destroyed the instant they occur.
단독 의견의 리포트는 파괴되거든요.

ANDERTON

Why?
왜요?

IRIS

Obviously, for Precrime to function, there can’t be any suggestion of fallibility.
After all, what good is a Justice system that instills doubt?
It may be reasonable, but it’s still doubt.
시스템의 완벽성엔 흠집이 없어야 돼요
오류의 여지를 인정하면 효율성에 문제가 생기죠

– 마이너리티 리포트, 2002

역자가 시스템 엔지니어가 아닌지 의심이 들 정도로 원문보다 번역이 아름다운 마이너리티 리포트의 한 장면. 실제로 시스템 상의 오류의 여지를 인정하면 효율성에 문제가 생기는 경우는 수도 없이 찾을 수 있다. 게임 보안 프로그래머들은 속도와 공간의 문제처럼 오류의 여지와 효율성 사이에서 항상 트레이드오프를 강요 받는다.

#0

XIGNCODE 개발팀에서는 지속적으로 새로운 탐지 루틴을 개발한다. 이때 우리가 개발한 탐지 루틴을 P라고 생각해 보자. 우리는 이 코드 P의 성능을 0에서 1사이의 값으로 표기할 수 있다. 성능이 0이란 말은 과거에 알려진 해킹툴은 차단할 수 있지만 미래에 출현할 해킹툴에 대해서는 하나도 차단할 수 없다는 것을, 반대로 1은 미래에 출현할 모든 해킹툴까지 예측해서 차단할 수 있다는 것을 의미한다. P가 1인 루틴이 하는 일이 마이너리티 리포트에서 나오는 프리크라임 시스템과 동일하다고 생각하면 되겠다.

여기까지만 살펴보면 당연히 P의 성능이 1인 루틴이 최고인 것처럼 판단된다. 하지만 여기엔 “마이너리티 리포트”에서 지적한 것과 동일한 함정이 숨어있다. 바로 오진이다. 물론 루틴의 구현 방식에 따라서 성능과 오진 사이에 큰 상관 관계가 없는 경우도 있지만 대부분의 경우에 성능 지표가 올라가면 덩달아 오진 지표도 같이 올라간다. 성능이 1이면서 오진 가능성은 0인 ‘현자의 돌’같은 루틴이 있다면 좋겠지만 현실 세계에 그러한 것은 존재하지 않는다. 물론 아직 그런 방법을 우리가 찾지 못한 것일 수도 있다. 어쨌든 이러한 성능과 오진의 관계성 때문에 게임 보안 프로그래머들은 항상 아이리스가 말한 것처럼 reasonable과 doubt 사이에서 갈등한다. 이 정도면 reasonable한 것일까? 이건 너무 doubt 스럽진 않은걸까? 하고 말이다. 그리고 그러한 의문에 따라서 루틴의 성능 지표를 강제로 조금씩 조정한다. 실제 세상에서 봐줄만한 수준으로 돌아가도록 말이다.

#1

그렇다면 왜 굳이 P의 성능을 높이는 방식으로 문제를 해결하려 했던 것일까? P가 0인 루틴을 사용하고 빠르게 과거를 추적한다면 효과를 볼 수 있지도 않을까? 맞다. 영리한 생각이다. 하지만 이런 전략이 실패하는 이유는 크게 세 가지 정도가 있다.

첫째는 업데이트 속도다. 지난 글에서도 꾸준히 말하고 있지만 엄청나게 많은 사람들이 사용하는 게임과 관련된 코드를 자주 업데이트 하는 일에는 굉장히 많은 검증 작업이 필요할 수 밖에 없고, 또 위험할 수 밖에 없다. 따라서 자연히 업데이트 속도가 빠를 수가 없다. 그러니 덜 업데이트하고 더 효과적인 코드를 만드는 수 밖에는 없다.

둘째는 해킹툴의 배포 속도다. 일반적으로 해킹툴의 배포 수준을 우리는 실행 대비 해킹툴 검출 비율로 판단한다. 이 오염도가 1%를 넘어서는 게임들에 대해서는 과거를 추적하는 방식으로는 제 아무리 업데이트 속도가 빠르다고 한들 큰 효과를 보기가 힘들다. 해커는 우리가 설날 떡국을 삼키는 그 순간에서 컴파일을 하고 코드를 고치고 릴리즈를 한다. 물론 쪽수는 우리가 상상도 하지 못할 정도로 많다. 그러니 속도전으로 가는 것은 크게 좋은 전략은 아니다. 하지만 아이러니 하게도 속도전이 반드시 필요한 순간도 있긴 하다.

정말 10명중 한명은 핵을 사용하는 상황. 방마다 핵이 넘쳐 난다는 말이 거짓말은 아니다.

정말 10명중 한명은 핵을 사용하는 상황. 방마다 핵이 넘쳐 난다는 말이 거짓말은 아니다.

셋째는 추적의 비 효율성이다. 우리가 수집할 수 있는 해킹툴이란 정말 빙산에 일각에 불과하다. 통상적으로 우리는 하루에 1500-2000개 정도의 해킹툴 샘플을 수집한다. 물론 이 수치는 적용되는 게임이 늘어나면 늘어날수록 기하급수적으로 높아진다. 하지만 이것 또한 정말 아주 큰 빙산에 점하나 정도 밖에는 되지 않는다. 세상에는 정말 다양한 게임핵들이 있고, 또 지금 이 순간에도 만들어진다. 그걸 우리가 모두 찾아낸다는 것은 정말이지 불가능에 가깝다.

이런 다양한 이유 때문에 일정 수준 오진율을 감수하고서라도 P의 성능이 높은 루틴을 사용할 수 밖에 없다. 물론 오진도 낮추면서 성능을 높이는 것이 최고라는 건 두말하면 입아푸다.

#2

그렇다면 어떤 것들이 주로 오진의 범주에 포함될까? 탐지 루틴의 성격에 따라서 천차만별이긴 하지만 대다수 탐지 루틴에서 공통적으로 높은 오진율을 자랑하는 것들이 있다. 바로 악성코드이거나 바이러스다. 일부는 게임 계정을 탈취하는 목적으로 사용되는 것도 있으니 각별한 주의가 필요하다. 종종 이런 심각한 악성 코드나 바이러스에 감염된 사용자들이 문의를 해오곤 한다.

대부분 원격으로 게임을 할 수 있도록 대응을 해주고 있는데, 가끔씩은 백신으로 아예 치료가 불가능한 것들이 있기도 하고, 더러는 치료를 하고 나면 인터넷이 먹통이 되는 경우도 있다. 이런 경우는 실컷 도와주고도 난감한 상황에 봉착하는 경우가 한두번이 아니다.

안타깝지만 이런 일이 더 많아 질수록 우리는 더 많은 해킹툴을 놓칠 수 밖에 없다.

안타깝지만 이런 일이 더 많아 질수록 우리는 더 많은 해킹툴을 놓칠 수 밖에 없다.

#3

많은 게이머들이 공정한 게임을 하고 싶어한다. 정말 공정한 게임을 하고 싶다면 바이러스나 악성코드에 감염되지 말자. 그러면 게이머는 계정탈취나 랙을 겪지 않아서 좋고, 우리는 루틴의 성능 지표를 강제로 조정하지 않아서 좋고, 탐지율은 올라가서 좋고, 게임 운영자는 클레임이 줄어서 좋다. 이렇게 몇 바퀴만 구르면 깨끗한 게임 환경을 만드는 것도 어렵지 않다.

명심하자. 무리 중에 더러운 녀석을 찾는 가장 쉬운 방법은 모두가 깨끗해지는 것이다. 모두 똥을 묻히고 있으면 누가 더러운지 판단이 잘 서지 않는다. 자 이제 가서 무료 백신을 설치하고 실시간 감시기를 켜도록 하자. 그리고 절.대.로 인터넷에서 받은 이상한 파일은 실행하지 말도록 하자. 설령 백신이 그 파일이 문제없다고 보고할지라도 말이다. 참고로 무료 백신 중에는 광고가 뜨긴 하지만 Avira가 제일 잘 잡는 것 같다.

@codemaru
돌아보니 좋은 날도 있었고, 나쁜 날도 있었다. 그런 나의 모든 소소한 일상과 배움을 기록한다. 여기에 기록된 모든 내용은 한 개인의 관점이고 의견이다. 내가 속한 조직과는 1도 상관이 없다.
(C) 2001 YoungJin Shin, 0일째 운영 중