软件水印综述笔记

《关于软件抄袭检测研究综述》论文的整理和理解

软件水印综述笔记

相关概念的整理如下

软件抄袭

本研究对软件抄袭的定义为攻击者(抄袭者)在对软件没有任何或很少了解的情况下花费很少的精力对软件代码实施的抄袭;
也就说抄袭者不会花时间**或理解代码, 甚至完全没有任何代码知识, 而是通过专业工具或者很少的人工修改实施抄袭, 这也是目前研究人员关注的抄袭问题。

代码混淆

将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为,使得阅读的人无法根据名字猜测其用途。
重写代码中的部分逻辑,将其变成功能上等价,但是更难理解的形式。比如将for循环改写成while循环,将循环改写成递归。

代码混淆器也会带来一些问题。主要的问题包括:

  1. 被混淆的代码难于理解,因此调试以及除错也变得困难起来。
  2. 开发人员通常需要保留原始的未混淆的代码用于调试。对于支持反射的语言,代码混淆有可能与反射发生冲突。
  3. 代码混淆并不能真正阻止反向工程,只能增大其难度。因此,对于对安全性要求很高的场合,仅仅使用代码混淆并不能保证源代码的安全。

因为对寄存器静态水印概念不是特别理解,所以我又去看了另一篇论文,笔记如下

Software Watermarking Algorithm 基于STC的静态软件水印[2]

QP和QPS的方法

  • 插入的信息转换为字节序列
  • 根据需要的字节序列,每两个顶点之间都连有一条边,特殊的边通过算法计算出来

QP

  1. 通过图着色的方法插入数字签名
  2. 但是在确切的环境下无法准确地提取出水印

改进提出了QP

  1. 可以准确提出信息
  2. 但是可以存入的信息非常短

于是出现了本文研究的方法STC

  1. 可以准确提出信息
  2. 可以存入任意长度的信息

图着色算法(程序冲突图)

  1. 在寄存器中活跃存储的值将会被分析并且用对应的边记录在图中
  2. 两个点连接代表了这两个点在活跃时期有冲突(即同一时间这两个点不能同时占用一个寄存器)
  3. 相交图中,相交的节点不能着同一颜色;每一种颜色对应一个寄存器。

参考论文文献

[1]田振洲,刘烃,郑庆华,佟菲菲,吴定豪,朱森存,陈恺.软件抄袭检测研究综述[J].信息安全学报,2016,1(03):52-76.

[2]LU XiaoCheng School of Computer Science and Technology Wuhan University of Technology Wuhan,China CHEN Zhiming School of Computer Science and Technology Wuhan University of Technology Wuhan,China. Software Watermarking Algorithm Based on Register Allocation[A]. Wuhan University of Technology、* Lingnan University.Proceedings of the Ninth International Symposium on Distributed Computing and Applications to Business,Engineering and Science[C].Wuhan University of Technology、* Lingnan University:武汉理工大学计算机科学与技术学院,2010:5.