SlideShare a Scribd company logo
1 of 26
Download to read offline
0   1   0   0    0            0           1   1
0   1   1   0    0            0           1   0
0   1   1   0    1            0           1   0
0   1   0   1    0            1           0   1
1   0   0   1
                                   02/20/11
                Software Watermarking
                James Hamilton, PhD Student




0   0   0   1    1 1 0 1
Software Watermarking - Motivation



 0001010101010101101111              0001010101010101101111
 0101001011010101101010              0101001011010101101010
 1010010101010101010101              1010010101010101010101
 1010010000000101010101              1010010000000101010101
 1010010101011111111010      copy    1010010101011111111010




     software                                software
     company                                   'thief'

                                                              2
Software Watermarking – what is it?



 0001010101010101101111                     0001010101010101101111
 010100MICROSOFT11010                       010100MICROSOFT11010
 1010010101010101010101                     1010010101010101010101
 1010010000000101010101                     1010010000000101010101
 1010010101011111111010       copy          1010010101011111111010




                            Allows the
                          software author
                              to prove
                            ownership.

     software                                       software
     company                                          'thief'

                                                                     3
Software Fingerprinting – what is it?



 0001010101010101101111                      0001010101010101101111
 0101001234567890101010                      0101001234567890101010
 1010010101010101010101                      1010010101010101010101
 1010010000000101010101                      1010010000000101010101
 1010010101011111111010        copy          1010010101011111111010




                              Allows the
                           software author
                             to prove the
                            source of the
                                copied
     software                  software.             software
     company                                           'thief'

                                                                      4
Software Watermarking – what is it not?

   •   It does not prevent copying software.
   •   It does not prevent decompilation or program understanding.
   •   But it could be used in-conjunction with obfuscation (need to be
       careful the obfuscation doesn't remove the watermark).




                                         public class HelloWorld {
                                           public String wm = “Microsoft”;
                                           public static void main(String[] args) {
                                              System.out.println(“Hello World”);
                            Decompile      }
                                         }




                             Obfuscate

                                                                                      5
Static Software Watermarking




                               6
Dynamic Software Watermarking

   •   Embeds code to generate a watermark at run-time.
   •   Recogniser uses a debugger to extract watermark.
   •   Should be resilient to semantics-preserving transformations.
       .




                                                                      7
Code Replacement & Addition

                      •    Very basic, early algorithms simply replaced sections of code, or
                           data, with watermark code.
                      •    Susceptible to collusive attacks if the watermarks are placed in the
                           same location in every copy of a program.
                      •    Monden et al. [1] encode the watermark as a sequence of bytecode
                           sequences which replace instructions in a dummy method.
                                  – difficult to generate code which is similar to the original program
                                  – easily remove by semantics-preserving transformations




                                                                                                                            8

[1] A. Monden, H. Iida, K.-ichi Matsumoto, K. Inoue, and K. Torii, “A practical method for watermarking java programs,” Computer
Software and Applications Conference, 2000. COMPSAC 2000. The 24th Annual International, Washington, DC, USA: IEEE, 2002,
p. 191–197.
Code Re-Ordering

               •    The watermark is encoded as the
                    nth permutation of some set
               •    Davidson and Myhrvold [1]
                    encode the watermark as the nth
                    permutation of the set of basic
                    blocks in a method.
                            – higly unstealthy due to a
                              greater ratio of goto
                              instructions [2]
               •    Another option, in Java, is to re-
                    order the constant pool (Gong et
                    al.)
               •    Requires the original program
                    from comparison



                                                                                                                      9
[1] R.I. Davidson and N. Myhrvold, “Method and system for generating and auditing a signature for a computer program,” US
Patent 5,559,884, Sep. 1996.
[2] Myles, G. et al., 2005. The evaluation of two software watermarking algorithms. Softw. Pract. Exper., 35(10), 923–938.
[3] D. Gong, F. Liu, B. Lu, and P. Wang, “Hiding Informationin in Java Class File,” International Symposium on Computer
Science and Computational Technology, 2008. ISCSCT ’08., IEEE Computer Society, 2008, pp. 160-164.
Register Allocation

                   •   the watermark is encoded in the
                       interference graph, which is used to
                       model the relationship between
                       variables.
                   •   each vertex represents a variable and
                       an edge between the two variables
                       indicates that their live ranges overlap.
                   •   we colour the graph in order to
                       minimise the number of registers and
                       ensure that two live variables do no
                       share a register.
                   •   QP algorithm [1] adds edges to the
                       graph
                   •   QP is flawed; QPS, QPI, CC and CP
                       followed with a similar idea.


                                                                                                                      10

[1] G. Qu and K. Potkonjak, “Analysis of watermarking techniques for graph coloring problem,” Computer-Aided Design, 1998.
ICCAD 98. Digest of Technical Papers. 1998 IEEE/ACM International Conference on, San Jose, California, United States: IEEE,
2005, p. 190–193.
Graph Watermarking

                     •    Venkatesan et al. [1] encode the watermark in a CFG and 'connect'
                          it to the original program.




                                                                                                                           11

[1] R. Venkatesan, V. Vazirani, and S. Sinha, “A graph theoretic approach to software watermarking,” Information Hiding,
Springer, 2001, p. 157–168.
Example of a bad watermarking algorithm
 push 4
 push 52
 push 34
 push 12
 pop
 pop
 pop
 pop
                        Optimiser
 push 1
 push 23
 push 1
 push 4
 pop
 pop
 pop
 pop


                                          12
Problems with static watermarks in general

   •   can be unstealthy, if the watermark code is compared with 'normal'
       code
   •   highly susceptible to semantics-preserving transformations
            – static watermarks rely on syntactic properties
   •   without perfect tamper-proofing techniques an attacker can apply
       any semantics-preserving transformation to a program
            – tamper-proofing is hard & unstealthy
                   • especially in Java

Conclusion

   •   Static watermarks are not good for software protection




                                                                          13
What about dynamic watermarks?

  •   in theory, should not be susceptible to semantics-preserving
      transformations (but some current ones are).
  •   but, they can only protect a complete program rather than single
      modules, classes, methods etc.
  •   can be susceptible to additive attacks




Conclusion

  •   Better than static watermarks, but still not great.




                                                                         14
Watermark Stealthiness

  •   Some watermarking algorithms are unstealthy
           – easy to find
           – 'strange looking' code
           – doesn't act like the rest of the program
  •   statistical analysis of instructions (e.g. ratio of goto instructions)
  •   program slicing metrics




                                                                               15
Program slicing

                public void w() {
                   int a = 1;
                   b = a + 1;
                   String wm = “mywatermark”;
                   return b;                                           slicing criteria
                }




          Program Slice [1]: An independent program guaranteed to faithfully
          represent the original program within the domain of the specified subset of
          behaviour




                                                                                                                       16


[1] Weiser, M., 1981. Program slicing. In ICSE '81: Proceedings of the 5th international conference on Software engineering.
Piscataway, NJ, USA: IEEE Press, p. 439―449.
Program slicing

  public void w() {
                                      program slice shown in red
     int a = 1;
     b = a + 1;
     String wm = “mywatermark”;
     return b;                    slicing criteria
  }




                                                                   17
Program slicing

  public void w() {
     int a = 1;
     b = a + 1;
     String wm = “mywatermark”;   slicing criteria
     return b;
  }




                                               18
Opaque predicates

  •   A predicate that's outcome is known a-priori
  •   Can be used to protect watermarks from slicing attacks

      public void w() {
         int a = 1;
         b = a + 1;
         String wm = “mywatermark”;
         if(PF) {
              b = wm.length();
         }
         return b;
      }

  •   Introduces false dependencies to stop slicing

                                                               19
Problems with watermarks in general

                                         Prove that the software
                                                 is yours




                           judge




                   here's my watermark


     software                                       software
     company                                          'thief'

                                                                   20
Problems with watermarks in general
                                         who can I believe?




                           judge




                           and here's
                          my watermark
     software                                       software
     company                                          'thief'

                                                                21
Problems with watermarks in general

                     I've examined the watermark
                 recogniser carefully, and believe I that
                     only one recogniser is genuine
                                                               independent
                                                                 software
                                                                  expert
       judge




     software                                               software
     company                                                  'thief'

                                                                        22
Problems with watermarks in general



                        show me your source-code.
                                                       independent
                                                         software
                                                          expert
       judge
                       the real author could
                      demonstrate ownership
                      by showing the source-
                       code of their software
                       (without the need for
                       software watermarks)


     software                                       software
     company                                          'thief'

                                                                23
Decompilation

  •   The attacker could decompile the the program to get their own
      source-code to demonstrate they own the code
  •   But it will 'look' decompiled
           –   incoherent variable names
           –   no comments
           –   verbose code
           –   extraneous instructions
  •   The attacker will probably have little understanding of the code and
      will have trouble answering trivial questions about it




                                                                        24
Conclusion

  •   There are many static watermarking algorithms but they are all
      susceptible to trivial semantics-preserving transformation attacks.
  •   Dynamic watermarks are better but can also be susceptible to
      attacks.
  •   Unstealthy watermarks give an attacker clues and allow them to
      remove a watermark easier.
  •   Program slicing may be able to give clues about watermarks,
      and/or help remove them.
  •   Maybe watermark is not actually needed or useful.




                                                                            25
Thanks




                         Any comments or questions?




                                                                   26


http://www.gold.ac.uk/computing               http://jameshamilton.eu/

More Related Content

Similar to Static Software Watermarking

Code Signing with CPK
Code Signing with CPKCode Signing with CPK
Code Signing with CPK
Zhi Guan
 

Similar to Static Software Watermarking (20)

From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018
 
Microservices - when, why and how incontrodevops.it
Microservices  - when, why and how incontrodevops.itMicroservices  - when, why and how incontrodevops.it
Microservices - when, why and how incontrodevops.it
 
Network dialog minimization and network dialog diffing: Two novel primitives ...
Network dialog minimization and network dialog diffing: Two novel primitives ...Network dialog minimization and network dialog diffing: Two novel primitives ...
Network dialog minimization and network dialog diffing: Two novel primitives ...
 
Cross-project defect prediction
Cross-project defect predictionCross-project defect prediction
Cross-project defect prediction
 
Dependency Injection in .NET applications
Dependency Injection in .NET applicationsDependency Injection in .NET applications
Dependency Injection in .NET applications
 
Version based software watermark
Version based software watermarkVersion based software watermark
Version based software watermark
 
Version based software watermark
Version based software watermarkVersion based software watermark
Version based software watermark
 
Dynamic Multi Levels Java Code Obfuscation Technique (DMLJCOT)
Dynamic Multi Levels Java Code Obfuscation Technique (DMLJCOT)Dynamic Multi Levels Java Code Obfuscation Technique (DMLJCOT)
Dynamic Multi Levels Java Code Obfuscation Technique (DMLJCOT)
 
Evolving role of Software,Legacy software,CASE tools,Process Models,CMMI
Evolving role of Software,Legacy software,CASE tools,Process Models,CMMIEvolving role of Software,Legacy software,CASE tools,Process Models,CMMI
Evolving role of Software,Legacy software,CASE tools,Process Models,CMMI
 
What is system level analysis
What is system level analysisWhat is system level analysis
What is system level analysis
 
Software Birthmark for Theft Detection of JavaScript Programs: A Survey
Software Birthmark for Theft Detection of JavaScript Programs: A Survey Software Birthmark for Theft Detection of JavaScript Programs: A Survey
Software Birthmark for Theft Detection of JavaScript Programs: A Survey
 
Code Signing with CPK
Code Signing with CPKCode Signing with CPK
Code Signing with CPK
 
Securing a Cloud Migration
Securing a Cloud MigrationSecuring a Cloud Migration
Securing a Cloud Migration
 
Securing a Cloud Migration
Securing a Cloud MigrationSecuring a Cloud Migration
Securing a Cloud Migration
 
IRJET- Obfuscation: Maze of Code
IRJET- Obfuscation: Maze of CodeIRJET- Obfuscation: Maze of Code
IRJET- Obfuscation: Maze of Code
 
Service worker API
Service worker APIService worker API
Service worker API
 
Project SpaceLock - Architecture & Design
Project SpaceLock - Architecture & DesignProject SpaceLock - Architecture & Design
Project SpaceLock - Architecture & Design
 
Finding Zero-Days Before The Attackers: A Fortune 500 Red Team Case Study
Finding Zero-Days Before The Attackers: A Fortune 500 Red Team Case StudyFinding Zero-Days Before The Attackers: A Fortune 500 Red Team Case Study
Finding Zero-Days Before The Attackers: A Fortune 500 Red Team Case Study
 
Work example2 detailed
Work example2 detailedWork example2 detailed
Work example2 detailed
 
The top 10 web application intrusion techniques
The top 10 web application intrusion techniquesThe top 10 web application intrusion techniques
The top 10 web application intrusion techniques
 

Recently uploaded

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Recently uploaded (20)

Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 

Static Software Watermarking

  • 1. 0 1 0 0 0 0 1 1 0 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 0 1 0 1 0 1 0 1 1 0 0 1 02/20/11 Software Watermarking James Hamilton, PhD Student 0 0 0 1 1 1 0 1
  • 2. Software Watermarking - Motivation 0001010101010101101111 0001010101010101101111 0101001011010101101010 0101001011010101101010 1010010101010101010101 1010010101010101010101 1010010000000101010101 1010010000000101010101 1010010101011111111010 copy 1010010101011111111010 software software company 'thief' 2
  • 3. Software Watermarking – what is it? 0001010101010101101111 0001010101010101101111 010100MICROSOFT11010 010100MICROSOFT11010 1010010101010101010101 1010010101010101010101 1010010000000101010101 1010010000000101010101 1010010101011111111010 copy 1010010101011111111010 Allows the software author to prove ownership. software software company 'thief' 3
  • 4. Software Fingerprinting – what is it? 0001010101010101101111 0001010101010101101111 0101001234567890101010 0101001234567890101010 1010010101010101010101 1010010101010101010101 1010010000000101010101 1010010000000101010101 1010010101011111111010 copy 1010010101011111111010 Allows the software author to prove the source of the copied software software. software company 'thief' 4
  • 5. Software Watermarking – what is it not? • It does not prevent copying software. • It does not prevent decompilation or program understanding. • But it could be used in-conjunction with obfuscation (need to be careful the obfuscation doesn't remove the watermark). public class HelloWorld { public String wm = “Microsoft”; public static void main(String[] args) { System.out.println(“Hello World”); Decompile } } Obfuscate 5
  • 7. Dynamic Software Watermarking • Embeds code to generate a watermark at run-time. • Recogniser uses a debugger to extract watermark. • Should be resilient to semantics-preserving transformations. . 7
  • 8. Code Replacement & Addition • Very basic, early algorithms simply replaced sections of code, or data, with watermark code. • Susceptible to collusive attacks if the watermarks are placed in the same location in every copy of a program. • Monden et al. [1] encode the watermark as a sequence of bytecode sequences which replace instructions in a dummy method. – difficult to generate code which is similar to the original program – easily remove by semantics-preserving transformations 8 [1] A. Monden, H. Iida, K.-ichi Matsumoto, K. Inoue, and K. Torii, “A practical method for watermarking java programs,” Computer Software and Applications Conference, 2000. COMPSAC 2000. The 24th Annual International, Washington, DC, USA: IEEE, 2002, p. 191–197.
  • 9. Code Re-Ordering • The watermark is encoded as the nth permutation of some set • Davidson and Myhrvold [1] encode the watermark as the nth permutation of the set of basic blocks in a method. – higly unstealthy due to a greater ratio of goto instructions [2] • Another option, in Java, is to re- order the constant pool (Gong et al.) • Requires the original program from comparison 9 [1] R.I. Davidson and N. Myhrvold, “Method and system for generating and auditing a signature for a computer program,” US Patent 5,559,884, Sep. 1996. [2] Myles, G. et al., 2005. The evaluation of two software watermarking algorithms. Softw. Pract. Exper., 35(10), 923–938. [3] D. Gong, F. Liu, B. Lu, and P. Wang, “Hiding Informationin in Java Class File,” International Symposium on Computer Science and Computational Technology, 2008. ISCSCT ’08., IEEE Computer Society, 2008, pp. 160-164.
  • 10. Register Allocation • the watermark is encoded in the interference graph, which is used to model the relationship between variables. • each vertex represents a variable and an edge between the two variables indicates that their live ranges overlap. • we colour the graph in order to minimise the number of registers and ensure that two live variables do no share a register. • QP algorithm [1] adds edges to the graph • QP is flawed; QPS, QPI, CC and CP followed with a similar idea. 10 [1] G. Qu and K. Potkonjak, “Analysis of watermarking techniques for graph coloring problem,” Computer-Aided Design, 1998. ICCAD 98. Digest of Technical Papers. 1998 IEEE/ACM International Conference on, San Jose, California, United States: IEEE, 2005, p. 190–193.
  • 11. Graph Watermarking • Venkatesan et al. [1] encode the watermark in a CFG and 'connect' it to the original program. 11 [1] R. Venkatesan, V. Vazirani, and S. Sinha, “A graph theoretic approach to software watermarking,” Information Hiding, Springer, 2001, p. 157–168.
  • 12. Example of a bad watermarking algorithm push 4 push 52 push 34 push 12 pop pop pop pop Optimiser push 1 push 23 push 1 push 4 pop pop pop pop 12
  • 13. Problems with static watermarks in general • can be unstealthy, if the watermark code is compared with 'normal' code • highly susceptible to semantics-preserving transformations – static watermarks rely on syntactic properties • without perfect tamper-proofing techniques an attacker can apply any semantics-preserving transformation to a program – tamper-proofing is hard & unstealthy • especially in Java Conclusion • Static watermarks are not good for software protection 13
  • 14. What about dynamic watermarks? • in theory, should not be susceptible to semantics-preserving transformations (but some current ones are). • but, they can only protect a complete program rather than single modules, classes, methods etc. • can be susceptible to additive attacks Conclusion • Better than static watermarks, but still not great. 14
  • 15. Watermark Stealthiness • Some watermarking algorithms are unstealthy – easy to find – 'strange looking' code – doesn't act like the rest of the program • statistical analysis of instructions (e.g. ratio of goto instructions) • program slicing metrics 15
  • 16. Program slicing public void w() { int a = 1; b = a + 1; String wm = “mywatermark”; return b; slicing criteria } Program Slice [1]: An independent program guaranteed to faithfully represent the original program within the domain of the specified subset of behaviour 16 [1] Weiser, M., 1981. Program slicing. In ICSE '81: Proceedings of the 5th international conference on Software engineering. Piscataway, NJ, USA: IEEE Press, p. 439―449.
  • 17. Program slicing public void w() { program slice shown in red int a = 1; b = a + 1; String wm = “mywatermark”; return b; slicing criteria } 17
  • 18. Program slicing public void w() { int a = 1; b = a + 1; String wm = “mywatermark”; slicing criteria return b; } 18
  • 19. Opaque predicates • A predicate that's outcome is known a-priori • Can be used to protect watermarks from slicing attacks public void w() { int a = 1; b = a + 1; String wm = “mywatermark”; if(PF) { b = wm.length(); } return b; } • Introduces false dependencies to stop slicing 19
  • 20. Problems with watermarks in general Prove that the software is yours judge here's my watermark software software company 'thief' 20
  • 21. Problems with watermarks in general who can I believe? judge and here's my watermark software software company 'thief' 21
  • 22. Problems with watermarks in general I've examined the watermark recogniser carefully, and believe I that only one recogniser is genuine independent software expert judge software software company 'thief' 22
  • 23. Problems with watermarks in general show me your source-code. independent software expert judge the real author could demonstrate ownership by showing the source- code of their software (without the need for software watermarks) software software company 'thief' 23
  • 24. Decompilation • The attacker could decompile the the program to get their own source-code to demonstrate they own the code • But it will 'look' decompiled – incoherent variable names – no comments – verbose code – extraneous instructions • The attacker will probably have little understanding of the code and will have trouble answering trivial questions about it 24
  • 25. Conclusion • There are many static watermarking algorithms but they are all susceptible to trivial semantics-preserving transformation attacks. • Dynamic watermarks are better but can also be susceptible to attacks. • Unstealthy watermarks give an attacker clues and allow them to remove a watermark easier. • Program slicing may be able to give clues about watermarks, and/or help remove them. • Maybe watermark is not actually needed or useful. 25
  • 26. Thanks Any comments or questions? 26 http://www.gold.ac.uk/computing http://jameshamilton.eu/