Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

Droidmarking: Resilient Software Watermarking for Impeding Android Application Repackaging

论文下载:http://dl.acm.org/citation.cfm?id=2642977

本文介绍了一种新的动态软件水印技术Droidmarking,目的是为了声明作者版权,实时的在设备上的app重打包检测,以及防攻击。这种方法有别于传统的水印技术,并不刻意隐藏自己,却依然能抵抗攻击。普通用户可以在不需要机密的水印识别器的情况下,恢复和验证水印。Droidmarking基于一段自解密代码。

Fig

Fig

  1. 分析不会跟踪内存更新顺序
  2. 以上不会记录x.f的更新,只会记录被赋值了不可信数值

DM Embedder里面先生成水印代码片段,再找candidate branches,最后在SDC里面放入水印代码片段。

Knowledge Asymmetry Property of SDC: This property provided by SDC says that, the original developer knows both the constant value (Const) of the original branch condition and the enclosed branch code © that this constant value could “lead” to. In contrast, an attacker does not know this at all until the dynamic execution of the app program “happens to” go into the SDC branch. This property is the fundamental reason why our software watermarks can be “inter-dependent” with original branch code and become non-stealthy yet still resilient to evading attacks.

安全分析

  • Steal attack:即重打包伪造。因为在认证模块,通过SDC里的证书和regconizer去读对比来防止。
  • Change attack: substractive attack,即把水印代码移出。如果把SDC代码移出,里面的内容代码也没了,程序就傻逼了。而且数量根据这个candidate branch的数量来说的。然而只有暴力攻击和动态攻击。需要暴力SDC里的key难度比较大,除非这个var本身比较弱。动态分析攻击会有code coverage的问题,没法解密所有块,因为有重打包检测如果不移除所有的块,不同用户用起来就会有问题,作者认为代码太高。
  • Additive Attack:加入攻击者自己的水印。作者认为破解所有的SDC几乎不可能,而且有签名机制防止copyright confusion的情况。
  • Distortive attack:作者认为修改sdc_decrypt可能性很大,DM scanner可以用来防止。

评估

开源项目的代码量,每1000行代码的candidate的数量,多久能够恢复一个SDC,以及overhead.

Fig

Fig