Watermarking .NET and Java Software |
|
Introduction to Software Watermarking PreEmptive Solutions recently released a software watermarking tool called PreMark that ships with Dotfuscator Professional Edition version 3.0, and DashO version 3.2. While Dotfuscator and DashO are used to protect the trade secrets of your code, PreMark provides a method of tracing unauthorized copies of your software back to the source and establish proof of ownership. If you are unfamiliar with digital watermarking, we have provided a brief overview here, followed by a more in-depth description of PreMark. What is Watermarking? The most basic definition of watermarking is the embedding of information within other information. Obviously, you cannot destroy the usability of the original information in the process. Although you have probably seen images that use visible digital watermarks as shown below, it is the hidden, or steganographic, watermarks that have a greater range of applications.
Steganography Steganography refers to techniques to conceal the existence of a message. For example, tattooing a shaved messenger's head, letting his hair grow back, and the shaving it again to reveal the message when he arrives at his destination. Also, subliminal advertising can be considered a steganographic technique since the viewer is unaware of these inserted frames. For example, you wouldn't want pay-per-view broadcasts to use visible watermarks, nor would you want graphical images that you purchased to be obscured by a visible watermark, however, the owners/providers of this content still want to be able to retrieve proof of ownership. Digital Watermarking of Data Digital watermarking hides information by utilizing unused information density. The data can be an image (jpeg, etc.), an audio file (mp3), or a binary executable. The idea is to insert identification information into the data in such a way that the data still maintains its original quality and content. In the following illustration, a hidden digital message is expressed in terms of green and black dots. This message is embedded in a photograph of a landscape.
Source: http://www.ece.purdue.edu/~ace/water2/sampleimages.html The landscape image appears to be the same, before and after the watermarking. However, a digital message is embedded in the second, or watermarked, image. Digital Watermarking of Software Lossy data types (e.g., patterned information fit for human consumption) are great for watermarking. There is plenty of room to hide information in the fuzziness of an image or in the undetectable tones of a song. It is not as easy to hide a watermark in precise data such as software. The functionality must be preserved, however, there's more than one way to skin a gui and watermarks can be stored in non-function affecting ways. Purpose While encryption and obfuscation are technologies designed to slow crime, watermarking may be used to detect crimes and catch criminals. Generally, digital watermarking is used to provide some level of copyright protection. This is done by inserting copyright information into the data, which can then be extracted at a later time. The data with the watermark can be copied and used, but the copyright information can always be retrieved to prove ownership. In addition to encoding copyright holder information, you can also encode information about the original buyer, which allows for tracing of unauthorized copies. Fingerprinting The technique of fingerprinting is to "personalize" digital content in order to detect illegal piracy. The personalization is a small alteration in the sequence of data in the digital content such that once the pirated content is found it can be traced back to the original user who colluded in the piracy. Generally, the use of fingerprinting to track piracy is referred to as "traitor tracing." Fingerprinting has been useful in the detection of piracy of satellite broadcast data. Each legal subscriber is issued a set of keys to decode the broadcast data, and additionally each unit of broadcasted content is uniquely fingerprinted for each legal subscriber. If one or more of the legal subscribers provides keys to others (through the Internet or "blackbox" decoders) the broadcaster can eventually use the fingerprinting information to trace back to the original subscriber(s).
PreMark - Java and .NET Watermarking PreMark can be run on both obfuscated and non-obfuscated code, and is available for both Java and .NET assemblies. It embeds hidden information directly into your code. When you run PreMark you provide copyright information, such as company name, and maybe even customer identification. PreMark then embeds this information and outputs a functionally equivalent module, with no additional code, and with the same size as the original. When you run PreMark on the modified output it reconstructs and outputs the embedded string information.
In Summary, What Does Software Watermarking Deliver? It may provide the ability to track software copies and the ability to prove ownership of software and theft of that software. It will not prevent piracy or protect intellectual property. Given how easy it is to add a watermark, it should be a step in your build process. PreMark's use of steganographic, or hidden, copyright protection techniques means that a casual observer cannot readily tell whether a program run through DashO or Dotfuscator has been copyright protected through fingerprinting. Accordingly, such fact may serve as a deterrent in some circumstances, whether or not the PreMark facility is actually employed.
|