이 글은 회상글이다. 지금은 2020년이지만 2019년에 수행했던 프로젝트에 대해 회상해보려고 한다.

시작

이 대회에 대해서는 예전부터 알고는 있었는데, 애초에 자동차 보안에 관련된 대회가 별로 없어서 기억하고 있다. 대회에 엄청 많은 부문들이 있는걸로 아는데, 난 그중에서 융합보안트랙 자동차용 침입 탐지 중 차량 내부 네트워크 부문팀장겸 참여했었다.

과정

R&D 데이터 챌린지 자체가 차량 내부 네트워크 데이터셋(.csv 패킷들 모여있는 파일)이 주어지는데, 패킷 하나하나에 대해 정상인지 비정상(악성) 인지에 대해 플래그를 써서 제출하는 식으로 진행됐다. 평가는 F1-score 방식으로 채점한다. 데이터셋은 학습용(분석용, 정답 포함) 이랑 제출용이 따로 있었으며, 차량별 및 학습용은 공격 유형별로 제공되었다.

온라인 예선 (2019.10.1~2019.11.8)

일단 10월 첫째주에는 논문을 봤었다. 그리고 대회 파악을 좀 하고, 얘기를 나눠보다 AI를 써야 하나 아닌가에 대한 이야기로 흘러갔던 것 같다. 일단 CAN 데이터 자체가 몇 바이트 안되기 때문에(최대 16바이트?) AI는 쓸 필요가 없지 않을까 했는데, 일단 짜보라는 의견이 있어서 1d CNN으로 짜갔다.
결과는 정확도 망…
그 외에 테스트 데이터에 정답지가 있으니까 threshold를 이용해서 정상 패킷 사이에서 비정상 패킷이 오는 간격을 찾자는 의견이 있었고, 그리고 논문을 읽다가 survival analysis에 대한 접근법을 구현하기도 하고, 해밍 디스턴스를 이용하기도 했다. 그 외에 우리 팀에서 RNN-LSTM모델을 도입하기도 했었는데, Word to Vector를 이용했다.

그 외에 내가 cnn 때려치고 짠 코드는 Loose Ground Truth Algorithm으로, CAN 데이터 필드에서 등장하는 바이트만을 고려하도록 하였다. 원래 Ground Truth Algorithm은 정상적인 CAN 패킷들에서 CAN ID별 Data field의 각각 Byte index에 올 수 있는 값을 산정하고, 이를 Ground Truth로 지정하는 기법이다. 임의의 CAN 패킷들을 하나씩 비교하여 그 패킷이 Ground Truth 범위 내에 포함되는 패킷이라면 정상, 그렇지 않을 경우 공격으로 탐지하는데, 새롭게 등장하는 CAN 패킷들에 대해서는 오탐할 가능성이 높다고 생각하여 필드의 인덱스는 고려하지 않도록 하였다. 하지만 Gorund Truth든 Loose Ground Truth든 둘 다 과거의 CAN 패킷들에 대해서만 고려를 하므로, 새롭게 등장하는 CAN 패킷들에 대해서 오탐할 가능성이 있다고 생각했다.

오프라인 본선 (2019.11.22)

예선은 통과했고, 본선은 롯데타워(너무 멀었다)에서 (아침에)진행했다. 예선과 다르게 본선에서는 5회인가? 제출 횟수에 제한이 있었고, 결과를 바로 확인할 수 있게끔 만들어놨었다. 오전 오후 진행해서 합산으로 계산했었는데,, , , 지금까지 팀에서 했던 모든 기법들이 먹히지 않았다.. 아마 새로운 공격기법이 추가되었거나, 암튼 데이터셋이 예선과 좀 차이가 많이 있었던 걸로 기억한다. 그리고 RNN으로 짠 알고리즘은 데이터셋이 너무 커서 시간안에 다 돌려보지도 못했다.(너무 아쉽다)
결국 각자가 짰던 알고리즘 결과를 확인하고, 짜집기해서 제일 결과 좋았던 걸로 제출했고, 다행히 두 팀 정도를 제외하고는 결과는 다른 팀도 마찬가지었고, 겨우 최종 3위로 마무리해서 한국정보보호학회회장상과 같이 받았다.

느낀점

이후 연말에 팀끼리 모여서 뒤풀이했던 기억이 난다. 강남역 엄청 막혀서 1시간 넘게 늦은 듯..
1등팀(단일팀) 분이 압도적으로 점수가 높았는데, 기법 발표 내용으로 나중에 한 번 짜보고 싶다. 지금은 코로나다 인턴이다 겹쳐서 휴학하고 잠시 쉬고 있는데, 프로젝트 내용보니까 되게 허접해 보인다. 그만큼 내가 성장했다고 믿고싶기는 한데, 앞으로 더 노력해야겠다.