2018년 5월 16일 수요일

성능과 정확도 사이에서

대부분의 IT 분야에서 소프트웨어 완성도는 기능이 동작하느냐, 마느냐의 문제다. 그래서 기능이 동작하면 모두가 해피엔딩. 그 다음엔 더 빨리, 더 많이 할 수 있느냐 없느냐의 문제로 확장되겠지만 결론은 마찬가지.

페이스북은 전세계 수억 명 사용자의 좋아요 개수를 잽싸게 수집해서 보여준다. 정확할 필요도 없다. 1K나 1.1K 식으로 두리뭉실 넘어가도 모두가 만족하며, '진짜 좋아할까?'란 의심같은 건 품지 않는다. 좋으니까 좋아요를 눌렀겠지(..)

사람들이 숫자를 좋아하는 이유는 복잡하게 머리 굴리지 않아도 상태 확인이 가능(할 거라 생각)하기 때문. 좋아요나 팔로워 개수만으로 내가 사회생활을 잘 하고 있는지 측정할 수 있으니 얼마나 편한가!?


그런데 좋아요를 보안 관점에서 봐야 한다면? 

예를 들면, 스토킹 성격은 없을까란 쓸데없는 걱정을 해보자. 진짜 좋아하는지부터, 누가 좋아하는지? 왜 좋아하는지? 얼마나 좋아하는지 등등에 대한 측정이 필요하지 않을까?

소프트웨어가 기능한 결과물의 성격이 보안 관점에서 이로운가? 해로운가? 대량의 로그를 빠르게 수집하는 기능 덕에 쌓인 빅데이터의 의미가 안전인가? 위험인가?

진짜 위험인지, 가짜인지에 대한 판단이 필요하다. 그런데 이건 소프트웨어가 해주지 못한다. 사람의 개입이 필요한 영역. 많은 분야에서 소프트웨어는 기능과 성능만 받쳐주면 역할 수행에 무리가 없는데, 보안 분야는 그게 잘 먹히지 않는다는 얘기.
정보보호 기술은 관리자의 판단을 도와주는 제한적 전문가 시스템(Expert System)만을 제공... 정보보호는 제품이 아닌 전문가와 잘 구성된 절차에 의해 수행된다 - 네트워크 보안 실무 (20 페이지)

하지만 현실은 정보보안 분야도 성능에 대한 집착을 버리지 못한다. IDS를 이용해서 정부 네트워크를 감시하던 미 국토안보부는 2008년, 보안 업계를 꼬드겨 OISF라는 재단을 만든 후, 새로운 IDS를 만들게 했다.

그 결과물이 suricata. 초창기엔 세금 퍼다가 겨우 snort 카피냐, 성능은 왜 그 모양이냐는 비난도 많았지만, 현재는 오픈소스 IDS 분야에서 꽤 알아주는 분위기. 멀티스레딩, GPU 가속 지원 등을 통해 snort보다 나은 성능을 자랑하기 때문이 아닐까 한다.

그런데 미 국토안보부는 과연 성능에 목말라서 새로운 IDS를 원했을까? 그만한 성능을 제공하는 상용 제품이 없어서? 아니면 상용 제품 살 세금 아끼려고?

가끔 치미는 NSA의 selinux나 DHS의 suricata 등 미 정부 기관의 오픈소스 행보에 대한 의구심과는 별개로, 기술자 입장에서 미 국토안보부가 새로운 IDS를 원했던 이유는 쏟아지는 로그에서 진짜 위험을 찾다 찾다 얻은 깊은 빡침 때문이라 생각한다. 그랬으면 좋겠다 그러나 결과는 성능만 좋아졌다.
보안솔루션 벤더들이 기술 개선 방향을 잘못 잡았기 때문이다. 정확한 '분석 '보다 트래픽 처리 '성능 '에 집중했던 것 - IDS와 보안관제의 완성 (449페이지)

왜 성능에 집착할까?

전엔 그저 몰라서라고 생각했다. 정확하게 동작하는 방법을 몰라서 성능 개선에 매달리는 거라 생각했다. 시간이 꽤 지나고 나서야 그 생각이 틀렸음을 깨달았다. 진짜 이유는 (하드웨어적인) 성능 개선이 쉽기 때문이다.

과거 IDS 벤더 재직 당시 허구한 날 고객사의 성능 지적에 달달 볶였는데, 결국 해결책은 하드웨어 업글이었다. CPU 더 좋은거 달고, 가속기 카드 달고, 이러면 다 해결되더라. 80년대 대부분의 이론이 완성된 인공지능이 이제와서 빛을 보는 이유도 다 하드웨어 발전 덕.

2코어로 안 되면, 4코어 달고, 그래도 안 되면 8코어 달고. 정신력 타령 백날 해봐야 현질, 물량전 못당한다. 10G, 100G 처리한다며 티내기도 좋다. 어느 업체는 입출력 성능 문제를 SSD로 해결했다며 대단한 기술인 양 소개하더라.

여기서 잠깐

생산자가 성능에 집착하는 이유는 무엇일까? 개발이 쉬워서이기도 하지만, 가장 큰 이유는 사용자가 성능에 집착하니까. 왜? 처리 시간 재고, 처리량 재는 게 제일 쉬우니까. 미 국토안보부가 정말 성능에 목말라했다면, 그 이유 역시 성능 탓 하는 게 제일 쉬우니까.
'그것에 대해 내 기분이 어떤가? '처럼 쉬운 질문이 '그것에 대한 내 의견은 무언인가? '처럼 어려운 질문의 답을 대체한다 (본능적으로 어려운 문제보다 쉬운 문제를 선택한다) - 생각에 관한 생각 (202 페이지) 
우리가 측정할 수 있는 것은 종종 우리가 관심을 갖고 마음을 쓰는 것과 일치하지 않는다 - 모두 거짓말을 한다 (291페이지)
측정할 수 있으면 관리할 수 있다. 하지만 목표와 상관없는 것을 측정하면 그 목표를 이룰 수 없을 것이다 - 운과 실력의 성공 방정식 (315페이지) 

반면 정확도를 높이려면? 

처리를 빨리, 많이 했다는 얘기는 로그도 많이 쌓였다는 얘기. 좋아요 숫자처럼 로그 숫자 세는 것만으로 문제는 해결되지 않는다. 진짜 위험한 로그인지 아닌지 판단해야 된다는, 머리 복잡해지는 얘기.

정확도를 높이는 건 왜 어려울까? 일단 관심이 적다. 왜? 네트워크 보안의 시작이 방화벽이라는 사실에서 힌트를 얻을 수 있다. 허용정책 걸면 허용로그, 차단정책 걸면 차단로그 나오는 게 방화벽. 로그를 의심할 필요가 없다.

사람들은 성공했던 경험을 기억하고 반복한다. 장애만 터지지 않으면 알아서 잘 동작하던 방화벽을 경험한 사람들이 로그의 진위를 의심해야 하는 IDS 역시 방화벽 취급해버린 것 아닐까?

아메리카 형님들이 맨날 성능 타령만 하지 말고, 정확도에도 관심 좀 가져주면 해법이 나올 듯도 한데, 모르겠다. 요즘도 IDS 성능 관련 질문을 종종 받는데, 맨날 앵무새처럼 같은 답을 해야 하는 나도 답답하다(..)
처리 성능만 좋아지면 정확한 룰은 물론, 부정확한 룰도 빠르게 처리할 뿐이다 - IDS와 보안관제의 완성 (455페이지)

사족
이미지 인식 분야에서 인공지능이 사람 비스무리한 정도가 되려면 학습용 이미지가 백만 장은 필요하다고 하더라. 인공지능 냄새만 풍겨도 혹하는 분위기인지라 당연히 보안 분야에서도 쓰려할테고, 그럼 학습 데이터 많이 필요할텐데? 덕분에 정확도에 대한 관심 좀 올라가려나?

근데 학습 데이터 잘 만들어서 인공지능이 일 잘 하면 칭찬은 인공지능이 받고, 못하면 학습 데이터 만드느라 뺑이친 사람만 욕 먹겠지?

관련 글

댓글 없음:

댓글 쓰기

크리에이티브 커먼즈 라이선스