STONE (Syntax TOkeN preserving codE watermarking)은 코드의 기능적 무결성을 보존하면서 워터마크 삽입할 수 있는 방법론입니다. 기존 워터마킹 기법들이 코드의 문법적 핵심요소 (예: 연산자, 키워드 등)을 수정하여 실행 오류나 로직 오류를 발생시키는 문제점을 개선하기 위해, STONE은 문법적으로 중요한 토큰은 건드리지 않고, 오직 비문법(non-syntax) 토큰에만 워터마크를 삽입합니다.
Figure에서는 SWEET과 STONE의 차이를 시각적으로 보여주는데, SWEET은 예기치 않게 %
연산자를 //
로 변경하는 등의 오류를 발생 시켜 코드 실행에 문제를 일으키는 반면, STONE은 이러한 문법적 요소를 유지하여 코드의 정상 실행을 보장하는 필요성을 강조합니다.
CWEM (Code Watermarking Evaluation Metric)은 워터마킹 기법의 효과를 기능적 정확성, 탐지 가능성, 자연스러움의 세 가지 관점에서 종합적으로 평가하기 위한 지표입니다.
기존 연구들은 주로 기능적 정확성(correctness)이나 탐지 가능성(detectability) 단일 지표에만 초점을 맞추었으나, 실제 코드의 경우 워터마크 삽입으로 인한 코드의 자연스러운 변화(naturalness)도 중요한 문제입니다. CWEM은 이 세 가지 요소를 각각 반영하여, 서로 다른 워터마킹 기법 간의 균형 잡힌 비교를 가능하게 합니다.
CWEM은 아래의 세 가지 지표를 각각 가중치$(\alpha,\beta,\gamma)$를 부여하여 통합 평가합니다. (단, $\alpha + \beta + \gamma = 1$)
$$ CWEM = 𝛼 · Correctness(C_{wm}) + 𝛽 · Detectability(C_{wm}) + 𝛾 · Naturalness(C_{wm},C) $$
기능적 정확성은 워터마크 삽입 전후 코드가 올바르게 동작하는 지를 평가합니다.
$$ \mathrm{Correctness}(C_{wm}) = \mathbb{E}{C{wm}}\left[ 1 - \frac{\binom{n - c}{k}}{\binom{n}{k}} \right] $$