NCD의 이론과 실제: 대용량 멀웨어 분류의 도전과 해법
초록
정규화 압축 거리(NCD)는 데이터 분류에 널리 사용되지만, 그 이론적 타당성은 압축 알고리즘이 특정 속성을 만족할 것을 전제한다. 본 연구는 bzip2, zlib, lzma, PPMZ 등 인기 알고리즘이 대용량 파일에서 이 ‘정상 압축기’ 속성, 특히 멱등성을 심각히 위반함을 실험적으로 보여준다. 이 이론적 결함은 15MB가 넘는 대용량 Android 멀웨어 APK 파일의 패밀리 분류 정확도 저하로 이어지는 실용적 문제임을 확인했다. 연구진은 파일을 블록 단위로 인터리빙(Interleaving)하거나 NCD 기반 셔플링(NCD-shuffle)을 적용하는 새로운 결합 함수를 제안하여, 기존 NCD 대비 분류 성능을 크게 향상시켰다.
상세 분석
본 논문의 핵심은 NCD(Normalized Compression Distance)의 이론적 기반과 실제 구현 사이의 괴리를 실증적으로 드러내고, 대용량 파일 맥락에서의 실용적 해결책을 모색한 점에 있다. NCD는 계산 불가능한 정규화 정보 거리(NID)의 실용적 근사치로, 두 객체 X와 Y의 유사도를 C(XY) 압축 결과를 통해 측정한다. 이때 NCD가 유사도 측정 기준으로 작동하려면 사용된 압축 알고리즘 C가 ‘정상 압축기’의 네 가지 속성(멱등성, 단조성, 대칭성, 분배성)을 만족해야 한다.
논문의 실험적 분석은 특히 ‘멱등성(|C(XX)| = |C(X)|)’ 속성에 초점을 맞춘다. 캘거리, 캔터베리, 실레시아 코퍼스 등 다양한 크기의 파일을 이용한 실험에서, bzip2와 zlib는 |C(XX)|가 |C(X)|에 비해 훨씬 빠르게 증가하여 멱등성을 명백히 위반했다. 이론상 허용되는 O(log n) 수준의 오차를 훨씬 초과한 것이다. lzma와 PPMZ는 상대적으로 나은 모습을 보였으나, 약 8MB 근처에서 급격한 편차 증가를 보여 대용량에서의 문제를 예고했다.
이 이론적 결함은 Android 대용량 멀웨어(최대 15.4MB) 패밀리 분류 작업에서 현실적인 성능 저하로 나타났다. 단일 참조 샘플을 사용한 1-NN 분류에서, lzma(59.7%)와 PPMZ(44.4%)는 어느 정도 성능을 보였으나, bzip2(29.8%)와 zlib(33.3%)는 무작위 추측 수준에 머물렀다. 참조 파일 크기를 200KB 미만으로 제한하자 bzip2와 lzma의 정확도가 75% 이상으로 급등한 것은 파일 크기가 NCD 성능에 미치는 영향을 명확히 보여준다.
이러한 성능 저하의 근본 원인은 압축 알고리즘의 메모리 제한(블록 크기, 사전 크기)으로 지적된다. 대용량 파일을 X와 Y로 단순 연접할 경우, X의 정보가 Y를 압축할 때 효과적으로 활용되지 못하는 구조적 한계가 발생한다. 논문은 이 문제를 해결하기 위해 두 문자열을 결합하는 함수 J를 재정의한 ‘NCD_C,J’를 제안한다. ‘인터리빙’은 두 파일을 고정 크기 블록으로 나누어 교차 배치하는 간단한 방법이며, ‘NCD-셔플’은 각 블록 간의 NCD 유사도를 계산하여 가장 유사한 블록끼리 인접하도록 재배열하는 보다 정교한 방법이다. 실험 결과, 특히 bzip2의 경우 인터리빙을 통해 분류 정확도를 29.8%에서 52.2%로, 5개 참조 샘플 사용 시 55.2%에서 75.2%로 극적으로 향상시켜 제안 방법의 실효성을 입증했다.
댓글 및 학술 토론
Loading comments...
의견 남기기