Watermarking in software security
Anti piracy security measures for software generally consist in providing secure methods for software distribution whilst protecting the rights of the software supplier. This is attempted by methods for license management combined with online license delivery management. It comprises not only providing downloads of the software but also verifying the working of each product in relation to the individual license terms and supplying licenses for a software till controlling the transfer of licenses. Obviously, this is quite a complicated matter.
In digital media, a common way of realising a protection mechanism against piracy is to apply a watermark to the distribution medium such that it becomes very difficult to reproduce that mark in an illicit copy. Verification code then checks - at runtime - if the software is being run from the original distribution medium, or not. If such a mark is corrupted or can not be found, the program's execution is denied. Comparable techniques have also been researched for binaries protection, it is the so-called software protection through watermarking.
Developers watermark a software by implanting unique identifiers to assert ownership to the rightful owner but also to track down the pirate after the illicit act. So, software watermarking itself does not prevent piracy but scares the user from copyright infringement by increasing the possibility of getting caught. It must be mentioned that watermarking is not a simple technique. Most other existing anti piracy techniques are relatively easy to implement though their effectiveness in preventing piracy is often questionable. In addition, nowadays, many applications are distributed in formats that are easy to reverse engineer - see Java bytecode and Microsoft Intermediate Language - so that also in the case of watermarking, the cracker could decompile or study the source code under disassembler and/or debugger to locate and remove all remains of the technique.
Software watermarking and fingerprinting are techniques that have been studied - in academic environment as well as from within lARP64Tech - to prevent the infringement of copyright. The available techniques are similar to those of media watermarking where a unique identifier is embedded in data such as images, audio, or video. In fact, these techniques produce minor errors in the media that are undetectable by the human senses. The difference with software is that software data is far more sensible to changes and the watermark can't be implemented just anywhere. Indeed, irresponsible treatment might crash the software. Instead, applying the embedding of the unique identifier in software must not corrupt the original functionality in any way.
The developer of a software implements a copyright notice to prove original ownership. To illustrate, suppose company A steals a secret program from company B intending to decrease the production time in the own company. If company B can demonstrate that company A's software contains their copyright notice, then company B can prove counterfeiting committed by company A. Still, remark that this type of watermark only proves that company A was using the stolen secret. Indeed, it does not bring proof about who has effectively stolen it. Maybe company A has purchased the stolen code somewhere? This is where the fingerprint comes in play, its unique identifier contains the customer's data which can prove a program - or a piece of a program - is stolen as well as link it to the committing party.
There are two general categories of watermarking algorithms, static and dynamic. A dynamic algorithm relies on information gathered during execution of the program to implement or extract the watermark. Static algorithms only analyse the code and data of the program on disk. A variety of software watermarking techniques was inquired but there are few publications describing the implementation and evaluation of these algorithms. Remark there are fewer dynamic watermarking algorithms than static because it is easier to obliterate in binary source code on disk than at runtime.
A watermark must be easily retrievable by the original developer of the software. Yet, it is not uncommon to state software watermarking techniques provide a stealthy form of protection against piracy because the watermark remains often unnoticed during cracking attempts. A cracker may unwittingly leave the watermark alone in the stolen software. Watermarking is also quite flexible and often survives illegal attempts of removal. Dynamic watermarking techniques are more stealthy and more resilient than static watermarks. Yet, studies show that they offer no noticeable advantage in fighting off the experienced cracker.
LARP64Tech applies software watermarking in LARP64Pro. Obviously, this also guards LARP64'ed applications. Still, you may also want to watermark or fingerprint your application prior to protecting it with LARP64Pro.