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