Skip to main content
QUICK REVIEW

[论文解读] WaterRPG: A Graph-based Dynamic Watermarking Model for Software Protection

Ioannis Chionis, Maria Chroni|arXiv (Cornell University)|Mar 17, 2014
Advanced Steganography and Watermarking Techniques参考文献 21被引用 4
一句话总结

本文提出 WaterRPG,一种基于图的动态水印模型,通过利用函数调用关系将程序执行轨迹结构化为同构的可约置换图来嵌入软件水印。该模型在秘密密钥输入下通过运行时调用图动态嵌入水印,在低开销下实现对混淆、优化和反编译攻击的高抗性,并具备完美的提取准确性。

ABSTRACT

Software watermarking involves embedding a unique identifier or, equivalently, a watermark value within a software to prove owner's authenticity and thus to prevent or discourage copyright infringement. Towards the embedding process, several graph theoretic watermarking algorithmic techniques encode the watermark values as graph structures and embed them in application programs. Recently, we presented an efficient codec system for encoding a watermark number $w$ as a reducible permutation graph $F[π^*]$ through the use of self-inverting permutations $π^*$. In this paper, we propose a dynamic watermarking model, which we call WaterRPG, for embedding the watermark graph $F[π^*]$ into an application program $P$. The main idea behind the proposed watermarking model is a systematic use of appropriate calls of specific functions of the program $P$. More precisely, for a specific input $I_{key}$ of the program $P$, our model takes the dynamic call-graph $G(P, I_{key})$ of $P$ and the watermark graph $F[π^*]$, and produces the watermarked program $P^*$ having the following key property: its dynamic call-graph $G(P^*, I_{key})$ is isomorphic to the watermark graph $F[π^*]$. Within this idea the program $P^*$ is produced by only altering appropriate calls of specific functions of the input application program $P$. We have implemented our watermarking model WaterRPG in real application programs and evaluated its functionality under various and broadly used watermarking assessment criteria. The evaluation results show that our model efficiently watermarks Java application programs with respect to several watermarking metrics like data-rate, bytecode instructions overhead, resiliency, time and space efficiency. Moreover, the embedded watermarks withstand several software obfuscation and optimization attacks.

研究动机与目标

  • 通过支持抗代码变换和逆向工程的鲁棒、动态水印技术,应对日益严峻的软件盗版挑战。
  • 通过将水印编码在执行轨迹而非固定代码结构中,克服静态水印技术的局限性。
  • 开发一种模型,确保在常见软件攻击(如混淆、优化和反编译)下水印的完整性。
  • 在保持真实 Java 应用中强隐蔽性和高抗性的同时,实现高数据速率和低计算开销。
  • 通过秘密密钥输入实现动态调用图同构,确保在未受攻击程序中零误报或漏报的可靠水印提取。

提出的方法

  • 使用自逆置换 $ /pi^{*} $ 表示水印为可约置换图 $ F[/pi^{*}] $,以高效编码水印整数。
  • 在秘密密钥输入 $ I_{key} $ 下构建原始程序 $ P $ 的动态调用图 $ G(P, I_{key}) $,该图作为运行时执行轨迹。
  • 通过修改函数调用,将水印图 $ F[/pi^{*}] $ 嵌入程序,使得生成的水印程序 $ P^{*} $ 在 $ I_{key} $ 下产生的调用图与 $ F[/pi^{*}] $ 同构。
  • 使用编解码算法将水印值映射到图结构,确保水印仅通过函数调用序列的结构性变化进行嵌入。
  • 即使在语义保持的变换或代码优化下,也通过保持 $ F[/pi^{*}] $ 的结构性质确保水印的完整性。
  • 在嵌入过程中同时利用新代码和宿主代码,以增强隐蔽性,并使水印成为程序功能行为的内在组成部分。

实验结果

研究问题

  • RQ1动态水印模型能否通过同构的运行时调用图嵌入水印,同时保持低计算和内存开销?
  • RQ2该水印对混淆、优化和反编译等常见软件攻击的抗性如何?
  • RQ3该模型在水印嵌入后在多大程度上保持了程序功能和执行效率?
  • RQ4在未修改的程序中,能否实现零误报或漏报的可靠水印提取?
  • RQ5当水印图大小和所用函数数量增加时,该模型的数据速率如何扩展?

主要发现

  • WaterRPG 模型在未受攻击程序中实现了 100% 的水印提取准确率,且无误报或漏报,因为动态调用图 $ G(P^{*}, I_{key}) $ 始终与 $ F[/pi^{*}] $ 同构。
  • 该模型的时间和空间开销与水印图 $ F[/pi^{*}] $ 的大小成线性关系,且字节码指令开销极低。
  • WaterRPG 成功抵御了多种攻击,包括表达式重排、循环重排、ProGuard 混淆以及语义保持的优化。
  • 即使使用 Java Decompiler 等工具进行反编译,水印依然完整,因为 $ G(P^{*}, I_{key}) $ 与 $ F[/pi^{*}] $ 之间的同构性得以保持。
  • 当原始程序较大时,该模型仍能保持高数据速率,因为所用函数数量与水印图大小直接相关。
  • 嵌入过程将水印逻辑无缝集成到宿主代码中,增强了隐蔽性,并使移除水印需完全理解程序逻辑。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。