IP Library › Granted Patent US 10,762,179
Granted Patent B2
US 10,762,179 · App. 16/057,852 · Granted Sep 1, 2020

System and method for watermarking software

Inventors: Catherine Chambers (Ottawa, CA); Philip Allan Eisen (Ottawa, CA); Robert Durand (Ottawa, CA); Grant Goodes (Ottawa, CA)
Assignee: IRDETO B.V.
G06F21/16G06F21/14
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,762,179
App. No.
16/057,852
Granted
Sep 1, 2020
Kind
B2
Abstract

Systems, methods, and storage media implemented by a computer for enabling tracking of software are disclosed. Exemplary implementations may: receive marking input code corresponding to a computer program; identify locations of the marking input code that can be modified in ways that preserve functionality of the computer program; choose at least one code transformation with associated intrinsic constants; derive derived constants from the specific intrinsic constants; apply the at least one chosen code transformation, including injecting the derived constants into the marking input code; saving the results of the above steps on computer readable media as marked code; and save metadata including a list of the derived constants on computer readable media in a file that is separate from the marked code.

Claims (52)

1. A system implemented by a computer for enabling tracking of software, the system comprising:

one or more hardware processors configured by machine-readable instructions to:

receive marking input code corresponding to a computer program;

identify locations of the marking input code that can be modified in ways that preserve functionality of the computer program;

select at least one code transformation to apply to the marking input code, each of the at least one code transformation having a specific intrinsic constant;

derive derived constants from the specific intrinsic constants;

inject the at least one code transformation, including the corresponding derived constant into the marking input code;

save the results of the above steps on computer readable media as marked code; and

save a list of the derived constants on computer readable media in a file that is separate from the marked code, whereby the list of derived constants can be compared to constants in other computer program code to determine if the other computer program code was derived from the marked code.

2. The system of claim 1 , wherein the functions of identify, apply, derive, and/or inject are part of an obfuscation process which renders the computer program more difficult to understand without adversely affecting the functionality of the code of the computer program.

3. The system of claim 1 , wherein the function of identify includes identifying mathematical computations in the marking input code and the function of apply includes modifying the representation of data in the mathematical computations and modifying the operations of the mathematical computation.

4. The system of claim 3 , wherein the derived constants are mathematical combinations of constants in the marked input code and the intrinsic constants.

5. The system of claim 1 , wherein the derived constants are used as a watermark and the list of derived constants is used as an input to a detection algorithm to determine if other computer program code was derived from at least a portion of the marked code.

6. The system of claim 5 , wherein the detection algorithm scans the other computer program code for a presence of a specified percentage of the derived constants, scans within a portion of the other computer program code for constants in a corresponding portion of the marked code, scans the other computer program code for derived constants identified as coming from the same function across all similarly sized chunks, scans the other computer program code for derived constants within a certain distance from an already found derived constant, scans the other computer program code for derived constants having a certain property, and/or scans the other computer program code for near matches to derived constants.

7. The system of claim 1 , wherein the marked input code is one of source code, LLV bit-code, or binary code.

8. A method implemented by a computer for enabling tracking of software, the method comprising:

receiving marking input code corresponding to a computer program;

identifying locations of the marking input code that can be modified in ways that preserve functionality of the computer program; and

selecting at least one code transformation to apply to the marking input code, each of the at least one code transformation having a specific intrinsic constant;

deriving derived constants from the specific intrinsic constants;

injecting the at least one code transformation, including the corresponding derived constant, into the marking input code;

saving the results of the above steps on computer readable media as marked code; and

saving a list of the derived constants on computer readable media in a file that is separate from the marked code, whereby the list of derived constants can be compared to constants in other computer program code to determine if the other computer program code was derived from the marked code.

9. The method of claim 8 , wherein the steps of identifying, applying, deriving, and/or injecting are part of an obfuscation process which renders the computer program more difficult to understand without adversely affecting the functionality of the code.

10. The method of claim 8 , wherein the step of identifying includes identifying mathematical computations in the marking input code and the step of applying includes modifying the representation of data in the mathematical computations and modifying the operations of the mathematical computation.

11. The method of claim 10 , wherein the derived constants are mathematical combinations of constants in the marked input code and the intrinsic constants.

12. The method of claim 8 , wherein the derived constants are used as a watermark and the list of derived constants is used along with a detection algorithm to determine if other computer program code was derived from at least a portion of the marked code.

13. The method of claim 12 , wherein the detection algorithm scans the other computer program code for a presence of a specified percentage of the derived constants, scans within a portion of the other computer program code for constants in a corresponding portion of the marked code, scans the other computer program code for derived constants identified as coming from the same function across all similarly sized chunks, scans the other computer program code for derived constants within a certain distance from an already found derived constant, scans the other computer program code for derived constants having a certain property, and/or scans the other computer program code for near matches to derived constants.

14. The method of claim 8 , wherein the marked input code is one of source code, IIv bit-code, or binary code.

15. A non-transient computer-readable storage medium having instructions embodied thereon, the instructions being executable by one or more processors to perform a method implemented by a computer for enabling tracking of software, the method comprising:

receiving marking input code corresponding to a computer program;

identifying locations of the marking input code that can be modified in ways that preserve functionality of the computer program; and

selecting at least one code transformation to apply to the marking input code, each of the at least one code transformation having a specific intrinsic constant;

deriving derived constants from the specific intrinsic constants;

injecting the at least one code transformation, including the corresponding derived constant, into the marking input code;

saving the results of the above steps on computer readable media as marked code; and

saving a list of the derived constants on computer readable media in a file that is separate from the marked code,

whereby the list of derived constants can be compared to constants in other computer program code to determine of the other computer program code was derived from the marked code.

16. The computer-readable storage medium of claim 15 , wherein the steps of identifying, applying, deriving, and/or injecting are part of an obfuscation process which renders the computer program more difficult to understand without adversely affecting the functionality of the code.

17. The computer-readable storage medium of claim 15 , wherein the step of identifying includes identifying mathematical computations in the marking input code and the step of applying includes modifying the representation of data in the mathematical computations and modifying the operations of the mathematical computation.

18. The computer-readable storage medium of claim 17 , wherein the derived constants are mathematical combinations of constants in the marked input code and the intrinsic constants.

19. The computer-readable storage medium of claim 15 , wherein the derived constants are used as a watermark and the list of derived constants is used along with a detection algorithm to determine if other computer program code was derived from at least a portion of the marked code.

20. The computer-readable storage medium of claim 19 , wherein the detection algorithm scans the other computer program code for a presence of a specified percentage of the derived constants, scans within a portion of the other computer program code for constants in a corresponding portion of the marked code, scans the other computer program code for derived constants identified as coming from the same function across all similarly sized chunks, scans the other computer program code for derived constants within a certain distance from an already found derived constant, scans the other computer program code for derived constants having a certain property, and/or scans the other computer program code for near matches to derived constants.

21. A system implemented by a computer for detecting a watermark in software, the system comprising:

one or more hardware processors configured by machine-readable instructions to:

receive marked code corresponding to at least a portion of a computer program, wherein the marked code is created by;

identifying locations of the marking input code that can be modified in ways that preserve functionality of the computer program;

select at least one code transformation to apply to the marking input code, each of the at least one code transformation having a specific intrinsic constant;

derive derived constants from the specific intrinsic constants; and

injecting the at least one code transformation, including the derived constant, into the marked code; and

scan the marked code and compare the marked to code to a list of the at least one derived constant to look for specified patterns associated with the watermark data.

22. The system of claim 21 , wherein list of the at least one derived constants is stored on computer readable media in a file that is separate from the marked code, and wherein the scan is based on the metadata.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 10, 2021
From: IRDETO CANADA CORPORATION
To: IRDETO B.V.
Reel/Frame 055212/0711 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 24, 2019
From: CHAMBERS, CATHERINE; DURAND, ROBERT; EISEN, PHILIP ALLAN; GOODES, GRANT
To: IRDETO CANADA CORPORATION
Reel/Frame 048120/0656 →
Continuity (1)
Related Publication 20200050740A1 · Feb 13, 2020