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