Surreptitious Software: Obfuscation, Watermarking, and Tamperproofing for Software Protection

Paperback
from $0.00

Author: Christian Collberg

ISBN-10: 0321549252

ISBN-13: 9780321549259

Category: Intellectual Property Law

Search in google:

“This book gives thorough, scholarly coverage of an area of growing importance in computer security and is a ‘must have’ for every researcher, student, and practicing professional in software protection.”—Mikhail Atallah, Distinguished Professor of Computer Science at Purdue UniversityTheory, Techniques, and Tools for Fighting Software Piracy, Tampering, and Malicious Reverse EngineeringThe last decade has seen significant progress in the development of techniques for resisting software piracy and tampering. These techniques are indispensable for software developers seeking to protect vital intellectual property. Surreptitious Software is the first authoritative, comprehensive resource for researchers, developers, and students who want to understand these approaches, the level of security they afford, and the performance penalty they incur.Christian Collberg and Jasvir Nagra bring together techniques drawn from related areas of computer science, including cryptography, steganography, watermarking, software metrics, reverse engineering, and compiler optimization. Using extensive sample code, they show readers how to implement protection schemes ranging from code obfuscation and software fingerprinting to tamperproofing and birthmarking, and discuss the theoretical and practical limitations of these techniques.Coverage includesMastering techniques that both attackers and defenders use to analyze programsUsing code obfuscation to make software harder to analyze and understandFingerprinting software to identify its author and to trace software pirates Tamperproofing software using guards that detect and respond to illegal modifications of code and dataStrengthening content protection through dynamic watermarking and dynamic obfuscation Detecting code theft via software similarity analysis and birthmarking algorithmsUsing hardware techniques to defend software and media against piracy and tampering Detecting software tampering in distributed systemUnderstanding the theoretical limits of code obfuscation

Preface xv About the Authors xxv Acknowledgments xxviiChapter 1: What Is Surreptitious Software? 11.1 Setting the Scene 11.2 Attack and Defense 61.3 Program Analysis 71.4 Code Obfuscation 131.5 Tamperproofing 321.6 Software Watermarking 361.7 Software Similarity 431.8 Hardware-Based Protection Techniques 491.9 Discussion 551.10 Notation 58Chapter 2: Methods of Attack and Defense 592.1 Attack Strategies 602.2 Defense Strategies 862.3 Discussion 114Chapter 3: Program Analysis 1173.1 Static Analysis 1183.2 Dynamic Analysis 1453.3 Reconstituting Source 1703.4 Pragmatic Analysis 1903.5 Discussion 198Chapter 4: Code Obfuscation 2014.1 Semantics-Preserving Obfuscating Transformations 2024.2 Definitions 2174.3 Complicating Control Flow 2254.4 Opaque Predicates 2464.5 Data Encodings 2584.6 Breaking Abstractions 2774.7 Discussion 298Chapter 5: Obfuscation Theory 3015.1 Definitions 3045.2 Provably Secure Obfuscation: Possible or Impossible? 3075.3 Provably Secure Obfuscation: It’s Possible (Sometimes)! 3135.4 Provably Secure Obfuscation: It’s Impossible (Sometimes)! 3355.5 Provably Secure Obfuscation: Can It Be Saved? 3445.6 Discussion 354Chapter 6: Dynamic Obfuscation 3576.1 Definitions 3606.2 Moving Code Around 3626.3 Encryption 3836.4 Discussion 398Chapter 7: Software Tamperproofing 4017.1 Definitions 4057.2 Introspection 4127.3 Algorithm TPTCJ: Response Mechanisms 4407.4 State Inspection 4447.5 Remote Tamperproofing 4537.6 Discussion 464Chapter 8: Software Watermarking 4678.1 History and Applications 4688.2 Watermarking Software 4788.3 Definitions 4808.4 Watermarking by Permutation 4868.5 TamperproofingWatermarks 4948.6 Improving Resilience 4988.7 Improving Stealth 5058.8 Steganographic Embeddings 5228.9 SplittingWatermark Integers 5268.10 Graph Codecs 5338.11 Discussion 537Chapter 9: Dynamic Watermarking 5419.1 Algorithm WMCT: Exploiting Aliasing 5469.2 Algorithm WMNT: Exploiting Parallelism 5659.3 Algorithm WMCCDKHLSpaths: Expanding Execution Paths 5839.4 Algorithm WMCCDKHLSbf : Tamperproofing Execution Paths 5929.5 Discussion 598Chapter 10: Software Similarity Analysis 60110.1 Applications 60210.2 Definitions 61110.3 k-gram-Based Analysis 61610.4 API-Based Analysis 62510.5 Tree-Based Analysis 63110.6 Graph-Based Analysis 63510.7 Metrics-Based Analysis 64410.8 Discussion 652Chapter 11: Hardware for Protecting Software 65511.1 Anti-Piracy by Physical Distribution 65711.2 Authenticated Boot Using a Trusted Platform Module 67011.3 Encrypted Execution 68311.4 Attacks on Tamperproof Devices 69511.5 Discussion 711Bibliography 713Index 737