보안 프로그래머란 업에 관해서 …

@codemaru · April 23, 2013 · 13 min read

최근 몇 년 사이에 해킹 사건이 부쩍 늘었다. 잊을만하면 한번씩 대규모 해킹 사건이 발생하면서 이제는 컴퓨터를 모르는 동네 아줌마들도 좀비 PC, DDoS같은 용어를 자연스럽게 사용하는 세상이 돼 버렸다. 해킹이 얼마나 큰 문제인지에 대해서는 온동네 사람들이 다 알고 있다. 그림자가 있어야 빛의 존재가 부각되는 것처럼 이런 상황은 우습게도 상대적으로 보안을 더 돋보이게 만드는 흐름을 만들었다. 그래서인지 요즘 부쩍 보안 쪽 진로를 물어보는 프로그래머들이 늘었다.

근 10년간 PC 보안 이라는 분야에서 프로그래머로 일하면서 내가 느낀 것은 이 분야만큼이나 성격이 적성에 많이 관여하는 곳도 없다는 생각이다. PC 보안 쪽의 진로에 대해서 약간 이나마 고민하는 사람이 있다면 자신의 성격이 여기에 나열된 것들과 맞는지 잠깐 고민하는 시간을 가져보도록 하자. 진로를 결정하는데 약간이나마 도움이 되지 않을까라는 생각을 해본다. 물론 이런 성격이 아니어도 맡은 업무를 훌륭하게 잘 할 수는 있다. 하지만 일하는 매 순간 순간이 즐겁지 않다는 데에 100원쯤은 걸 수 있을 것 같다.

변화에 대한 관성이 낮은가? 보안 쪽은 변화가 굉장히 심하다. 왜냐하면 보안 관련 코드는 다양한 코드 중에서도 항상 해커의 첫 번째 공격 대상이 되기 때문이다. 취약점은 감기처럼 보안 제품을 따라 다닌다. 따라서 그 어떤 분야보다 보안 프로그램은 고칠 일이 많다. 취약점이 간단한 것이면 다행인데 어떤 경우에는 설계 전체를 뒤집어야 하는 경우도 있다. 현장에서는 설계 전체를 뒤집는 일도 대수롭지 않게 벌어진다. 그래서 변화에 대한 관성이 강하다면 이쪽 분야에서 일하는 것이 고역일 수 밖에 없다.

경쟁 상황을 즐기는 편인가? 사람은 크게 경쟁에 대해서 두 가지 다른 반응이 나타난다. 한 부류는 경쟁에 내몰리면 긴장해서 평소보다 실력 발휘가 안 되는 쪽이고, 다른 한 부류는 경쟁할 때 오히려 능력이 돋보이는 집단이다. 당연한 이야기겠지만 전자인 사람들은 경쟁 상황을 본능적으로 싫어한다. 하지만 후자인 사람들은 그런 상황을 즐긴다. 보안은 해커와의 전쟁이 항상 벌어지는 곳이다. 매일 매일을 전쟁 같은 심각한 경쟁 조건 속에서 일한다. 따라서 이러한 상황 자체가 싫다면 이 쪽 일이 본질적으로 즐거울 수가 없다. 해커의 공격에 무력해진 코드를 보면서 어 그래 이번에 이 문제를 고쳐서 다시는 못 뚫게 만들어야지, 라는 생각을 해야 한다. 대신 왜 매일 이렇게 뚫리는 거지, 이 싸움은 언제쯤이면 끝날까, 라는 생각을 한다면 일이 즐거울 수가 없다.

자존감이 강한가? 보안 쪽 일은 안타깝게도 고맙다는 말을 들을 일이 거의 없다. 왜냐하면 문제가 생기지 않는다면 보안 제품이 잘 막아서 문제가 없는 것이 아니라 공격이 없었다고 사람들은 생각하기 때문이다. 반면에 아주 사소한 문제라도 생긴다면 보안 제품이 왜 그런 것도 방어하지 못하냐는 클레임만 잔뜩 듣는다. 자존감이 낮다면 그런 상황을 버틸 수가 없다. 외부의 비판 속에서도 자신의 성취에 대해서 객관적인 시각을 가질 수 있는 그런 정도의 강한 멘탈이 필요하다.

윤리적인 사고에 익숙한가? 보안 쪽 일을 하다 보면 옳고 그른 일의 경계가 모호해지는 경우가 많다. 당장의 당근에 눈이 멀어서 범죄를 저지르는 그런 사소한 일을 말하는 것이 아니다. 가령 2차 대전 당시에 독일군의 암호를 해독한 앨런 튜링은 옳은 일을 한 것일까? 반대로 독일군 입장에서 연합군의 암호를 해독한 엔지니어가 있다면 그 사람은 어떻게 판단해야 할까? 조국의 이익을 위해서 다른 나라를 공격하는 악성 코드를 만드는 일은 과연 옳은 일일까? 반대로 객관적인 입장에서 우리나라에 존재하는 나쁜 시설을 파괴하는 코드가 있을 때 그것을 분석해서 차단하는 것이 옳을까? 그 시설이 파괴되도록 놔두는 것이 옳을까? 보안과 악의적인 해킹은 마치 동전의 양면 정도의 차이 밖에 나지 않는 경우가 많다. 윤리적인 추상적 사고나 본인만의 뚜렷한 윤리적 입장 없이 이런 복잡하고 애매모호한 상황에 자주 놓이게 되면 어느 순간 자신이 옳은 일을 하고 있는지 아니면 범죄를 저지르고 있는지 모호해지는 경우가 한두 번이 아니다. 따라서 윤리적인 추상적 사고에 익숙하지 않다면 이 쪽 분야에서 일하는 것이 상당히 위험할 수 있다.

사실 여기까지만 들으면 보안 프로그래머는 정말 못해 먹을 짓이다. 맨날 고쳐야 하고, 공격 당하고, 욕만 먹고, 게다고 범죄 행윈지 착한 짓인지 분간도 잘 되지 않으니 말이다. 하지만 프로그래머 입장에서 좋은 상황도 여럿 있다.

우선은 감성적인 부분이 크지 않다는 점이 있다. 여러분이 UI를 하거나 게임을 만들거나 워드프로세서를 만들거나 심지어는 압축 프로그램을 만든다고 해도 거기엔 감성이 작용할 부분이 다분하다. 여러분은 퐌타스틱한 기능이라고 만들었는데 다른 사람들은 싫어할 수 있다는 말이다. 2픽셀 두께가 괜찮아서 그렇게 만들었는데 다른 사람들은 3픽셀을 좋아할 수도 있다. 아트적인 감성이 있는 사람이라면 이런 상황을 즐길 수도 있겠지만 논리적인 감성만 있는 사람이라면 이런 상황이 정말 헬이다. 하지만 보안 쪽 일은 이런 부분이 거의 없다. 정답이 맞고, 제대로 동작한다면 크게 딴지 걸릴 일이 없다.

미션이 명확하다. 앞선 이야기의 연장선인데 대부분의 도메인에서는 특정 프로그래머의 역량을 가늠하기가 쉽지 않다. 그런데 보안 쪽은 미션이 명확하기 때문에 누가 잘하는지 못하는지가 명확하게 구분된다. 찾아내고 탐지하고 방어하고 치료하면 된다. 매우 쉽다. 그걸 해내는 사람과 그렇지 않은 사람은 눈에 띄게 차이가 난다. 이 말은 돌려 말하면 그 어떤 분야보다 손쉽게 록스타 대접을 받을 수 있다는 의미이기도 하다. 실력만 있다면 말이다. 참고로 문제는 널려 있다. 풀기가 어려워서 그렇지…

유행은 돌고 돈다. 취약점도 돌고 돈다. 새로운 시스템에서 새로운 취약점이 나오기도 하지만 과거 유행했던 일들이 돌아가면서 다시 재탕되기도 한다. 이 말은 히스토리만 알고 있어도 반쯤은 먹고 들어갈 수 있다는 말이다. 또 새로운 시스템을 구성할 때에도 후배들에게 그렇게 쪼다같이 만들었다가 과거에 A, B, C란 취약점과 D, E랑 충돌나서 x고생 했다는 이야기를 해줄수도 있다. 생각보다 경험과 경력이 든든한 진입 장벽이 되어 주는 곳이기도 하다.

끝으로 사족을 하나만 덧붙이지만 개인적으로 여러분이 경제적 여유를 가진 상황에 태어났다면 자선 사업을 하기를 권하고 싶다. 여러분의 돈을 나눠주는 일을 하면 우습게도 매일같이 고맙다는 말을 들을 일 뿐이고, 그렇게 골치 아프지도 않고, 실수 한번이 치명적이지도 않다. 그러다 심심해서 코딩 하고 싶은 날에는 남는 시간에 오픈 소스 작업에 기여를 하면서 다시 고맙다는 소리를 들으면 된다. 환상적이다. 물론 여러분이 남에게 나눠주고도 먹고 살 만큼의 경제적 여유를 가지고 있다면 말이다. ㅋ~

남의 돈을 빌어먹는 업이란 그 자체로 본질적으로 고달픈 일이다. 업이 요구하는 자질과 자신의 성격이 잘 맞다면 그나마 과정 속에서 느끼는 고통은 좀 덜할 것 같다. 성격은 생각보다 쉬이 바뀌지 않는다. 대체적으로 업에 성격을 맞추는 것보단 자신의 성격에 어울리는 업을 찾는 것이 훨씬 더 쉽다. 그러니 다시 한 번 잘 생각해보자. 나는 어떤 사람인지 말이다.

 12  0

 

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