IP Library Granted Patent US 8,479,016
Granted Patent B2
US 8,479,016 · App. 12/282,175 · Granted Jul 2, 2013

Method and system for obfuscating a cryptographic function

Inventors: Wilhelmus Petrus Adrianus Johannus Michiels (Eindhoven, NL); Paulus Mathias Hubertus Mechtildis Antonius Gorissen (Eindhoven, NL)
Assignee: Irdeto B.V.
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 8,479,016
App. No.
12/282,175
Granted
Jul 2, 2013
Kind
B2
Abstract

A method of protecting an integrity of a data processing system. The method comprises determining ( 902 ) a data string to be protected, an integrity of the data string being an indication of the integrity of the data processing system. Computing ( 904 ) a set of parameters representing a predetermined data processing function, using a redundancy in the set of parameters to incorporate the data string into a bit representation of the set of parameters. Enabling ( 906 ) the system to process data according to the set of parameters. The set of parameters represents at least part of a cryptographic algorithm including a cryptographic key. The set of parameters represents a network of look-up tables. The network of look-up tables comprises a plurality of look-up tables of a white-box implementation of a data processing algorithm. The data processing algorithm comprises a cryptographic algorithm.

Claims (55)

1. A method of protecting an integrity of a data processing system, the method comprising:

determining a data string to be protected, an integrity of the data string being an indication of the integrity of the data processing system, the data processing system processing data according to a cryptographic algorithm;

computing a network of look-up tables for implementing the cryptographic algorithm including a cryptographic key using a redundancy in the look-up tables so that the data string is incorporated into two or more of the look-up tables; and

enabling the system to process the data using the network of look-up tables, wherein a change of the data string in the network of look-up tables causes the system to lose its capability to process the data according to the data processing function.

2. The method according to claim 1 , wherein the look-up tables are chained by a combining operation including either one or more of addition, subtraction and multiplication.

3. The method according to claim 2 , wherein the network of look-up tables comprises a plurality of look-up tables of a white-box implementation of a cryptographic algorithm.

4. The method according to claim 1 , further comprising:

providing the system with the network of look-up tables except the data string to be protected; and

enabling the system to obtain the data string from an execution environment of the system.

5. The method according to claim 1 , further comprising:

providing the system with the network of look-up tables except the data string to be protected; and

enabling the system to obtain the data string by means of a challenge/response protocol.

6. The method according to claim 1 , further comprising

enabling the system to derive the data string from computer executable code that is part of the system.

7. The method according to claim 6 , wherein the computer executable code comprises at least part of a set of instructions for establishing an authenticity of the system or for enforcing permissions control.

8. The method according to claim 1 , wherein the data string to be protected comprises a representation of at least one of:

a hardware identifier,

part of content to be processed,

computer executable code,

processor instructions,

a password, and

a response that the system is arranged to obtain by a challenge/response protocol.

9. The method according to claim 1 , wherein the computing comprises:

providing a second plurality of look-up tables for collectively performing a white-box implementation of the cryptographic algorithm, each second look-up table for mapping a portion of an input byte to an output byte; and

combining a plurality of elements of one or more of the second look-up tables with a series of bytes to generate the plurality of look-up tables, the series of bytes being selected such that two or more of the look-up tables contain two or more portions of the data string to be protected, respectively, and such that a combination of the output bytes from each of the plurality of look-up tables is the same for any given input byte as that achieved using the second plurality of look-up tables.

10. The method according to claim 9 ,

wherein the data string to be protected is at least a portion of a program code.

11. The method according to claim 1 , wherein the computing comprises:

selecting at least one word of the data string to be protected for inclusion in at least one of the look-up tables;

including the word in the at least one of the look-up tables by applying a transformation to elements of the look-up table; and

compensating for the transformation by applying, to elements of at least one of the other look-up tables, a compensating transformation inverting an effect of the transformation to elements of the look-up table.

12. The method according to claim 11 , wherein the data string to be protected is a bit representation of computer executable code.

13. The method according to claim 11 , further comprising:

arranging an output encoding of a first look-up table, in the network of look-up tables and an input decoding of a second look-up table in the network of look-up tables,

the input decoding inverting an effect of the output encoding such that the selected word is included in at least one of: the first look-up table and the second look-up table.

14. The method according to claim 13 , wherein the selected word is included in the first look-up table, the method further comprising arranging an output encoding, for example h, of a third look-up table in the network of look-up tables and an input decoding of the first look-up table, for example the input decoding of the first look-up table inverting an effect of the output encoding of the third look-up table for positioning the selected word in the first look-up table.

15. The method according to claim 1 , further comprising

enabling the system to:

apply a first set of look-up tables of the network to a string of bits of the digital data to obtain a first set of intermediate results;

apply a second set of look-up tables of the network to the string of bits of the digital data to obtain a second set of intermediate results, a bit representation of the second set of look-up tables including the data string to be protected;

combine the first and second intermediate results for obtaining a third intermediate result; and

compute processed digital data based on the third intermediate result.

16. A first system for protecting an integrity of a second system, the first system comprising:

a string determiner for determining a data string to be protected, an integrity of the data string being an indication of the integrity of the second system, the second system processing data according to a cryptographic algorithm;

a parameterizer for computing a network of look-up tables for implementing the cryptographic algorithm including a cryptographic key, using a redundancy in the look-up tables so that the data string is incorporated into two or more of the look-up tables; and

a processor configured to enable the second system to process data according to the network of look-up tables, wherein a change of the data string in the network of look-up tables causes the system to lose its capability to process the data according to the data processing function.

17. A non-transitory computer program storage medium storing one or more programs, the one or more programs comprising instructions, which when executed by a processor, cause the processor to perform the method according to claim 1 .

18. A data processing system comprising

a memory for storing a data string to be protected, an integrity of the data string being an indication of the integrity of the data processing system;

a memory for storing a network of look-up tables for implementing the cryptographic algorithm including a cryptographic key, the data string being incorporated into two or more of the look-up tables by using a redundancy in the look-up tables; and

a processing module for processing data according to the network of look-up tables, wherein a change of the data string in the network of look-up tables causes the system to lose its capability to process the data according to the data processing function.

19. A non-transitory computer program storage medium storing one or more programs, the one or more programs comprising instructions, which when executed by a processor, causes the processor to process data according to a network of look-up tables for implementing the cryptographic algorithm including a cryptographic key, an integrity of a data string to be protected being an indication of an integrity of the computer program product, the data string being incorporated into two or more of the look-up tables using a redundancy in the look-up tables, wherein a change of the data string in the network of look-up tables causes the system to lose its capability to process the data according to the data processing function.

20. The method according to claim 1 , comprising:

storing, in a memory having a double function, the data string at a location same as that of a portion of the network of look-up tables.

21. The data processing according to claim 18 wherein the memory has a double function for storing the data string at a location same as that of a portion of the network of look-up tables.

Assignments (4)
MERGER Recorded Dec 16, 2014
From: IRDETO CORPORATE B.V.
To: IRDETO B.V.
Reel/Frame 034512/0718 →
CHANGE OF NAME Recorded Sep 4, 2013
From: IRDETO B.V.
To: IRDETO CORPORATE B.V.
Reel/Frame 031156/0553 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 25, 2010
From: KONINKLIJKE PHILIPS ELECTRONICS N. V.
To: IRDETO B.V.
Reel/Frame 023985/0760 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 9, 2008
From: MICHIELS, WILHELMUS PETRUS ADRIANUS JOHANNUS; GORISSEN, PAULUS MATHIAS HUBERTUS MECHTILDIS ANTONIUS
To: KONINKLIJKE PHILIPS ELECTRONICS N V
Reel/Frame 021498/0835 →
Priority Claims (4)
EP 06110974 · Mar 10, 2006 · regional
EP 06116693 · Jul 6, 2006 · regional
EP 06117036 · Jul 12, 2006 · regional
EP 07102674 · Feb 20, 2007 · regional
Continuity (1)
Related Publication 20090158051A1 · Jun 18, 2009