Arboit Watermarking Algorithm
Author
Ginger Myles
(mylesg@cs.arizona.edu)
Description
Arboit is a watermarking algorithm that embeds the watermark via opaque
predicates. This is accomplished by encoding the watermark in the opaque
precicate and then appending the predicate to a selected branch.
Example
Configuration
There are two different Arboit Algorithms: static and dynamic. The
difference between the two is how the branches are selected. In the static
version a random number generator is used to select the branches. In the
dynamic version a trace of the program is used to selected the branches.
There are also configurations options. The watermark can be encoded in
the opaque predicate by ranking the predicates in the library and then
assigning each predicate a value or by using constants in the predicated
to encode. It is also possible to embed the watermark through the use of
opaque methods. In this case a method call is appended to the branch and
this method evaluates the opaque predicate. If the watermark is encoded
using the rank of the predicate then it is possible to reuse the opaque
methods to futher disguish the watermark.
References
- Genevieve Arboit. A Method for Watermarking Java Programs via Opaque Predicates.
In The Fifth International Conference on Electronic Commerce Research
(ICECR-5), 2002.
- Ginger Myles and Christian Collberg,
Software Watermarking via Opaque Predicates: Implementation,
Analysis, and Attack. ICECR-7, June 10-13, 2004 (to appear).