1 Experience With Software Watermarking Author: Jens Palsberg et al. Presenter: Charles He “Embedding Watermarking in dynamic data structures … can be.

Slides:



Advertisements
Similar presentations
Picture It Very Basic Game Picture Pepper. Original Game import java.util.Scanner; public class Game { public static void main() { Scanner scan=new Scanner(System.in);
Advertisements

Abstraction and Modular Reasoning for the Verification of Software Corina Pasareanu NASA Ames Research Center.
METHOD OVERRIDING Sub class can override the methods defined by the super class. Overridden Methods in the sub classes should have same name, same signature.
Wmobf.1 1/5/00 Clark Thomborson Watermarking, Tamper-Proofing and Obfuscation – Tools for Software Protection Christian Collberg & Clark Thomborson Computer.
Lifetime “The lifetime of a variable is the time during which the variable is bound to a specific memory location.” [p. 219] “…the lifetime of a variable.
Insert A tree starts with the dummy node D D 200 D 7 Insert D
Datalogi A 1: 8/9. Book: Cay Horstmann: Big Java or Java Consepts.
Experiments in Software Watermarking Bradford P. Cuppy B.S. University of Evansville Fri, Nov 8, 2002.
COMP 14: Intro. to Intro. to Programming May 23, 2000 Nick Vallidis.
MS thesis/project ideas for MS students in the Department of Computer Science at the University of Minnesota Duluth suggestions by Dr Andrew Brooks, Heller.
Writing algorithms using the for-statement. Programming example 1: find all divisors of a number We have seen a program using a while-statement to solve.
Garbage Collection CSCI 201L Jeffrey Miller, Ph.D. HTTP :// WWW - SCF. USC. EDU /~ CSCI 201 USC CSCI 201L.
Query Processing Presented by Aung S. Win.
Breaking Abstractions and Unstructuring Data Structures Christian Collberg Clark Thomborson Douglas Low “Mobile programs are distributed in forms that.
Shorthand operators.
2.2 Information on Program Appearance and Printing.
Fundamentals of Software Development 1Slide 1 Recap: “From scratch” projects Today’s software engineering is almost NEVER “from scratch”Today’s software.
IT253: Computer Organization Lecture 4: Instruction Set Architecture Tonga Institute of Higher Education.
1 “Operating System Protection Through Program Evolution” Dr. Frederick B. Cohen “…one of the major reasons attacks succeed is because of the static nature.
The string data type String. String (in general) A string is a sequence of characters enclosed between the double quotes "..." Example: Each character.
Chapter 2: Everything is an Object ● C++ has many non object oriented features inherited from C. It is a hybrid language meaning that it support different.
Chapter 5: Programming Languages and Constructs by Ravi Sethi Activation Records Dolores Zage.
Programming Concept Chapter I Introduction to Java Programming.
Clement Allen, PhD Florida A&M University SUMMER 2006.
2: Everything is an Object You Manipulate Objects Using References Primitives Arrays in Java Scoping You Never Destroy Objects Creating New Data Types:
Software Watermarking Imran Ali CSEP 590TU. What is software watermarking? Embed a secret into software which can be retrieved on demand Embed a secret.
Problem of the Day  Why are manhole covers round?
Java for C++ Programmers Clint Jeffery University of Idaho
Output in Java Hello World!. Structure of a Java Program  All Java files in ICS3U1 have the following structure: class HelloWorld { }  Notice the open.
1 Writing a Good Program 8. Elementary Data Structure.
Mixing integer and floating point numbers in an arithmetic operation.
Protecting Software Code By Guards The George Washington University Cs297 YU-HAO HU.
Pre-Sessional Java Programming Lecture 1a Reyer Zwiggelaar
VARIABLES Programmes work by manipulating data placed in memory. The data can be numbers, text, objects, pointers to other memory areas, and more besides.
JAVA Programming “When you are willing to make sacrifices for a great cause, you will never be alone.” Instructor: รัฐภูมิ เถื่อนถนอม
Overview of Java CSCI 392 Day One. Running C code vs Java code C Source Code C Compiler Object File (machine code) Library Files Linker Executable File.
Boolean expressions, part 1: Compare operators. Compare operators Compare operators compare 2 numerical values and return a Boolean (logical) value A.
Simple algorithms on an array - compute sum and min.
By Anand George SourceLens.org Copyright. All rights reserved. Content Owner - Meera R (meera at sourcelens.org)
When constructing a two-dimensional array, specify how many rows and columns are needed: final int ROWS = 3; final int COLUMNS = 3; String[][] board =
Computer Science: A Structured Programming Approach Using C1 Objectives ❏ To introduce the basic concepts of linked lists ❏ To introduce the basic concepts.
Computer Science A 1. Course plan Introduction to programming Basic concepts of typical programming languages. Tools: compiler, editor, integrated editor,
Experience with Software Watermarking Jens Palsberg, Sowmya Krishnaswamy, Minseok Kwon, Di Ma, Qiuyun Shao, Yi Zhang CERIAS and Department of Computer.
Enabling Control over Adaptive Program Transformation for Dynamically Evolving Mobile Software Validation Mike Jochen, Anteneh Anteneh, Lori Pollock University.
Symstra: A Framework for Generating Object-Oriented Unit Tests using Symbolic Execution Tao Xie, Darko Marinov, Wolfram Schulte, and David Notkin University.
Computer Science I Lab 1 ISMAIL ABUMUHFOUZ | CS 180.
Welcome! Simone Campanoni
Methods. Creating your own methods Java allows you to create custom methods inside its main body. public class Test { // insert your own methods right.
SESSION 1 Introduction in Java. Objectives Introduce classes and objects Starting with Java Introduce JDK Writing a simple Java program Using comments.
Embedded Real-Time Systems
Sung-Dong Kim, Dept. of Computer Engineering, Hansung University Java - Introduction.
Java Methods and Applications CSIS 3701: Advanced Object Oriented Programming.
Object-Oriented programming for Beginners LEAPS Computing 2015
Multitasking without Compromise: a Virtual Machine Evolution
Compilers Principles, Techniques, & Tools Taught by Jing Zhang
Intro to Java.
Getting Started ARCS Lab..
Data Structures and Analysis (COMP 410)
Computing Adjusted Quiz Total Score
Software Watermarking Deterring Software Piracy
Tonga Institute of Higher Education
class PrintOnetoTen { public static void main(String args[]) {
Anatomy of a Java Program
A Java Application public class Hello { public static void main(String [] args) { System.out.println("Hello, World!"); } } public class.
A Java Application public class Hello { public static void main(String [] args) { System.out.println("Hello, World!"); } } public class.
Sampath Kumar S Assistant Professor, SECE
Developing Java Applications with NetBeans
Introductory Java Programming
Developing Java Applications with NetBeans
Run-time environments
Presentation transcript:

1 Experience With Software Watermarking Author: Jens Palsberg et al. Presenter: Charles He “Embedding Watermarking in dynamic data structures … can be done efficiently with moderate increases in code size, execution times, and heap- space usage”

2 Article Outline and My Focus Introducing software watermarking and attacks Embedding watermark in dynamic data structures –Representing watermark as a PPCT tree –Embedding watermark in Java program –Theoretical retrieval of the watermark Result analysis Integration with other techniques ( My Focus )

3 What Do We Need To Know Theory of Embedding watermark in dynamic data structures –refer to “Software watermarking: Models and dynamic embeddings” by Christian Collberg and Clark Thomborsen How to represent a watermark? –Assume watermark is a number –Use PPCT tree (Planted Plane Cubic Tree) to represent this number

4 Embedding WM with JavaWiz –What we need to do? Choose a number (to represent watermark) Choose a base class (to be the node of PPCT tree in the future) Choose where to insert code for construct PPCT –What can be done by JavaWiz? Covert number to PPCT representation Convert base class into a node class Insert offline code for construct PPCT

5 Convert base class into a node class By Insert some fields and pointers into the class class Hello{ public static void main(String[] args){ A a=new A(); a.print(); } Example: Class A{ public A( ){ } public void print( ) { System.out.println(“Hello!”); } }

6 Convert to node class Cont. Insert code into class A() Class A{ // Insert fields and pointers below public A(){ } public void print() {…} } static A[] nd=new A[300]; int nd_counter=0; A leftLeave, rightLeave; static public void setEdge(int i1, int i2, int i3) { if (nd[i1]==null) nd[i1]=new A(); if (nd[i2]==null) nd[i2]=new A(); if (nd[i3]==null) nd[i3]=new A(); nd[i1].leftLeave=nd[i2]; nd[i1].rightLeave=nd[i3]; }

7 Insert code for construct PPCT Insert code into method main() class Hello{ public static void main(String[] args){ A a=new A(); a.print(); } A.setEdge(0,299,1); A.setEdge(1,2,3); A.setEdge(2,0,2); A.setEdge(3,4,5); …...

8 Result Analysis Add 4-12 kb code for WM Embedding can be done in 4-20 seconds Execution time increases 2-7% Heap-space increase depends on node class object Retrieval done in about 1minute/Mb of heap

9 Conclusion Watermark represented as PPCT Choose a base class, convert it into a node class Add code to construct PPCT at run time Hard to retrieve without clue Reasonable performance May combine other protection methods for better result Embedding watermark in dynamic data structures is an efficient way against attack

10 Discussion PPCT tree has a lot of nodes in memory, if any of the node is found, the root will be retrieved, do you think it is a big risk? Do you think the authors find a good way for embedding WM in dynamic data structures? Is PPCT tree isolated from other structures? Can it be easily located by attacker ?