동적 그래프 소프트웨어 워터마크 변조 방지 효과 평가
본 논문은 동적 그래프 기반 소프트웨어 워터마크에 상수 인코딩과 상수 분할 기법을 적용한 변조 방지 기법을 구현하고, 코드 크기, 힙 사용량, 실행 시간에 미치는 영향을 실험적으로 분석한다. 결과는 변조 방지 코드가 다양한 의미 보존 변환 공격에 강인함을 보여준다.
초록
본 논문은 동적 그래프 기반 소프트웨어 워터마크에 상수 인코딩과 상수 분할 기법을 적용한 변조 방지 기법을 구현하고, 코드 크기, 힙 사용량, 실행 시간에 미치는 영향을 실험적으로 분석한다. 결과는 변조 방지 코드가 다양한 의미 보존 변환 공격에 강인함을 보여준다.
상세 요약
이 연구는 소프트웨어 보호를 위해 두 가지 기술, 즉 동적 그래프 워터마크와 변조 방지(템퍼 프루프) 기법을 결합하는 방안을 제시한다. 핵심은 Thomborson 방식의 상수 인코딩을 기반으로, 상수를 워터마크 트리와 무관하게 인코딩할 수 있도록 하는 ‘상수 분할(constant splitting)’ 아이디어이다. 기존 상수 인코딩은 워터마크 트리 구조와 상수 값 사이의 일치성을 요구했으나, 본 논문은 상수를 여러 조각으로 나누어 각각을 독립적인 서브트리에 매핑함으로써 값 제한을 없앤다. 이렇게 하면 워터마크 트리의 형태와 무관하게 모든 리터럴을 보호 대상에 포함시킬 수 있다.
구현 단계는 먼저 대상 프로그램에서 리터럴 상수를 추출하고, 각 상수를 비트 단위 혹은 바이트 단위로 분할한다. 그 후 각 조각을 워터마크 트리의 노드에 대응시키고, 실행 시점에 해당 노드 값을 조합해 원래 상수를 복원한다. 복원 로직은 동적 그래프 워터마크 실행 흐름에 삽입되어, 워터마크가 정상적으로 동작하지 않으면 상수 복원도 실패하도록 설계되었다. 따라서 워터마크를 제거하거나 변형하려는 공격은 곧바로 프로그램의 정상 동작을 방해한다.
실험에서는 변조 방지 코드를 적용한 프로그램과 원본 프로그램을 비교하였다. 코드 크기는 평균 30 % 증가했으며, 힙 메모리 사용량은 25 % 정도 상승했다. 실행 시간은 상수 복원 로직이 추가됨에 따라 평균 12 % 정도 지연되었다. 그러나 이러한 오버헤드는 보안 이득에 비해 합리적인 수준으로 평가된다. 또한, 의미 보존 변환(예: 명령어 재배열, 레지스터 할당 변경, 무의미한 코드 삽입) 공격에 대해 변조 방지 코드가 높은 복원율을 유지함을 확인하였다. 특히, 워터마크 트리 자체를 변형하려는 시도는 복원 로직에서 검증 오류를 일으켜 프로그램이 비정상 종료되도록 만든다.
한계점으로는 상수 분할 과정이 복잡한 경우(예: 대형 배열이나 문자열) 인코딩 비용이 급증할 수 있다는 점이다. 또한, 힙 사용량 증가가 메모리 제한이 엄격한 임베디드 환경에서는 문제가 될 수 있다. 향후 연구에서는 분할 전략을 동적으로 최적화하고, 압축 기반 인코딩을 도입해 오버헤드를 최소화하는 방안을 모색한다.
📜 논문 원문 (영문)
🚀 1TB 저장소에서 고화질 레이아웃을 불러오는 중입니다...