WO2002101519A2 - Method and system for generating sustainable digital watermarks - Google Patents

Method and system for generating sustainable digital watermarks Download PDF

Info

Publication number
WO2002101519A2
WO2002101519A2 PCT/CA2002/000847 CA0200847W WO02101519A2 WO 2002101519 A2 WO2002101519 A2 WO 2002101519A2 CA 0200847 W CA0200847 W CA 0200847W WO 02101519 A2 WO02101519 A2 WO 02101519A2
Authority
WO
WIPO (PCT)
Prior art keywords
encoding
program
watermark
data
digital
Prior art date
Application number
PCT/CA2002/000847
Other languages
French (fr)
Other versions
WO2002101519A3 (en
Inventor
Stanley T. Chow
Harold J. Johnson
Original Assignee
Cloakware Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cloakware Corporation filed Critical Cloakware Corporation
Priority to EP02737682A priority Critical patent/EP1421457A2/en
Priority to AU2002312670A priority patent/AU2002312670A1/en
Priority to CA002449595A priority patent/CA2449595A1/en
Priority to US10/478,696 priority patent/US7395433B2/en
Publication of WO2002101519A2 publication Critical patent/WO2002101519A2/en
Publication of WO2002101519A3 publication Critical patent/WO2002101519A3/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/106Enforcing content protection by specific content processing
    • G06F21/1063Personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/16Program or content traceability, e.g. by watermarking

Definitions

  • the present invention relates generally to computer software, and more specifically, to a method and system which allows digital watermarking algorithms to be kept secret, while still allowing ownership of marked entities to be demonstrated in public or in court.
  • Digital marks such as "digital fingerprints” or “watermarks” are patterns of bits (i.e. O's and 1's) inserted into a digital file, that can be used to identify the file's owner or originator. Unlike printed watermarks, which are intended to be somewhat visible, digital watermarks are designed to be invisible. The actual bits that make up the watermark are also scattered throughout the digital file so that they cannot be identified and manipulated by an attacker. Digital marks generally serve two basic purposes (see, for example:
  • the investigative need is the easier of the two needs to meet, since everything may be kept secret: the owner need reveal nothing about how the mark was applied, and legal proof is not required. That is, there is generally no need to justify the manner in which the thief was identified, since the owner is primarily interested in asserting legal rights over a marked entity in the thief's possession.
  • One aspect of the invention is broadly defined as a method for performing digital marking comprising the steps of: developing a digital mark injector program for inserting a digital mark into a digital file; developing a complementary digital mark extractor program for identifying the digital mark in the digital file; and encoding the digital mark extractor program using tamper-resistant software encoding techniques.
  • Another aspect of the invention is defined as a system for performing digital marking comprising a computer operable to perform the steps of: developing a digital mark injector program for inserting a digital mark into a digital file; developing a complementary digital mark extractor program for identifying the digital mark in the digital file; and encoding the digital mark extractor program using tamper-resistant software encoding techniques.
  • Figure 1 presents a flow chart of a general algorithm for implementation of the invention
  • Figure 2 presents an exemplary computer system in which the invention may be embodied
  • Figure 3 presents a flow chart of a method for performing control-flow encoding in an embodiment of the invention
  • Figure 4 presents a flow chart of a method for performing white-box encoding in an embodiment of the invention.
  • digital marking techniques are typically implemented using a complementary pairing of injector and extractor software, the injector software being used to insert the digital mark into a targeted software, data or other digital file, and the extractor program being used to identify the digital mark that was injected into the digital file.
  • the extractor program is then encoded using tamper-resistant software
  • TRS tamper-resistant software
  • the chaos enhances the obscurity by frustrating perturbation analysis (i.e. it roughly corresponds to 'full cascade' in cryptography).
  • watermarking is a form of steganography, it protects against analysis of the watermarking algorithm by fault injection, which has been shown to be an effective attack against cryptographic functions embodied in smart cards, for example.
  • TRS The obscurity of TRS, and its chaotic response to tampering, are both relative rather than absolute. As in the case of the obscurity provided by cryptography, these properties are removable in principle: however, we can make the required effort for such removal expensive for the attacker. TRS techniques which are particularly effective in digital mark applications are described hereinafter.
  • the method of the invention enables a sustainable watermarking strategy in which the watermarking method is kept secret.
  • the invention will be of most value to an owner who requires a long-term, legally verifiable, watermarking strategy, where many different items will be watermarked, so that the number of forms of watermark is substantial. If the owner decides to employ a secret watermarking method, but also needs the capability of verifying the presence of the watermark in court, the following approach could be used:
  • the owner develops or obtains a series of watermarking methods, each consisting of two algorithms: an injector, which 'marks' an entity with the watermark, and an extractor, which reads out the watermark information.
  • injector/extractor pairs are required when it is desirable to have digital marks stored in different patterns, or using different encodings.
  • These different injector/extractor pairs can be said to contain "secret keys" in that each injector/extractor pair will inherently (or explicitly) have data which define the pattern and encoding for that pair.
  • Generic injector/extractor pairs could also be written, which require a user- input key to establish the patterns and encoding parameters of a digital mark;
  • each extractor algorithm is converted into TRS form (a TRS-extractor) which is then: a. published; and b. registered with a trusted third party;
  • TRS-extractor a TRS-extractor
  • Various forms of publication of the extractor may be used, including Internet publication with download capability whereby the TRS-extractor software can easily be obtained by virtually anyone, or publication on physical media such as floppy disk, cassette tape, or CD ROM, or as program text in a widely recognized source language such as C or JavaTM;
  • each TRS-extractor is tested by the trusted third party to verify that it recognizes and extracts watermarks from marked items but extracts no watermark from an unmarked (or differently marked) item;
  • the owner can use an extremely heavily protected form of TRS-extractor. Within limits, the TRS-extractor can run slowly and take a lot of space, providing a maximum of freedom in the conversion techniques used to convert the extractor to tamper-resistant form. Also, the more computer resources it costs to run the TRS-extractor, the harder an attack will be: an attacker needs many runs for cracking whereas proof of ownership in court takes just one; and
  • the owner can deploy a large number of different injectors and extractors, so that the expense of compromising any given watermark is multiplied by the number of TRS-extractors which the owner has published.
  • the injectors may be kept a secret, as the TRS-extractors may be legitimized independently of the injectors.
  • other implementations are also possible, such as preparing TRS versions of both an injector and an extractor.
  • the shortcoming of this technique would be that an attacker may be able to obtain useful information by comparing the operation of the injector and extractor algorithms, knowing that they are complements of one another.
  • an attacker could inject a watermark into a blank digital file and obtain a perfect mapping of the digital mark.
  • such an implementation would almost invariably be applied with a secret key input by the user at run time, the secret key dictating the pattern of the digital mark, and the encoding parameters.
  • the method of the invention may be applied on virtually any computer or microprocessor-based system.
  • An exemplary system on which the invention may be implemented, is presented as a block diagram in Figure 2.
  • This computer system 30 includes a display 32, keyboard 34, computer 36 and external devices 38.
  • the computer 36 may contain one or more processors or microprocessors, such as a central processing unit (CPU) 40.
  • the CPU 40 performs arithmetic calculations and control functions to execute software stored in an internal memory 42, preferably random access memory (RAM) and/or read only memory (ROM), and possibly additional memory 44.
  • the additional memory 44 may include, for example, mass memory storage, hard disk drives, floppy disk drives, magnetic tape drives, compact disk drives, program cartridges and cartridge interfaces such as those found in video game devices, removable memory chips such as EPROM or PROM, or similar storage media as known in the art.
  • This additional memory 44 may be physically internal to the computer 36, or external as shown in Figure 1.
  • the computer system 30 may also include other similar means for allowing computer programs or other instructions to be loaded.
  • Such means can include, for example, a communications interface 46 which allows software and data to be transferred between the computer system 30 and external systems.
  • communications interface 46 can include a modem, a network interface such as an Ethernet card, a serial or parallel communications port.
  • Software and data transferred via communications interface 46 are in the form of signals which can be electronic, electromagnetic, optical or other signals capable of being received by communications interface 46. Multiple interfaces, of course, can be provided on a single computer system 30.
  • Input and output to and from the computer 36 is administered by the input output (I/O) interface 48. This I/O interface 48 administers control of the display 32, keyboard 34, external devices 38 and other such components of the computer system 30.
  • I/O input output
  • TRS encoding techniques There are many TRS encoding techniques known in the art. These techniques may generally be categorized as follows:
  • White-box encoding concerns TRS encoding of functions and transforms for an environment in which the software is fully-accessible. It is somewhat misleading to divide encoding techniques out in this manner.
  • TRS be much more than simply obscure. It should also resist tampering. That is, it should preferably be aggressively fragile under tampering, so that attempts to change its functionality result, not in the desired change, but in useless pieces of nonsense code. (Avoiding a visible point of failure prevents leakage of information about why the functionality has become nonsense.)
  • As with encryption, the mapping from original form (plaintext or ordinary software, respectively) to encoded form (ciphertext or TRS, respectively) is one way. it is very much easier to encrypt or cloak, respectively, than to decrypt or de-cloak, respectively, unless the secret information used in encrypting or cloaking is known.
  • TRS is software which can do its job perfectly well while remaining in TRS form. This is a significant difference, and means that the applications of cryptography and the applications of TRS are orthogonal and complementary: each does something that the other cannot.
  • the other aspect of data-flow cloaking for TRS is to induce aggressive fragility under tampering. This is achieved by generating code according to the following policies:
  • control-flow of a program refers to the decision points and branch instructions that govern which lines of code in the program are to be executed.
  • control-flow encoding increases tamper-resistance by adding fake- robust, data-driven, control transfers to the software code. If a large number of control transfers are added to the software code, it will be extremely difficult for the attacker to identify the specific line of control that he wishes to analyse or modify.
  • control-flow encoding ensures that what was one control transfer, has been instantiated in multiple parts of the code, and that control transfers from different parts of the code are often merged into one. As the added control transfers are fake-robust, the erroneously modified program will appear to continue executing properly, while in fact it is not. Since control is exercised using a complex data- driven scheme, any attempt to modify a single control transfer will almost certainly affect others (this is described as the "anti-hologram” property), especially where multiple control transfers are often combined into one (the “togetherness” property), as they are in this invention.
  • control-flow encoding is presented as a flow chart in Figure 3.
  • the operations in the targeted code preferably in SSA (single-static assignment) or similar intermediate form, are re-sorted without changing the semantics of the program.
  • the code is in an intermediate form, the interdependencies of the intermediate statements are clear and the bounds on what re-sorting could be performed may be easily determined. The understanding of these interdependencies is what allows multi-threading and optimisation techniques as known in the art.
  • SSA is a very commonly used intermediate form.
  • these instructions can be re-sorted so that a direct decompiling into high level language yields obscure results.
  • an enormously greater benefit is realized with the synergy between re-sorting of the code and the creation of 'lake-robust" targets at step 54.
  • a fake-robust target is one which will appear to operate correctly when it is modified, but in fact, results in nonsensical operation.
  • the re-sorted code is copied into multiple different segments. For example, in a contiguous sequence of ten successive instructions, six distinct segments of five contiguous instructions each, may be identified (namely, the pieces comprising instructions 1 to 5, 2 to 6, 3 to 7, 4 to 8, 5 to 9, or 6 to 10 of the original sequence of ten instructions). Of course, many more distinct segments may be selected from the sequence of ten instructions by choosing segments of different lengths. Some of the selections will consist of segments or sequences of segments that will correctly mirror the functionality of the original program.
  • new control transfer instructions are added to make reference to the new code segments created at step 52.
  • the targeted code is now protected by control-flow encoding.
  • control-flow encoding Additional details on control-flow encoding may be found in the co-pending patent application titled: Tamper Resistant Software - Control-flow Encoding, filed under the Patent Co-operation Treaty on August 18, 2000, under Serial No. PCT/CA00/00943; inventors: Stanley Chow, Harold Johnson, and Yuan Gu.
  • each original operation is represented, variously cloaked, at multiple cloaked sites;
  • execution paths include a pseudo-random component: any change in input data causes pervasive changes to branch patterns;
  • simplification requires removal of the pseudo-random component from branches, but it appears indistinguishable from the normal components (see comment on NP-hardness below); d. simplification requires unraveling of both the branching and the data- flow together; and e. almost any perturbation-based analysis on control-flow, in effect, involves branch jamming, and will fail as branch jamming will fail.
  • Mass data encoding relies on the random or pseudo-random dispersion of data being stored, throughout the available memory or an area of the available memory. This dispersion makes it very difficult for an attacker to locate certain pieces of data he is searching for, and also distributes the data values with respect to one another. Thus, data are not stored in areas of the memory one might expect them to be, and there are no clearly identifiable blocks or patterns of data in the memory.
  • a simple technique for performing mass data encoding is to respond to a request to store a data value at a virtual address, by mapping that virtual address onto a randomly selected actual address. This mapping may be done in a truly random manner, but will generally be done in a pseudo-random manner, because of the difficulties in generating truly random numbers in pure software.
  • a desirable technique for generating pseudo-random address is by use of a hash function, which generates what appears to be a random number from a given input.
  • a hash function which generates what appears to be a random number from a given input.
  • the definition of a hash function is somewhat more restrictive, but it is clear in this case that any function may be employed which maps a given input onto a random or pseudo-random output.
  • mass data encoding techniques may also be used to complement the main invention. These additional techniques may be applied collectively, or independently to obtain varying degrees of security:
  • White-box encoding concerns cryptographic computation which can be observed in complete detail without revealing internal data such as a secret key.
  • the white-box techniques of the invention provide ways to make finding an embedded cryptographic key or other hidden information combinatorially difficult for the attacker, even under this severe threat model. Such methods are inherently bulkier and slower than software designed under a black-box model, but in digital mark extraction applications, the tradeoff is well worthwhile.
  • white-box encoding is implemented by as shown in the flow chart of Figure 4. Firstly, functions and transforms substantive to the targeted software program are identified at step 70. Next, new functions and transforms which alter the processing activity visible to the attacker are generated at step 72. The identified functions and transforms are then replaced with the new functions and transforms in the software program at step 74.
  • a linear transform can be replaced with a simple lookup table. If unused portions of the lookup table are filled with random data, then the lookup table becomes non-linear and irreducible.
  • Lookup tables can also be partitioned so that they are accessed by concatenated input variables; that is, the table is indexed by the values of two variables, concatenated together. This has the effect of replacing two variables with a single variable having a lookup table which will generally be non-linear. If a lookup table is generated for a transform concatenated with a random transform, then the lookup table will almost certainly be non-linear and irreducible.
  • the invention can be employed to protect any manner of software from being analysed, reversed-engineered, or simply observed to discover secure data such as secret keys. Secret keys can then be incorporated into software programs without the danger of the secret key being disclosed, or the program being altered to do anything other than what it was originally intended to do.
  • many digital marking algorithms employ secret keys to the extent that they contain secret data which defines the pattern of memory locations for the digital mark data, the parameters of any encoding, and the content of the digital mark itself.
  • watermark extractors do not have a critical decision branch like a password checker would.
  • the watermark is typically a visual image which says something like "Property of OwnerCo, Chicago, Illinois. Watermarked on April 1 ,
  • the typical extractor program may also contain mass data structures, though this depends very much on the particular watermark extraction algorithm.
  • the secret key i.e. the data which defines the pattern of memory locations for the digital mark data, the parameters of any encoding, and the content of the digital mark itself
  • the watermark algorithm may depend on large mathematical tables generated in advance for computing certain functions, which also are good candidates for mass data encoding.
  • a 'normal' watermarking approach reveals the watermarking algorithm when it is applied for legal enforcement of property rights.
  • a TRS-based approach allows this enforcement to be done without revealing the algorithm to the public.
  • TRS encoding such as that provided by the invention is necessary to preserve such complex, diverse, context-sensitive, data-sensitive extraction algorithms, or assemblages of algorithms. Without using TRS, this cannot be done.
  • TRS-extractor any publication of the extractor reveals its methods. Moreover, the third party entrusted with testing the extractors becomes a potential point of leakage for the marking techniques, even if they were otherwise kept secret. TRS permits the owner to prove to a court that:
  • the owner is not cheating, by publishing the various TRS-extractors in advance, and
  • the method steps of the invention may be embodiment in sets of executable machine code stored in a variety of formats such as object code or source code.
  • Such code is described generically herein as programming code, or a computer program for simplification.
  • the executable machine code may be integrated with the code of other programs, implemented as subroutines, by external program calls or by other techniques as known in the art.
  • the embodiments of the invention may be executed by a computer processor or similar device programmed in the manner of method steps, or may be executed by an electronic system which is provided with means for executing these steps.
  • an electronic memory means such computer diskettes, CD-Roms, Random Access Memory (RAM), Read Only Memory (ROM) or similar computer software storage media known in the art, may be programmed to execute such method steps.
  • electronic signals representing these method steps may also be transmitted via a communication network.
  • Portable music devices such as mp3 players, video disk players such as DVD players are just two such devices that are commonly used with watermarked data content.

Abstract

Digital marks (so-called fingerprints and watermarks) serve two basic purposes: (1) Investigative: the owner reads a fingerprint to determine how the marked entity leaked; and (2) Legal: the owner must prove in court that (a) there is a watermark (a concealed copyright message), and (b) it is the owner's. The main difficulty of item (2) is that the first use of the watermark software reveals the watermarking method to the public so that hostile parties are equipped to remove or damage its watermarks. The invention uses tamper-resistant software encoding techniques to protect the digital mark extractor algorithm, frustrating the attacks of hostile parties in two ways: the resulting code is obscure (that is, its inner workings are incomprehensible; and chaotic (that is, a modification at any point will almost certainly produce a nonsense program.

Description

Method and System for Sustainable Digital Watermarking
The present invention relates generally to computer software, and more specifically, to a method and system which allows digital watermarking algorithms to be kept secret, while still allowing ownership of marked entities to be demonstrated in public or in court.
Background of the Invention
In recent years, personal computers and digital communication systems have become pervasive in industrialized nations. As well, the speed and power of these systems are now at the point where any subject matter including images, audio, video and software can be stored, transferred and reproduced with ease. Because these systems are digital, the storage, transfer and reproduction can be performed flawlessly; each successive copy of a digital file may be made precisely the same as the original. This is in contrast to analogue systems used in the past, where the quality of each successive copy was poorer than the previous one, and all of the known storage media deteriorated over time.
Obviously, this ability to copy and transfer digital data with virtually no loss in quality is having a great impact on the revenues of many digital rights holders, including music, movie and software producers. Many techniques for protecting the intellectual property rights of these digital content and software producers have been proposed but have had little success. One technique that has shown particular promise is that of "digital marks".
Digital marks such as "digital fingerprints" or "watermarks" are patterns of bits (i.e. O's and 1's) inserted into a digital file, that can be used to identify the file's owner or originator. Unlike printed watermarks, which are intended to be somewhat visible, digital watermarks are designed to be invisible. The actual bits that make up the watermark are also scattered throughout the digital file so that they cannot be identified and manipulated by an attacker. Digital marks generally serve two basic purposes (see, for example:
Protecting ownership rights through digital watermarking, by H. Berghel and L. O'Gorman, 1996, IEEE Computer 29:7, pp. 101-103 and Attacks on copyright marking systems, by Fabien A.P. Petitcolas, Ross J. Anderson, and Markus G. Kuhn, 1998, 2nd Workshop on Information Hiding, LNCS vol. 1525 (isbn 3-540- 65386- 4), pp. 218-238):
1. Investigative: the owner reads a fingerprint (such as a concealed serial number) to determine how the marked entity (say, a picture in jpeg format) leaked. A trail of marked entities serves the owner in the same way that a trail of fingerprints serves a police detective, so that an owner can identify persons who have purloined the owner's property; and 2. Legal: the owner must prove in court that an infringed data file contains a watermark (a concealed copyright message), and that this watermark is the owner's.
The investigative need is the easier of the two needs to meet, since everything may be kept secret: the owner need reveal nothing about how the mark was applied, and legal proof is not required. That is, there is generally no need to justify the manner in which the thief was identified, since the owner is primarily interested in asserting legal rights over a marked entity in the thief's possession.
However, addressing the legal purpose is sufficiently difficult that some consider it infeasible against a resourceful, clever attacker (see, for example: Protecting digital media content, by Nasir Memon and Ping Wah Wong, 1998, Communications of the ACM 41 :7, pp. 34-43).
Greatly exacerbating the difficulty of addressing the legal purpose above is the fact that the first use of a watermark extraction program in a courtroom, based on a particular watermarking method, reveals the watermarking method. After the first legal justification (and hence, revelation) of the method, hostile parties are equipped to remove or damage its watermarks on a permanent basis thereafter.
In order to provide legal watermarking the owner of the watermark would proceed roughly along the lines of the following:
1. employing a watermarking method, embodied in an "injector" implementation which applies the watermark to an owned item (possibly using a secret key) and an "extractor" implementation which reveals the watermark on an owned item (requiring the secret key, if one was used by the injector program);
2. keeping secret the keys (if any) used for watermarking owned items;
3. in court, demonstrating the watermark as follows: a. revealing the algorithm, so it can be justified as legitimate; b. loading the extractor and the impugned data/software file to be analysed, and having an agent of the court or a party trusted by the court apply the secret key (if any) to the extractor. Note that the key need not be revealed; and c. demonstrating that the revelation of the watermark by the (now justified) extractor proves the owner's claim to be the rightful owner of the disputed item containing the watermark. This methodology may be implemented in two major variants: 1. either keeping the injector and extractor algorithms a secret until it is necessary to disclose them during a court proceeding; or 2. publishing the injector and extractor algorithms.
If the injector and extractor algorithms had been kept secure by the owner, then the public disclosure of these algorithms will reduce the level of security that has been enjoyed before the public disclosure. If the watermarking method had already been published, then the attacker would already have had sufficient information to permit compromise of the watermarks the algorithm applies.
There is therefore a need for a watermarking method which allows legal justification of a claim to ownership of a purloined, watermarked entity, without revealing to the world at large the algorithm by which the watermark is applied or revealed.
Summary of the Invention
It is therefore an object of the invention to provide a novel method and system of digital watermarking which obviates or mitigates at least one of the disadvantages of the prior art.
One aspect of the invention is broadly defined as a method for performing digital marking comprising the steps of: developing a digital mark injector program for inserting a digital mark into a digital file; developing a complementary digital mark extractor program for identifying the digital mark in the digital file; and encoding the digital mark extractor program using tamper-resistant software encoding techniques.
Another aspect of the invention is defined as a system for performing digital marking comprising a computer operable to perform the steps of: developing a digital mark injector program for inserting a digital mark into a digital file; developing a complementary digital mark extractor program for identifying the digital mark in the digital file; and encoding the digital mark extractor program using tamper-resistant software encoding techniques. Brief Description of the Drawings
These and other features of the invention will become more apparent from the following description in which reference is made to the appended drawings in which: Figure 1 presents a flow chart of a general algorithm for implementation of the invention; Figure 2 presents an exemplary computer system in which the invention may be embodied; Figure 3 presents a flow chart of a method for performing control-flow encoding in an embodiment of the invention; and
Figure 4 presents a flow chart of a method for performing white-box encoding in an embodiment of the invention.
Description of the Invention A methodology which addresses the objects outlined above, is presented as a flow chart of Figure 1. This figure presents a method for performing digital marking which proceeds generally as follows.
First, developing a digital mark injector program for inserting a digital mark into a digital file at step 20, then developing a complementary digital mark extractor program for identifying that digital mark at step 22. As noted above, digital marking techniques are typically implemented using a complementary pairing of injector and extractor software, the injector software being used to insert the digital mark into a targeted software, data or other digital file, and the extractor program being used to identify the digital mark that was injected into the digital file. The extractor program is then encoded using tamper-resistant software
(TRS) encoding techniques at step 24. Protecting the extractor program using TRS encoding techniques, prevents attackers from analysing the operation of the extractor to the point where digital marks in existing files could be changed, thus preventing the proper owner of the intellectual property, from asserting his rights. A number of tamper-resistant software (TRS) encoding techniques are known in the art. Encoding software into a TRS form frustrates the attacks of hostile parties in at least the following ways:
1. it generates software which is "obscure"; that is, software whose inner workings are incomprehensible; and 2. it generates software which is "chaotic" in that a modification at any point will almost certainly produce a nonsensical result.
In the context of the invention, the chaos enhances the obscurity by frustrating perturbation analysis (i.e. it roughly corresponds to 'full cascade' in cryptography). Specifically, since watermarking is a form of steganography, it protects against analysis of the watermarking algorithm by fault injection, which has been shown to be an effective attack against cryptographic functions embodied in smart cards, for example.
The obscurity of TRS, and its chaotic response to tampering, are both relative rather than absolute. As in the case of the obscurity provided by cryptography, these properties are removable in principle: however, we can make the required effort for such removal expensive for the attacker. TRS techniques which are particularly effective in digital mark applications are described hereinafter.
Thus, the method of the invention enables a sustainable watermarking strategy in which the watermarking method is kept secret.
The invention will be of most value to an owner who requires a long-term, legally verifiable, watermarking strategy, where many different items will be watermarked, so that the number of forms of watermark is substantial. If the owner decides to employ a secret watermarking method, but also needs the capability of verifying the presence of the watermark in court, the following approach could be used:
1. the owner develops or obtains a series of watermarking methods, each consisting of two algorithms: an injector, which 'marks' an entity with the watermark, and an extractor, which reads out the watermark information. Different injector/extractor pairs are required when it is desirable to have digital marks stored in different patterns, or using different encodings. These different injector/extractor pairs can be said to contain "secret keys" in that each injector/extractor pair will inherently (or explicitly) have data which define the pattern and encoding for that pair. Generic injector/extractor pairs could also be written, which require a user- input key to establish the patterns and encoding parameters of a digital mark;
2. each extractor algorithm is converted into TRS form (a TRS-extractor) which is then: a. published; and b. registered with a trusted third party; Various forms of publication of the extractor may be used, including Internet publication with download capability whereby the TRS-extractor software can easily be obtained by virtually anyone, or publication on physical media such as floppy disk, cassette tape, or CD ROM, or as program text in a widely recognized source language such as C or Java™;
3. each TRS-extractor is tested by the trusted third party to verify that it recognizes and extracts watermarks from marked items but extracts no watermark from an unmarked (or differently marked) item; and
4. when ownership of an item is in question, the accumulated evidence from the above is available. An already published TRS-extractor, selected by the owner, is applied by an agent of the court to attempt extraction of the watermark. Verification of the watermark, coupled with the accumulated evidence on the reliability of the owner's chosen TRS-extractor, constitutes the owner's means of establishing ownership. Apart from the usual watermarking concerns (such as preserving quality of the content when the watermark is added, limiting the likelihood of a false positive, having a high level of survivability when the content is modified, etc.), the requirement for making this approach viable is that reversal of the TRS obscurity be prohibitively expensive for the attacker. This is achieved by some combination of the following two methods:
1. the owner can use an extremely heavily protected form of TRS-extractor. Within limits, the TRS-extractor can run slowly and take a lot of space, providing a maximum of freedom in the conversion techniques used to convert the extractor to tamper-resistant form. Also, the more computer resources it costs to run the TRS-extractor, the harder an attack will be: an attacker needs many runs for cracking whereas proof of ownership in court takes just one; and
2. the owner can deploy a large number of different injectors and extractors, so that the expense of compromising any given watermark is multiplied by the number of TRS-extractors which the owner has published.
In this implementation, the injectors may be kept a secret, as the TRS-extractors may be legitimized independently of the injectors. However, other implementations are also possible, such as preparing TRS versions of both an injector and an extractor. The shortcoming of this technique (making a TRS-encoded injector program available to the public) would be that an attacker may be able to obtain useful information by comparing the operation of the injector and extractor algorithms, knowing that they are complements of one another. In fact, an attacker could inject a watermark into a blank digital file and obtain a perfect mapping of the digital mark. Thus, such an implementation would almost invariably be applied with a secret key input by the user at run time, the secret key dictating the pattern of the digital mark, and the encoding parameters.
The method of the invention may be applied on virtually any computer or microprocessor-based system. An exemplary system on which the invention may be implemented, is presented as a block diagram in Figure 2. This computer system 30 includes a display 32, keyboard 34, computer 36 and external devices 38.
The computer 36 may contain one or more processors or microprocessors, such as a central processing unit (CPU) 40. The CPU 40 performs arithmetic calculations and control functions to execute software stored in an internal memory 42, preferably random access memory (RAM) and/or read only memory (ROM), and possibly additional memory 44. The additional memory 44 may include, for example, mass memory storage, hard disk drives, floppy disk drives, magnetic tape drives, compact disk drives, program cartridges and cartridge interfaces such as those found in video game devices, removable memory chips such as EPROM or PROM, or similar storage media as known in the art. This additional memory 44 may be physically internal to the computer 36, or external as shown in Figure 1.
The computer system 30 may also include other similar means for allowing computer programs or other instructions to be loaded. Such means can include, for example, a communications interface 46 which allows software and data to be transferred between the computer system 30 and external systems. Examples of communications interface 46 can include a modem, a network interface such as an Ethernet card, a serial or parallel communications port. Software and data transferred via communications interface 46 are in the form of signals which can be electronic, electromagnetic, optical or other signals capable of being received by communications interface 46. Multiple interfaces, of course, can be provided on a single computer system 30. Input and output to and from the computer 36 is administered by the input output (I/O) interface 48. This I/O interface 48 administers control of the display 32, keyboard 34, external devices 38 and other such components of the computer system 30. The invention is described in these terms for convenience purposes only. It would be clear to one skilled in the art that the invention may be applied to other computer or control systems 30. Such systems would include all manner of appliances having computer or processor control including telephones, cellular telephones, televisions, television set top units, point of sale computers, automatic banking machines, lap top computers, servers, personal digital assistants and automobiles.
TRS Encoding Techniques
There are many TRS encoding techniques known in the art. These techniques may generally be categorized as follows:
1. Cloaked data-flow concerns TRS implementation of ordinary computations on small pieces of data — the building blocks of larger computations;
2. Cloaked control-flow concerns TRS implementation of software decision making and the structure of execution, which glues all larger computations together from smaller pieces;
3. Cloaked mass data concerns TRS implementation of concepts such as files, arrays, dynamic allocation, and linked structures with potential aliasing; and
4. White-box encoding concerns TRS encoding of functions and transforms for an environment in which the software is fully-accessible. It is somewhat misleading to divide encoding techniques out in this manner.
The above categories, while they are handled in different ways, are generally not handled in isolation. A significant degree of control-flow protection is achieved using data-flow encoding techniques, for example.
We prefer that TRS be much more than simply obscure. It should also resist tampering. That is, it should preferably be aggressively fragile under tampering, so that attempts to change its functionality result, not in the desired change, but in useless pieces of nonsense code. (Avoiding a visible point of failure prevents leakage of information about why the functionality has become nonsense.) The techniques described herein, have this property. As with encryption, the mapping from original form (plaintext or ordinary software, respectively) to encoded form (ciphertext or TRS, respectively) is one way. it is very much easier to encrypt or cloak, respectively, than to decrypt or de-cloak, respectively, unless the secret information used in encrypting or cloaking is known. However, the conversion of software into TRS form is not a form of encryption. Encrypted messages are useless without a key. In contrast, TRS is software which can do its job perfectly well while remaining in TRS form. This is a significant difference, and means that the applications of cryptography and the applications of TRS are orthogonal and complementary: each does something that the other cannot.
Data-Flow Encoding
By data-flow, we mean the 'ordinary computation' of a program: addition, subtraction, multiplication, division, Boolean computations, masking operations, and the like: the scalar data-flow of a program.
There are two primary aspects of data-flow encoding: obscuring the computation to hide the data which the computation manipulates, and making the computations aggressively fragile under tampering.
The obscuring is achieved by various data encodings. Even very simple encodings can provide a great deal of protection. Our simplest encoding is of the form x'= sx + of, where x is original and x'is cloaked. That is, at each point in the targeted program where the variable x appears, it is replaced with its encoding. When this is done for a large number, or all, of the variables in the targeted program, the resulting code will bear little resemblance to the original code. An attacker may be able to deduce how unprotected software code operates because variables are generally defined with respect to "real-world" concepts and measures, and the equations will often look familiar. However, when the same program is protected by data-flow encoding, the variables will lose their "real-world" appearance, as will the equations. Thus, an attacker will not be able to obtain any useful information from a simple review and analysis of the encoded program.
Many other data flow encodings may also be made. To perform a cloaked addition of constant cto variable x, we simply interpret x' according to x'= sx + (cs + d) — no actual code is needed. Plainly, then, no unique mapping from a cloaked program to an original program exists. To add a variable instead of a constant, we need actual code, but the transform space for addition using a 64-bit implementation is over 100 bits; a brute- force attack on a space of this size is plainly infeasible (a brute-force attack is one in which all possible combinations of data values are checked until the correct one has been discovered). The mappings we use in practice vary from the simple transformations above, to complex multidimensional transforms combining multiple mathematical domains. This approach is highly effective for obscuring the data-flow.
The other aspect of data-flow cloaking for TRS is to induce aggressive fragility under tampering. This is achieved by generating code according to the following policies:
1. every computation depends on as many others as possible. This may be done simply by creating new variables which are defined as a combination of original variables;
2. the interdependencies are complex, so that, with high probability, an arbitrary change causes invalid computation to occur;
3. execution is 'fake robust': invalidities do not cause failure; execution simply continues in the form of nonsense computation. If, for example, an array A is known to have 100 elements, then converting the expression A [i] to the expression A [i mod 100] makes it fake-robust in that variable / may take on any value and not cause an array bounds error. However, certain values of variable / may cause nonsensical operation elsewhere in the program without causing a complete failure; and
4. any directed change to behaviour (i.e., any change whose result is not nonsense computation) requires that several changes, related in obscure and complex ways, be performed absolutely perfectly.
Further information on this subject is available in the co-pending patent application titled: Tamper Resistant Software Encoding, filed under the Patent Cooperation Treaty on June 8, 2000, under Serial No. PCT/CA00/00678, by Stanley Chow, Harold Johnson, and Yuan Gu.
Control-Flow Encoding
The control-flow of a program refers to the decision points and branch instructions that govern which lines of code in the program are to be executed. In broad terms, control-flow encoding increases tamper-resistance by adding fake- robust, data-driven, control transfers to the software code. If a large number of control transfers are added to the software code, it will be extremely difficult for the attacker to identify the specific line of control that he wishes to analyse or modify.
Generally, control-flow encoding ensures that what was one control transfer, has been instantiated in multiple parts of the code, and that control transfers from different parts of the code are often merged into one. As the added control transfers are fake-robust, the erroneously modified program will appear to continue executing properly, while in fact it is not. Since control is exercised using a complex data- driven scheme, any attempt to modify a single control transfer will almost certainly affect others (this is described as the "anti-hologram" property), especially where multiple control transfers are often combined into one (the "togetherness" property), as they are in this invention.
As well, if the attacker makes a number of modifications, by the time the erroneous operation is discovered, it will not be possible to tell which of the modifications caused the erroneous operation. The general implementation of control-flow encoding is presented as a flow chart in Figure 3. First, at step 50, the operations in the targeted code, preferably in SSA (single-static assignment) or similar intermediate form, are re-sorted without changing the semantics of the program. When the code is in an intermediate form, the interdependencies of the intermediate statements are clear and the bounds on what re-sorting could be performed may be easily determined. The understanding of these interdependencies is what allows multi-threading and optimisation techniques as known in the art. SSA is a very commonly used intermediate form.
In the case of the invention, these instructions can be re-sorted so that a direct decompiling into high level language yields obscure results. However, an enormously greater benefit is realized with the synergy between re-sorting of the code and the creation of 'lake-robust" targets at step 54. A fake-robust target is one which will appear to operate correctly when it is modified, but in fact, results in nonsensical operation.
The strategies and limitations for re-sorting the code instructions will vary between applications, and with the type of intermediate code that is used. These restrictions would be clear to one skilled in the art.
At step 52, the re-sorted code is copied into multiple different segments. For example, in a contiguous sequence of ten successive instructions, six distinct segments of five contiguous instructions each, may be identified (namely, the pieces comprising instructions 1 to 5, 2 to 6, 3 to 7, 4 to 8, 5 to 9, or 6 to 10 of the original sequence of ten instructions). Of course, many more distinct segments may be selected from the sequence of ten instructions by choosing segments of different lengths. Some of the selections will consist of segments or sequences of segments that will correctly mirror the functionality of the original program. At step 54, new control transfer instructions are added to make reference to the new code segments created at step 52. These references will generally be fake- robust as they refer to the segments of the original code that were slightly modified at step 52, but will not be perfectly fake robust unless measures are taken to ensure they will not fail. Fault-resistant programming techniques are known in the art and could be implemented as desired or required.
The targeted code is now protected by control-flow encoding.
Additional details on control-flow encoding may be found in the co-pending patent application titled: Tamper Resistant Software - Control-flow Encoding, filed under the Patent Co-operation Treaty on August 18, 2000, under Serial No. PCT/CA00/00943; inventors: Stanley Chow, Harold Johnson, and Yuan Gu.
When applied extensively, control-flow encoded software is cloaked so that:
1. each original operation is represented, variously cloaked, at multiple cloaked sites;
2. a single cloaked site also represents multiple original sites; 3. there is no difference between 'decoy' and 'significant' computation;
4. cloaked routines do not preserve the boundaries of the original routines;
5. execution paths include a pseudo-random component: any change in input data causes pervasive changes to branch patterns;
6. both data- and control-flow are made fake robust, the tampering does not cause failure (traps, core dumps, error messages, or the like): it simply causes execution to continue in a nonsense fashion; and
7. all aspects of control-flow are subjected to all aspects of data-flow cloaking. This protects the control-flow of the targeted software from standard attacks as follows: 1. Branch jamming will not work because: a. no specific branch can be found to jam, b. jammed branches subvert the operation of the data-flow functions, producing nonsensical data-flow; and c. multiple sites require jamming, with sizable changes to their data-flow, to achieve the effect of a single branch jamming in the original program; and 2. simplification of the control-flow encoded software is extremely difficult because: a. due to various data-flow cloakings, distinct sites which share 'original' functionality have quite different code; b. data-flow coding mixes dependencies and hence, entropy among functionalities at each site, and the mixing must be fully understood before simplification is possible; c. simplification requires removal of the pseudo-random component from branches, but it appears indistinguishable from the normal components (see comment on NP-hardness below); d. simplification requires unraveling of both the branching and the data- flow together; and e. almost any perturbation-based analysis on control-flow, in effect, involves branch jamming, and will fail as branch jamming will fail.
Mass Data Encoding To convert large data structures into TRS form (arrays, linked structures, file buffers, and the like), we cloak them so that:
1. the information in the large data structures, and the addresses at which they are stored, are meaningless without the accessing code. The cloaked data structures themselves have no meaning for the data; and 2. uncloaked information appears nowhere; all aspects of such data always appear in cloaked form. Our approach is general, and covers file input and output (I/O) as well as in-memory data structures, dynamic data structures, and aliasing.
Mass data encoding relies on the random or pseudo-random dispersion of data being stored, throughout the available memory or an area of the available memory. This dispersion makes it very difficult for an attacker to locate certain pieces of data he is searching for, and also distributes the data values with respect to one another. Thus, data are not stored in areas of the memory one might expect them to be, and there are no clearly identifiable blocks or patterns of data in the memory. A simple technique for performing mass data encoding is to respond to a request to store a data value at a virtual address, by mapping that virtual address onto a randomly selected actual address. This mapping may be done in a truly random manner, but will generally be done in a pseudo-random manner, because of the difficulties in generating truly random numbers in pure software. A desirable technique for generating pseudo-random address is by use of a hash function, which generates what appears to be a random number from a given input. In the formal sense, the definition of a hash function is somewhat more restrictive, but it is clear in this case that any function may be employed which maps a given input onto a random or pseudo-random output.
Each time the encoded software routine is executed, it would access the stored data transparently because the pseudo-random mapping is built into the encoded program. This could allow a patient attacker to monitor all memory lookups and generate a mapping table, however, if the software routine was also protected using data and control-flow encoding, it would virtually impossible to do so.
By storing data in a dispersed manner through the available memory space, it is impossible for an attacker to obtain anything meaningful from analysing the stored memory. In the prior art, data is stored in successive or adjacent memory locations, but in the case of the invention, the memory-wise spacial relationship has been removed, and the data is now dispersed in a pseudo-random manner.
As noted above, this dispersion makes it difficult for an attacker to locate certain pieces of data he is searching for, but also distributes the data values with respect to one another. Thus, data are not stored in areas of the memory one might expect them to be, and there are no clearly identifiable blocks or patterns of data in the memory.
For example, one avenue of attacking an encrypted memory is to search for repetitious patterns. In a text document which is encrypted with a single key, a given word will appear as the same encrypted data, each time it occurs in the original document. Thus, the attacker can identify a block of encrypted code which appears to be repeated often in the memory and assume that it corresponds to a commonly used word. The attacker would start by identifying the statistically most common words, calculating a corresponding key, and determining whether the rest of the encoding makes sense in terms of that key. In English, candidates for a short encoding might include, for example: "the", "is", or "if". With mass data encoding, each of the letters in these short words could be stored in dispersed locations in the memory. Thus, when the word "the" is stored, the codes corresponding to these three letters will not appear together, but be randomly dispersed throughout the memory. There is therefore no repetition of a code pattern in the mass data storage, for an attacker to exploit.
The following mass data encoding techniques may also be used to complement the main invention. These additional techniques may be applied collectively, or independently to obtain varying degrees of security:
1. using different hashes for different data addresses, making it more difficult for the attacker to correlate different codings;
2. varying the hashes and encryption keys while the target program is running, so that an attacker obtains no benefit from decoding only a part of the routine, at some point in time;
3. encrypting the data being stored; and 4. using data flow encoding of the address and data before even beginning the mass data encoding. In this way, the data and addresses are encoded at all times and unprotected data is never exposed. Additional details on mass data encoding appear in: Tamper Resistant Software - Mass Data Encoding, filed under the Patent Co-operation Treaty on April 12, 2001 , under Serial No. PCT/CA01/00493); inventors: Stanley Chow, Harold Johnson, and Yuan Gu.
White-Box Encoding
White-box encoding concerns cryptographic computation which can be observed in complete detail without revealing internal data such as a secret key.
Most security software is designed under the assumption that the software will be applied in a secure environment, that is, in a black-box model. This is generally unrealistic, and as a result, most security software cannot withstand a concerted attack. The "white-box" encoding model assumes that an attacker will have complete access to the targeted software, and thus, the algorithm itself must be protected against analysis and modification.
The white-box techniques of the invention provide ways to make finding an embedded cryptographic key or other hidden information combinatorially difficult for the attacker, even under this severe threat model. Such methods are inherently bulkier and slower than software designed under a black-box model, but in digital mark extraction applications, the tradeoff is well worthwhile.
In broad terms, white-box encoding is implemented by as shown in the flow chart of Figure 4. Firstly, functions and transforms substantive to the targeted software program are identified at step 70. Next, new functions and transforms which alter the processing activity visible to the attacker are generated at step 72. The identified functions and transforms are then replaced with the new functions and transforms in the software program at step 74.
A large number of different techniques may be used to encode the functions and transforms identified at step 70. These techniques may be grouped generally as follows:
1. making transforms non-linear, so they cannot be reduced by an attacker;
2. making processing activity disappear, by generating new transforms that eliminate data (such as constants) and processing steps (such as combining two transforms together into one);
3. generating new, spurious, processing activity, by concatenating random transforms to real ones, and performing input and output encodings that introduce processing activity completely unrelated to the original data; and
4. encoding and widely diffusing sites of information transfer and/or combination and/or loss.
For example, a linear transform can be replaced with a simple lookup table. If unused portions of the lookup table are filled with random data, then the lookup table becomes non-linear and irreducible.
Lookup tables can also be partitioned so that they are accessed by concatenated input variables; that is, the table is indexed by the values of two variables, concatenated together. This has the effect of replacing two variables with a single variable having a lookup table which will generally be non-linear. If a lookup table is generated for a transform concatenated with a random transform, then the lookup table will almost certainly be non-linear and irreducible. Hence, the invention can be employed to protect any manner of software from being analysed, reversed-engineered, or simply observed to discover secure data such as secret keys. Secret keys can then be incorporated into software programs without the danger of the secret key being disclosed, or the program being altered to do anything other than what it was originally intended to do. As noted above, many digital marking algorithms employ secret keys to the extent that they contain secret data which defines the pattern of memory locations for the digital mark data, the parameters of any encoding, and the content of the digital mark itself.
More details on these and other white-box encoding techniques are described in the co-pending patent application titled System and Method for Protecting Computer Software from a White Box Attack, filed under the Patent Cooperation Treaty on December 10, 2001 , under Serial No. PCT/CA01/01729; inventors: Stanley Chow, Harold Johnson, and Philip A. Eisen.
Preferred Application of TRS Techniques to Digital Marks Typical watermark extraction algorithms rely on data (which may be regarded as a secret key) indicating where and how the watermark is concealed in the watermarked data. Thus, data encoding is highly desirable in most applications.
Generally, watermark extractors do not have a critical decision branch like a password checker would. The watermark is typically a visual image which says something like "Property of OwnerCo, Chicago, Illinois. Watermarked on April 1 ,
2001 ". If the print is legible and says something like the above, it makes it likely that the court will accept that the instance really is OwnerCo's property. So the extractor simply extracts the image, without making any judgment as to whether it bolsters the owners legal claims. It is up to the court whether or not the image in fact does so. Thus, there is not a single branch statement that relies on control-flow encoding, though of course, it would still be desirable to obfuscate the control-flow of the extractor algorithm.
The typical extractor program may also contain mass data structures, though this depends very much on the particular watermark extraction algorithm. For example, in some cases, the secret key (i.e. the data which defines the pattern of memory locations for the digital mark data, the parameters of any encoding, and the content of the digital mark itself) may be stored as a mass data structure. In other cases, the watermark algorithm may depend on large mathematical tables generated in advance for computing certain functions, which also are good candidates for mass data encoding.
The key point about having the full armamentarium of encoding techniques as described above (data-flow, control-flow, mass data, whitebox encoding), is that it permits us to cover a correspondingly wide spectrum of watermark extraction algorithms. Conclusions
A 'normal' watermarking approach reveals the watermarking algorithm when it is applied for legal enforcement of property rights. A TRS-based approach, however, allows this enforcement to be done without revealing the algorithm to the public.
Further to Attacks on copyright marking systems, 2nd Workshop on Information Hiding, LNCS vol. 1525 (isbn 3-540-65386- 4), pp. 218-238, by Fabien A.P. Petitcolas, Ross J. Anderson, and Markus G. Kuhn, 1998, it becomes clear that an effective watermarking method must adjust itself to the nature of the content and not just its format (such as jpeg, mp3, or text). As well, the actual content within that format, and the context in which the content is expected to be used, is relevant in determining what marking approach, or what combination of approaches, to employ.
It follows that TRS encoding such as that provided by the invention is necessary to preserve such complex, diverse, context-sensitive, data-sensitive extraction algorithms, or assemblages of algorithms. Without using TRS, this cannot be done.
For example, unless a TRS-extractor is used, any publication of the extractor reveals its methods. Moreover, the third party entrusted with testing the extractors becomes a potential point of leakage for the marking techniques, even if they were otherwise kept secret. TRS permits the owner to prove to a court that:
1. the owner is not cheating, by publishing the various TRS-extractors in advance, and
2. that the watermark is truly present, by means of evidence from the trusted third party that the TRS-extractor performs as is claimed, and by means of the TRS-extractor's extraction of the watermark.
While particular embodiments of the present invention have been shown and described, it is clear that changes and modifications may be made to such embodiments without departing from the true scope and spirit of the invention. It is understood that as de-compiling and debugging tools become more and more powerful, the degree to which the techniques of the invention must be applied to ensure tamper protection, will also rise. As well, the concern for system resources may also be reduced over time as the cost and speed of computer execution and memory storage capacity continue to improve. These improvements in system resources will also increase the attacker's ability to overcome the simpler tamper-resistance techniques included in the scope of the claims. It is understood, therefore, that the utility of some of the simpler encoding techniques that fall within the scope of the claims, may correspondingly decrease over time. That is, just as in the world of cryptography, increasing key- lengths become necessary over time in order to provide a given level of protection, so in the world of the instant invention, increasing complexity of encoding will become necessary to achieve a given level of protection.
As noted above, it is also understood that computer control and software is becoming more and more common. It is understood that software encoded in the manner of the invention is not limited to the applications described, but may be applied to any manner of the software stored, or executing.
The method steps of the invention may be embodiment in sets of executable machine code stored in a variety of formats such as object code or source code. Such code is described generically herein as programming code, or a computer program for simplification. Clearly, the executable machine code may be integrated with the code of other programs, implemented as subroutines, by external program calls or by other techniques as known in the art.
The embodiments of the invention may be executed by a computer processor or similar device programmed in the manner of method steps, or may be executed by an electronic system which is provided with means for executing these steps. Similarly, an electronic memory means such computer diskettes, CD-Roms, Random Access Memory (RAM), Read Only Memory (ROM) or similar computer software storage media known in the art, may be programmed to execute such method steps. As well, electronic signals representing these method steps may also be transmitted via a communication network.
It would also be clear to one skilled in the art that this invention need not be limited to the existing scope of computers and computer systems. Portable music devices such as mp3 players, video disk players such as DVD players are just two such devices that are commonly used with watermarked data content.

Claims

WHAT IS CLAIMED IS:
1. A method for performing digital marking comprising the steps of: developing a digital mark injector program for inserting a digital mark into a digital file; developing a complementary digital mark extractor program for identifying said digital mark in said digital file; and encoding said digital mark extractor program using tamper-resistant software encoding techniques.
2. A method for performing digital watermarking comprising the steps of: developing a watermark-injector program for inserting a watermark into a digital file; developing a complementary watermark extractor program for identifying said watermark in said digital file; and encoding said watermark extractor program using tamper-resistant software encoding techniques.
3. The method of claim 1 wherein said step of encoding comprises the step of: encoding said watermark extractor program using data-flow encoding techniques.
4. The method of claim 3 wherein said step of encoding comprises the step of: transforming the data flow in said watermark extractor to dissociate the observable operation of the transformed said watermark extractor from the intent of the original software code.
5. The method of claim 3 wherein said step of encoding comprises the step of: encoding the data flow in said watermark extractor into a domain which does not have a corresponding semantic structure, to increase the tamper-resistance and obscurity of said watermark extractor.
6. The method of claim 1 wherein said step of encoding comprises the step of: encoding said watermark extractor program using control-flow encoding techniques.
7. The method of claim 6 wherein said step of encoding comprises the step of: transforming the control flow in said watermark extractor program to dissociate the observable operation of the transformed watermark extractor program from the intent of the original software code.
8. The method of claim 6 wherein said step of encoding comprises the step of: dispersing subsequences of instructions within said watermark extractor program into a plurality of locations; merging multiple dispersed subsequences into single blocks of code; selecting said subsequences of instructions from merged blocks of code for either functionally effective or decoy execution, as needed, to separate the observable operation of resulting code from the intent of the original software during execution.
9. The method of claim 6 wherein said step of encoding comprises the step of: adding fake-robust control transfers to said watermark extractor program, to increase the tamper-resistance of said watermark extractor program.
10. The method of claim 1 wherein said step of encoding comprises the step of: encoding said watermark extractor program using mass-data encoding techniques.
11. The method of claim 10 wherein said step of encoding comprises the step of: encoding a secret key in said watermark extractor program, using mass-data encoding techniques.
12. The method of claim 10 wherein said step of encoding comprises the step of: responding to a request to store a data value at a virtual address by: mapping said virtual address onto a randomly selected actual address; and storing said data value in a memory location indexed by said actual address.
13. The method of claim 1 wherein said step of encoding comprises the step of: encoding said watermark extractor program using white box encoding techniques.
14. The method of claim 13 wherein said step of encoding comprises the step of: representing one or more algorithmic steps or components as tables, thereby permitting encodings to be completely arbitrary nonlinear bijections.
15. The method of claim 13 wherein said step of encoding comprises the step of: identifying functions and transforms substantive to the targeted software program; generating new functions and transforms which alter the processing activity visible to the attacker; and replacing those identified functions and transforms with the new functions and transforms in the software program.
16. A method for performing digital watermarking comprising the steps of: publishing and validating an obscured embodiment of a watermark extractor which extracts the watermark content from a marked digital entity, in advance, thereby demonstrating the good faith of an owner.
17. The method of claim 1 , in which the level of obscurity is sufficient to make attacks on the watermarks via understanding of the extractor prohibitively expensive for most attackers.
18. A method of watermarking comprising the steps of: converting a watermark extracting program into obscure, tamper resistant form.
19. The method of any one of claims 1 - 18, in which multiple distinct watermarks and corresponding extraction programs are employed to increase security.
20. A system for executing the method of any one of claims 1 -18.
21. An apparatus for executing the method of any one of claims 1 - 18.
22. A computer readable memory medium for storing software code executable to perform the method of any one of claims 1 - 18.
23. A carrier signal incorporating software code executable to perform the method of any one of claims 1 - 18.
24. A data structure comprising the output data of any one of claims 1 - 18.
PCT/CA2002/000847 2001-06-08 2002-06-10 Method and system for generating sustainable digital watermarks WO2002101519A2 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
EP02737682A EP1421457A2 (en) 2001-06-08 2002-06-10 Method and system for generating sustainable digital watermarks
AU2002312670A AU2002312670A1 (en) 2001-06-08 2002-06-10 Method and system for generating sustainable digital watermarks
CA002449595A CA2449595A1 (en) 2001-06-08 2002-06-10 Method and system for sustainable digital watermarking
US10/478,696 US7395433B2 (en) 2001-06-08 2002-06-10 Method and system for sustainable digital watermarking

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CA002350029A CA2350029A1 (en) 2001-06-08 2001-06-08 Sustainable digital watermarking via tamper-resistant software
CA2,350,029 2001-06-08

Publications (2)

Publication Number Publication Date
WO2002101519A2 true WO2002101519A2 (en) 2002-12-19
WO2002101519A3 WO2002101519A3 (en) 2004-02-05

Family

ID=4169233

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CA2002/000847 WO2002101519A2 (en) 2001-06-08 2002-06-10 Method and system for generating sustainable digital watermarks

Country Status (5)

Country Link
US (1) US7395433B2 (en)
EP (1) EP1421457A2 (en)
AU (1) AU2002312670A1 (en)
CA (1) CA2350029A1 (en)
WO (1) WO2002101519A2 (en)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005122114A1 (en) * 2004-06-10 2005-12-22 Protection Technology Limited Water marks injector
KR100611989B1 (en) * 2004-08-31 2006-08-11 삼성전자주식회사 Method and apparatus for generating fingerprint codes
CN1322433C (en) * 2004-08-12 2007-06-20 西南交通大学 Positioning vulnerable water print generating and recognizing method capable of distigushing image and watermark distortion
WO2007036863A3 (en) * 2005-09-30 2007-07-19 Nxp Bv Watermarking of a processing module
EP1722313A3 (en) * 2005-05-12 2008-07-30 Xerox Corporation Method for creating unique identification for copies of executable code and management thereof
EP1734459A3 (en) * 2005-05-12 2008-10-01 Xerox Corporation Method for creating unique identification for copies of executable code and management thereof
CN100428107C (en) * 2004-02-11 2008-10-22 北京邮电大学 Digital watermarking infrastructure
WO2009034504A2 (en) * 2007-09-13 2009-03-19 Koninklijke Philips Electronics N.V. Cryptographic processing of content
US8510571B1 (en) 2003-03-24 2013-08-13 Hoi Chang System and method for inserting security mechanisms into a software program
US8621187B2 (en) 2008-02-11 2013-12-31 Nxp, B.V. Method of program obfuscation and processing device for executing obfuscated programs
US8661559B2 (en) 2003-08-18 2014-02-25 Riverside Research Institute Software control flow watermarking
US8856500B2 (en) 2008-02-06 2014-10-07 Nxp B.V. Obfuscating program by scattering sequential instructions into memory regions such that jumps occur with steps of both signs in equal frequency

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7770016B2 (en) * 1999-07-29 2010-08-03 Intertrust Technologies Corporation Systems and methods for watermarking software and other media
JP2004362532A (en) * 2002-10-25 2004-12-24 Matsushita Electric Ind Co Ltd Watermark insertion device and watermark extraction device
US8887287B2 (en) * 2004-10-27 2014-11-11 Alcatel Lucent Method and apparatus for software integrity protection using timed executable agents
EP1715436A3 (en) * 2005-04-21 2007-03-28 St Microelectronics S.A. Protection of program execution performed by an integrated circuit or the data stored in this circuit
US7760903B2 (en) * 2005-08-30 2010-07-20 Microsoft Corporation Tamper-resistant text stream watermarking
FR2903508B1 (en) * 2006-07-10 2008-10-17 Sagem Defense Securite PROTECTION OF A PROGRAM INTERPRETED BY A VIRTUAL MACHINE
WO2009007876A2 (en) * 2007-07-06 2009-01-15 Koninklijke Philips Electronics N.V. Warermarking and encryption of entropy-coded data using additive huffman table
US20100095376A1 (en) * 2008-03-07 2010-04-15 Rodriguez Tony F Software watermarking
JP5460699B2 (en) * 2008-05-23 2014-04-02 イルデト カナダ コーポレーション System and method for generating a white-box implementation of a software application
EP2359520B1 (en) * 2008-11-17 2019-08-14 Intrinsic ID B.V. Distributed puf
EP3923165A1 (en) 2009-11-13 2021-12-15 Irdeto B.V. System and method to protect java bytecode code against static and dynamic attacks within hostile execution environments
US20150121073A1 (en) 2012-03-23 2015-04-30 Irdeto B.V. Software fingerprinting
WO2015149826A1 (en) 2014-03-31 2015-10-08 Irdeto B.V. Protecting an item of software
GB201405755D0 (en) 2014-03-31 2014-05-14 Irdeto Bv Optimizing and protecting software
US20160132317A1 (en) 2014-11-06 2016-05-12 Intertrust Technologies Corporation Secure Application Distribution Systems and Methods
GB201505553D0 (en) 2015-03-31 2015-05-13 Irdeto Bv Online advertisements
US10223511B2 (en) * 2016-03-30 2019-03-05 Nxp B.V. Watermarking input and output of a white-box implementation
CA3047009A1 (en) 2016-12-15 2018-06-21 Irdeto B.V. Software integrity verification
GB201703864D0 (en) 2017-03-10 2017-04-26 Irdeto Bv Secured system operation
US10805693B2 (en) 2017-09-12 2020-10-13 Irdeto B.V. Device and method for GPU-based watermarking
CN108491698B (en) * 2018-03-22 2020-03-10 维沃移动通信有限公司 Watermark generation method and mobile terminal
US10797868B2 (en) 2018-05-31 2020-10-06 Irdeto B.V. Shared secret establishment
US10706746B2 (en) * 2018-06-01 2020-07-07 Polyverse Corporation Pure binary scrambling
US11263316B2 (en) 2019-08-20 2022-03-01 Irdeto B.V. Securing software routines
US11574032B2 (en) 2019-11-14 2023-02-07 Baidu Usa Llc Systems and methods for signing an AI model with a watermark for a data processing accelerator
US11582260B2 (en) 2019-11-14 2023-02-14 Baidu Usa Llc Systems and methods for verifying a watermark of an AI model for a data processing accelerator
US11481678B2 (en) * 2019-11-14 2022-10-25 Baidu Usa Llc Systems and methods for learning new watermark algorithms for a data processing accelerator
US11579928B2 (en) 2019-11-14 2023-02-14 Baidu Usa Llc Systems and methods for configuring a watermark unit with watermark algorithms for a data processing accelerator
EP4339835A1 (en) 2022-09-16 2024-03-20 Irdeto B.V. Machine learning model protection

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5892899A (en) * 1996-06-13 1999-04-06 Intel Corporation Tamper resistant methods and apparatus

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5123045A (en) * 1989-08-18 1992-06-16 Massachusetts Institute Of Technology Comprehensive software protection system
CA2184949C (en) * 1995-09-28 2000-05-30 Ingemar J. Cox Secure spread spectrum watermarking for multimedia data
US5889868A (en) * 1996-07-02 1999-03-30 The Dice Company Optimization methods for the insertion, protection, and detection of digital watermarks in digitized data
US5875249A (en) * 1997-01-08 1999-02-23 International Business Machines Corporation Invisible image watermark for image verification
US5991519A (en) * 1997-10-03 1999-11-23 Atmel Corporation Secure memory having multiple security levels
US6330672B1 (en) * 1997-12-03 2001-12-11 At&T Corp. Method and apparatus for watermarking digital bitstreams
JP3654077B2 (en) * 1999-09-07 2005-06-02 日本電気株式会社 Online digital watermark detection system, online digital watermark detection method, and recording medium on which online digital watermark detection program is recorded

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5892899A (en) * 1996-06-13 1999-04-06 Intel Corporation Tamper resistant methods and apparatus

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
BERGHEL H ET AL: "PROTECTING OWNERSHIP RIGHTS THROUGH DIGITAL WATERMARKING" COMPUTER, IEEE COMPUTER SOCIETY, LONG BEACH., CA, US, US, vol. 29, no. 7, 1 July 1996 (1996-07-01), pages 101-103, XP000613936 ISSN: 0018-9162 *
FABIEN A.P. PETITCOLAS, ROSS J. ANDERSON, MARKUS G. KUHN: "Attacks on Copyright Marking Systems" SECOND WORKSHOP ON INFORMATION HIDING, LECTURE NOTES IN COMPUTER SCIENCE, vol. 1525, 14 - 17 April 1998, pages 218-238, XP002261151 Portland, Oregon cited in the application *
NASIR MEMON, PING WAH WONG: "Protecting Digital Media Content" COMMUNICATIONS OF THE ACM, vol. 41, no. 7, July 1998 (1998-07), pages 34-43, XP002261150 cited in the application *

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8510571B1 (en) 2003-03-24 2013-08-13 Hoi Chang System and method for inserting security mechanisms into a software program
US8661559B2 (en) 2003-08-18 2014-02-25 Riverside Research Institute Software control flow watermarking
CN100428107C (en) * 2004-02-11 2008-10-22 北京邮电大学 Digital watermarking infrastructure
WO2005122114A1 (en) * 2004-06-10 2005-12-22 Protection Technology Limited Water marks injector
CN1322433C (en) * 2004-08-12 2007-06-20 西南交通大学 Positioning vulnerable water print generating and recognizing method capable of distigushing image and watermark distortion
KR100611989B1 (en) * 2004-08-31 2006-08-11 삼성전자주식회사 Method and apparatus for generating fingerprint codes
EP1722313A3 (en) * 2005-05-12 2008-07-30 Xerox Corporation Method for creating unique identification for copies of executable code and management thereof
EP1734459A3 (en) * 2005-05-12 2008-10-01 Xerox Corporation Method for creating unique identification for copies of executable code and management thereof
US8209543B2 (en) 2005-09-30 2012-06-26 Nxp B.V. Watermarking of a processing module
WO2007036863A3 (en) * 2005-09-30 2007-07-19 Nxp Bv Watermarking of a processing module
WO2009034504A2 (en) * 2007-09-13 2009-03-19 Koninklijke Philips Electronics N.V. Cryptographic processing of content
WO2009034504A3 (en) * 2007-09-13 2009-06-04 Koninkl Philips Electronics Nv Cryptographic processing of content
US8726029B2 (en) 2007-09-13 2014-05-13 Irdeto Corporate B.V. Cryptographic processing of content
KR101545631B1 (en) 2007-09-13 2015-08-26 이르데토 비.브이. Cryptographic processing of content
US8856500B2 (en) 2008-02-06 2014-10-07 Nxp B.V. Obfuscating program by scattering sequential instructions into memory regions such that jumps occur with steps of both signs in equal frequency
US8621187B2 (en) 2008-02-11 2013-12-31 Nxp, B.V. Method of program obfuscation and processing device for executing obfuscated programs

Also Published As

Publication number Publication date
US7395433B2 (en) 2008-07-01
WO2002101519A3 (en) 2004-02-05
US20050021966A1 (en) 2005-01-27
CA2350029A1 (en) 2002-12-08
AU2002312670A1 (en) 2002-12-23
EP1421457A2 (en) 2004-05-26

Similar Documents

Publication Publication Date Title
US7395433B2 (en) Method and system for sustainable digital watermarking
US7464269B2 (en) Secure method and system for handling and distributing digital media
US9659157B2 (en) Systems and methods for watermarking software and other media
US7346780B2 (en) Integrity ordainment and ascertainment of computer-executable instructions
Collberg et al. Watermarking, tamper-proofing, and obfuscation-tools for software protection
US7797549B2 (en) Secure method and system for biometric verification
US5745569A (en) Method for stega-cipher protection of computer code
CA2783822C (en) Steganographic messaging system using code invariants
CA3047009A1 (en) Software integrity verification
CA2384360A1 (en) Tamper resistant software encoding
CA2449595A1 (en) Method and system for sustainable digital watermarking
CA2454761A1 (en) Secure method and system for handling and distributing digital media
Beri et al. Dynamic software component authentication for autonomous systems using slack space
Pervez et al. Semblance based disseminated software watermarking algorithm
Kosky Software Executable Fingerprinting: Literature Review and a Case Study
Collberg et al. Watermarking, Tamper-Proofing and Obfuscation
Sharma Watermarking for copyright protection of software codes
Mokhov et al. A Java Data Security Framework (JDSF) and its Case Studies
Fla et al. Moskowitz et al.
CA2451617A1 (en) Secure method and system for biometric verification

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ OM PH PL PT RO RU SD SE SG SI SK SL TJ TM TN TR TT TZ UA UG US UZ VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 2449595

Country of ref document: CA

WWE Wipo information: entry into national phase

Ref document number: 2002737682

Country of ref document: EP

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

WWW Wipo information: withdrawn in national office

Ref document number: 2002737682

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 2002737682

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 10478696

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: JP

WWW Wipo information: withdrawn in national office

Country of ref document: JP