Watermarking Compiled Code via Fake Instructions
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Traditional steganography methods are ineffective for embedding watermarks in compiled computer programs, as changing any bit in the code can render it non-functional, unlike digital pictures and sounds where low-order bits can be modified without noticeable difference.
Innovation Solution
A method involving the insertion of fake instructions at specific locations in the compiled code, determined by a mathematical function, which are legal and do not affect the program's operation, allowing for the encoding and decoding of binary data as part of the program itself, with optional encryption and removal by authorized systems.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If traditional steganography methods are used to embed watermarks by modifying low-order bits, then the watermark can be hidden in digital pictures and sounds, but this method cannot be applied to compiled computer programs because every bit is important and changing any bit can render the code non-functional
Solution Approach 1:
The patent changes the parameter space from modifying low-order bits of data values to inserting fake instructions at specific code locations. This parameter transformation allows watermark embedding while preserving program functionality, as fake instructions are designed to be semantically neutral and not affect execution flow.
Solution Approach 2:
The patent introduces fake instructions as intermediary elements that serve dual purposes: they carry watermark information and maintain program functionality. These intermediary instructions act as mediators between the watermark data and the executable code, allowing information embedding without compromising reliability.
2Reliability
If fake instructions are inserted into compiled code to embed watermark data, then the watermark can be embedded without affecting program operation, but the code size increases and the insertion locations must be precisely determined
Solution Approach 1:
The patent applies preliminary action by pre-identifying suitable insertion locations for fake instructions using mathematical functions before the watermark embedding process. This preliminary determination of safe insertion points allows the watermark to be embedded without affecting program functionality, while the locations are predetermined to avoid disrupting code structure.
Solution Approach 2:
The patent transforms the complexity issue by changing from arbitrary insertion to mathematically-determined insertion locations. The mathematical function provides a systematic parameter transformation that distributes fake instructions predictably throughout the code, making the added complexity manageable and deterministic rather than arbitrary.
3Loss of information
If watermark data is inserted into compiled programs, then secure tracking and identification of licensed uses is enabled, but unauthorized users may execute the program without detection if the watermark is not properly protected
Solution Approach 1:
The patent converts the potential harm of fake instructions (which could be seen as code bloat or potential execution errors) into a benefit by making them the carrier of secure watermark information. The very elements that could disrupt execution are designed to be safe, while simultaneously providing the security mechanism for detecting unauthorized use through cryptographic protection of the watermark data.
Solution Approach 2:
The patent applies nesting by embedding the watermark data within the structure of fake instructions, which are themselves nested within the compiled program code. This nested structure allows the watermark to be hidden within the code fabric, and when combined with encryption, creates multiple layers of protection against unauthorized extraction or modification.
Data Source
AI summary
A method and apparatus for inserting a watermark into a compiled computer program. A location process specifies an insertion point in the compiled program and a watermark generating process inserts a watermark, based on data to be encoded, into the program at the insertion point. The location process is also utilized to specify the location of watermark data to be decoded.


