The Collberg-Thomborson Watermarking Algorithm

Authors

Christian Collberg (collberg@cs.arizona.edu)
Gregg Townsend (gmt@cs.arizona.edu)

Description and Examples

This algorithm is a dynamic software watermarking method that embeds the watermark in the topology of a graph structure built at runtime. Watermarking a Java jar-file using the CT algorithm and recognizing that watermark requires several phases. First, the source program has to be annotated. This means that calls to sandmark.watermark.trace.Annotator.mark() are added to the source program in locations where it is OK to insert watermarking code. Next, the source program is compiled and packaged into a jar-file. Then the program is traced, i.e. run with a special (secret) input sequence. This constructs a trace-file, a sequence of mark()-calls that were encountered during the tracing run. The next step is embedding which is where the watermark is actually added to the program, using the data from the tracing run.

Before distributing the resulting watermarked program it should be obfuscated, otherwise it will be susceptible to collusive attacks.

The watermark is recognized by again running it with the special input sequence.

These different steps are described further here: