Abstract:
With the rapid development of the internet, copying a digital document is so easy
and economically affordable that digital piracy is rampant. As a result, software
protection has become a vital issue in current computer industry and a hot research
topic.
Software watermarking and obfuscation are techniques to protect software from
unauthorized access, modification, and tampering. While software watermarking tries
to insert a secret message called software watermark into the software program as
evidence of ownership, software obfuscation translates software into a semantically-
equivalent one that is hard for attackers to analyze. In this thesis, firstly, we present
a survey of software watermarking and obfuscation. Then we formalize two impor-
tant concepts in software watermarking: extraction and recognition and we use a
concrete software watermarking algorithm to illustrate issues in these two concepts.
We develop a technique called the homomorphic functions through residue numbers
to obfuscate variables and data structures in software programs. Lastly, we explore
the complexity issues in software watermarking and obfuscation.