• Corpus ID: 1957419

A Method for Watermarking Java Programs via Opaque Predicates

  title={A Method for Watermarking Java Programs via Opaque Predicates},
  author={Genevi{\`e}ve Arboit},
  journal={Electronic Commerce Research},
In this paper, we present a method for watermarking Java programs that uses opaque predicates, improving upon those presented in two previous papers [13, 9]. We present two algorithms: the first is simpler to implement and to analyze, but certain distortive attacks can make watermark extraction difficult; the second is more complex, but under realistic assumptions yields good resistance to all usual types of attacks. 

Tables from this paper

Constructing Opaque Predicates for Java Programs

In this construction, cryptography is first exploited for manufacturing opaque predicates, which are dynamic and secure against all usual types of static attacks and dynamic attacks, also secure against crypto analysis.

Software watermarking via opaque predicates: Implementation, analysis, and attacks

This article analyzes an algorithm originally proposed by Geneviève Arboit and embeds the watermark by adding opaque predicates to the application, and empirically evaluated both static and dynamic versions within the SandMark framework.

An ID-Based Watermarking Scheme for Java Programs

In this paper, an identities(ID) based watermarking scheme for Java programs is proposed, which is dynamic and secure against all usual types of watermarks algorithms attacks and watermarks protocols attacks, and also secure against static and dynamic attacks.

Threading Software Watermarks

A new dynamic technique for embedding robust software watermarks into a software program using thread contention is introduced and it is shown to be resilient to many semantic-preserving transformations that most existing proposals are susceptible to.

Watermarking Java Programs using Dummy Methods with Dynamically Opaque Predicates

This work presents a method to construct a dynamic opaque predicates by grouping two or more opaquepredicates according to predefined rules, which is a technique for watermarking Java programs by using a never-executed dummy method.

A survey of static software watermarking

A survey of the known static software watermarking techniques, including a brief explanation of each, is presented.

A novel watermarking method for Java programs

The experimental results showed that the new method is more resilient to obfuscation and decompile-recompile attacks in comparison with the methods proposed by Genevieve Arboit in A Method for Watermarking Java Programs via Opaque Predicates.

Graph Theoretic Software Watermarks: Implementation, Analysis, and Attacks

This paper presents an implementation of the novel watermarking method proposed by Venkatesan, Vazirani, and Sinha in their recent paper A Graph Theoretic Approach to Software Watermarking, and measures the size and time overhead and evaluates the algorithm against a variety of attacks.

An Evaluation of Dynamic Java Bytecode Software Watermarking Algorithms

This study evaluates the existing dynamic watermarking algorithms using them to watermark java bytecode files and then applying distortive attacks to each watermarked program by obfuscating and has shown that some watermarks were removed as results of these transformations.

Data-Flow Analysis-Based Approach of Database Watermarking

A persistent watermarking technique of information systems supported by relational databases at the back-end is proposed by identifying an invariant part of the database which remains unchanged w.r.t. the operations in the associated applications.



A practical method for watermarking Java programs

This work proposes a practical method that discourages program theft by embedding Java programs with a digital watermark, which is indiscernible by program users, yet enables us to identify an illegal program that contains stolen class files.

Robust Object Watermarking: Application to Code

The vector extraction paradigm is introduced which is the transformation between digital data and an abstract vector representation of these data and a new, robust technique in order to insert watermarks in executable code is proposed.

Software Watermarking: Protective Terminology

This paper attempts to fill the gap by giving distinctive names for the various protective functions served by software watermarks: Validity Mark, Licensing Mark, Authorship Mark and Fingerprint Mark.

Experience with software watermarking

This work has implemented and experimented with a watermarking system for Java based on the ideas of Collberg and Thomborsen, and shows that it can be done efficiently with moderate increases in code size, execution times and heap-space usage, while making the watermarked code resilient to a variety of program-transformation attacks.

Watermarking, Tamper-Proofing, and Obfuscation-Tools for Software Protection

Three types of attack on the intellectual property contained in software and three corresponding technical defenses are identified, including obfuscation, watermarking, and tamper-proofing.

Software watermarking: models and dynamic embeddings

A new software watermarking technique in which a dynamic graphic watermark is stored in the execution state of a program.

Fingerprints for Copyright Software Protection

This work introduces two different fingerprint schemes based on equivalent variants of the program that can be easily combined and extended to be resilient against partial fingerprint destruction.

A Graph Theoretic Approach to Software Watermarking

This work presents heuristics to generate such hard instances of graph approximation problems and, in a limited case, presents a heuristic analysis of how hard it is to separate the WM in an information theoretic model.

Manufacturing cheap, resilient, and stealthy opaque constructs

The design of a Java code obfuscator is described, a tool which - through the application of code transformations - converts a Java program into an equivalent one that is more difficult to reverse engineer.

On the limits of steganography

It is shown that public key information hiding systems exist, and are not necessarily constrained to the case where the warden is passive, and the use of parity checks to amplify covertness and provide public key steganography.