Software Watermarking Imran Ali CSEP 590TU. What is software watermarking? Embed a secret into software which can be retrieved on demand Embed a secret.

Slides:



Advertisements
Similar presentations
Chapter 6 Server-side Programming: Java Servlets
Advertisements

Introduction to Memory Management. 2 General Structure of Run-Time Memory.
Digital rights management Audio watermark Jiamian.
Topic 10 Java Memory Management. 1-2 Memory Allocation in Java When a program is being executed, separate areas of memory are allocated for each class.
Techniques for Software Watermarking and Fingerprinting Prof. Clark Thomborson Presentation at Tsinghua University 17 th March 2010.
 Procedures (subroutines) allow the programmer to structure programs making them : › easier to understand and debug and › allowing code to be reused.
1 A Functional Taxonomy for Software Watermarking Jas Nagra, Clark Thomborson University of Auckland Christian Collberg University of Arizona.
Program Slicing. 2 CS510 S o f t w a r e E n g i n e e r i n g Outline What is slicing? Why use slicing? Static slicing of programs Dynamic Program Slicing.
Wmobf.1 1/5/00 Clark Thomborson Watermarking, Tamper-Proofing and Obfuscation – Tools for Software Protection Christian Collberg & Clark Thomborson Computer.
18/03/2007Obfuscation 1 Software protection Mariano Ceccato FBK - Fondazione Bruno Kessler
Recursive Functions The Fibonacci function shown previously is recursive, that is, it calls itself Each call to a recursive method results in a separate.
Voyager Interest Group Voyager Access Reports: what they are and how they work October 29, 2008.
Chapter 10 Recursion Instructor: alkar/demirer. Copyright ©2004 Pearson Addison-Wesley. All rights reserved.10-2 Recursive Function recursive functionThe.
1 Static Analysis Methods CSSE 376 Software Quality Assurance Rose-Hulman Institute of Technology March 20, 2007.
4 July 2005 overview Traineeship: Mapping of data structures in multiprocessor systems Nick de Koning
Memory Allocation. Three kinds of memory Fixed memory Stack memory Heap memory.
1 CSCD 300 Data Structures Recursion. 2 Proof by Induction Introduction only - topic will be covered in detail in CS 320 Prove: N   i = N ( N + 1.
Chapter 16 Programming and Languages: Telling the Computer What to Do.
1 Memory Model of A Program, Methods Overview l Memory Model of JVM »Method Area »Heap »Stack.
2440: 141 Web Site Administration Web Server-Side Programming Professor: Enoch E. Damson.
ADT Stacks and Queues. Stack: Logical Level “An ordered group of homogeneous items or elements in which items are added and removed from only one end.”
Krakatoa: Decompilation in Java “Does Bytecode Reveal Source?” Todd A. Proebsting Scott A. Watterson The University of Arizona Presented by Karl von Randow.
By : Vladimir Novikov. Digital Watermarking? Allows users to embed SPECIAL PATTERN or SOME DATA into digital contents without changing its perceptual.
The string data type String. String (in general) A string is a sequence of characters enclosed between the double quotes "..." Example: Each character.
Digital Watermarking Simg-786 Advanced Digital Image Processing Team 1.
Dynamic Web Pages & JavaScript. Dynamic Web Pages Dynamic = Change Dynamic Web Pages are web pages that change. More than just moving graphics around.
C Functions Pepper. Objectives Create functions Function prototypes Parameters – Pass by value or reference – Sending a reference Return values Math functions.
Basic Semantics Associating meaning with language entities.
Recursion. What is recursion? Rules of recursion Mathematical induction The Fibonacci sequence Summary Outline.
1 Experience With Software Watermarking Author: Jens Palsberg et al. Presenter: Charles He “Embedding Watermarking in dynamic data structures … can be.
# Author: David Foltz # # Notice: Orginal Code Idea for program taken from Python v3.2.2 Documentation def Fibonacci(): """Print a Fibonacci series with.
Variables When programming it is often necessary to store a value for use later on in the program. A variable is a label given to a location in memory.
Protecting Software Code By Guards The George Washington University Cs297 YU-HAO HU.
Java Basics Hussein Suleman March 2007 UCT Department of Computer Science Computer Science 1015F.
OOPDA Intro 5.0. Topics Website and Syllabus Rowan VPN and H:drive BlueJ application and projects Programming Style (Appendix J) Javadoc (Appendix I)
Web Design and Development. World Wide Web  World Wide Web (WWW or W3), collection of globally distributed text and multimedia documents and files 
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 1 Extracting Sequence.
JavaScript 101 Introduction to Programming. Topics What is programming? The common elements found in most programming languages Introduction to JavaScript.
Martin T. Press.  Main Method and Class Name  Printing To Screen  Scanner.
Introduction to Computing Concepts Note Set 14. What if… You had to print “I love Java” to the screen 125 times. How? 125 lines of ▫ System.out.println(“I.
Classes - Intermediate
CSE 303 Concepts and Tools for Software Development Richard C. Davis UW CSE – 10/11/2006 Lecture 7 – Introduction to C.
Experience with Software Watermarking Jens Palsberg, Sowmya Krishnaswamy, Minseok Kwon, Di Ma, Qiuyun Shao, Yi Zhang CERIAS and Department of Computer.
chap10 Chapter 10 Recursion chap10 2 Recursive Function recursive function The recursive function is a kind of function that calls.
Section 3.3 Exceptional Situations. 3.3 Exceptional Situations Exceptional situation Associated with an unusual, sometimes unpredictable event, detectable.
Some of the utilities associated with the development of programs. These program development tools allow users to write and construct programs that the.
Introduction to Algorithm Complexity Bit Sum Problem.
Debugging. Design Well A careful design limits the necessary debugging - think “top-down” Write comments as you go, especially invariants –You can test.
Lecture 3 Translation.
Secure Programming Dr. X
Object Lifetime and Pointers
Storage Classes There are three places in memory where data may be placed: In Data section declared with .data in assembly language in C - Static) On the.
YAHMD - Yet Another Heap Memory Debugger
Chapter 10 Recursion Instructor: Yuksel / Demirer.
Secure Programming Dr. X
Program Execution in Linux
Process Realization In OS
Stack Lesson xx   This module shows you the basic elements of a type of linked list called a stack.
CMSC 341 Lecture 5 Stacks, Queues
Depth First Search—Backtracking
PROGRAM STRUCTURE CSC 111.
Computer Organization & Compilation Process
Use proper case (ie Caps for the beginnings of words)
Software Watermarking Deterring Software Piracy
Building Java Programs
Paul Ammann & Jeff Offutt
Building Java Programs
Computer Organization & Compilation Process
A Primer for Understanding Recursion
Lecture 4 – Data collection List ADT
Presentation transcript:

Software Watermarking Imran Ali CSEP 590TU

What is software watermarking? Embed a secret into software which can be retrieved on demand Embed a secret into software which can be retrieved on demand Watermarks usually contain a client ID, vendor information or some cryptographic information Watermarks usually contain a client ID, vendor information or some cryptographic information

Static Data Watermarks Stored in program itself statically Stored in program itself statically Data Watermarks Data Watermarks Stored in headers, string resources or debug symbols. > strings /usr/local/bin/netscape | \ grep -i copyright Copyright (C) 1995, Thomas G. Lane Code Watermarks Code Watermarks Stored in the code itself int main () { int a = 10; int b = 20; print ("Authored by Alice") ; print (a+b) ; }

Dynamic Watermarks I Stored in program’s execution state Stored in program’s execution state Easter Egg Watermarks Easter Egg Watermarks Runs after an unusual sequence of inputs For example, Open Word document and type = rand (200,99) Press enter and wait 3 seconds... Data Structure Watermarks Data Structure Watermarks Stored in data structure in program String v; if input=I {v[0]=‘C’; v[1]=‘o’; v[2]=‘p’; …}

Dynamic Watermarks II Execution Trace Watermarks Execution Trace Watermarks Embedded within trace of executing program. Example: some sequence of operators/values pushed onto stack. Very rare. Embedded within trace of executing program. Example: some sequence of operators/values pushed onto stack. Very rare. Dynamic Graph Watermarking Dynamic Graph Watermarking Embedding a watermark in the topology of a dynamic built graph structure Embedding a watermark in the topology of a dynamic built graph structure Involves embedding a product of primes embedded in a graph. When a sequence of input are run, graph is built and recognizer function to detect the graph on heap is used. Involves embedding a product of primes embedded in a graph. When a sequence of input are run, graph is built and recognizer function to detect the graph on heap is used. Ownership is proven when recognizer finds watermark and owner can factor the product of primes Ownership is proven when recognizer finds watermark and owner can factor the product of primes

Current Market Java Watermarking Java Watermarking DashO – PreEmptive solutions DashO – PreEmptive solutions.NET Watermarking.NET Watermarking Dotfuscator – PreEmptive solutions Dotfuscator – PreEmptive solutions ThatsMyCode ThatsMyCode

Future Very few commercial vendors in the market Very few commercial vendors in the market Software watermarking is still being researched Software watermarking is still being researched Solutions are getting more complex such as graph-based watermarking Solutions are getting more complex such as graph-based watermarking