We introduce a novel method called constant encoding, which can be used to tamper-proof a software watermark that is embedded in the dynamic data structures of a program. Our novel tamper-proofing method is based on transforming numeric or non-numeric constant values in the text of the watermarked program into function calls whose value depends on the watermark data structure. Under reasonable assumptions about the knowledge and resources of an attacker, we argue that no attacker can be certain that they have altered our tamperproofed watermark unless they take a risk of affecting program correctness in some way that may be difficult to detect. In this paper we also present a novel scheme for representing a numeric value as a Planted Plane Cubic Tree, and we describe how to use this scheme in a particularly-effective implementation of our constant encoding tamperproofing method.
[1]
A. Nijenhuis.
Combinatorial algorithms
,
1975
.
[2]
James R. Larus,et al.
Efficient path profiling
,
1996,
Proceedings of the 29th Annual IEEE/ACM International Symposium on Microarchitecture. MICRO 29.
[3]
Krishnaswamy Palsberg,et al.
A Functional Taxonomy for Software Watermarking
,
2002
.
[4]
Christian S. Collberg,et al.
Software watermarking: models and dynamic embeddings
,
1999,
POPL '99.
[5]
Robert Muller.
Computer software protection
,
1981
.
[6]
Clark Thomborson,et al.
Manufacturing cheap, resilient, and stealthy opaque constructs
,
1998,
POPL '98.
[7]
Jens Palsberg,et al.
Experience with software watermarking
,
2000,
Proceedings 16th Annual Computer Security Applications Conference (ACSAC'00).