IP Library › Granted Patent US 7,769,165
Granted Patent B2
US 7,769,165 · App. 11/251,625 · Granted Aug 3, 2010

Semi-public white-box cipher

Assignee: Microsoft Corporation
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 7,769,165
App. No.
11/251,625
Granted
Aug 3, 2010
Kind
B2
Abstract

A computer-implemented system and method for configuring and operating a white-box cipher is disclosed. In one implementation, the system employs a method for configuring pseudorandom data derived from a key to perform key-scheduling functionality associated with rounds of the cipher. Additionally, the system employs a method for generating white-box executable code, wherein the code hides the pseudorandom data by incorporating it into mathematical operations performed during execution of the rounds. Accordingly, the cipher is suited for white-box applications managing digital rights, such as decoding audio, video and other content.

Claims (55)

1. A computer-implemented method for configuring a white-box cipher, the computer-implemented method comprising:

configuring pseudorandom data derived from a key to perform key-scheduling functionality; and

generating white-box executable code, the code hiding the pseudorandom data by incorporating it into mathematical operations performed during executing rounds, the executing rounds comprising using key-scheduled data in the executing, and injecting, after transformations in AES rounds, an XOR of a current AES state with pseudorandom bits, thereby providing additional bits for an adversary to recover, boundaries of the AES rounds being blurred by scrambling code and data elements, the white-box executable code comprising code segments configured according to at least two tracks, only one of the tracks in each round being actually useful for operation of the white-box cipher, and other tracks serving to obfuscate round boundaries, the generating of the white-box executable code comprising:

extending a number of bits an adversary must recover by incorporating reversible steps to combine internal cipher data with the pseudorandom data;

setting a user-specified security parameter defining a number of bits in the pseudorandom data, the bits configured so that the number of bits provides a lower bound on an amount of key data an adversary must extract in order to emulate operation of the white-box executable code;

performing a brute-force search over short instruction sequences to find ones that implement a given operation and use the one found within the white-box executable code; and

providing a user-selectable choice to create white-box cipher code or compact cipher code, and in response to user-selection of white-box cipher code, obfuscating pseudorandom data within the white-box cipher code, the compact cipher code containing the key within the compact cipher code.

2. The computer-implemented method of claim 1 , wherein configuring pseudorandom data comprises:

using an AES key as input to a pseudorandom number generator to produce the pseudorandom data, wherein the pseudorandom data produced is larger than the key.

3. The computer-implemented method of claim 1 , wherein generating white-box executable code comprises:

devising a number of simple primitives to disguise computation, wherein iteration and recombination of the simple primitives obfuscate the pseudorandom data within the white-box executable code.

4. The computer-implemented method of claim 1 , wherein the at least two tracks are scrambled in a random manner for inclusion in a dynamic data structure, and wherein the dynamic data structure is configured such that a position of data position within the dynamic data structure does not reveal a round from which the data was generated.

5. The computer-implemented method of claim 1 , wherein generating the white-box executable code additionally comprises:

scrambling code and data elements, including variables and tables, within the white-box executable code and inserting the scrambled elements into a dynamic data structure, thereby blurring boundaries of rounds performed by the white-box executable code.

6. One or more computer-readable media comprising computer-executable instructions for operating a white-box cipher, the computer-executable instructions comprising instructions for:

storing, in a memory communicatively coupled to a processor, computer-executable instructions for performing the method of operating the white-box cipher;

executing the instructions on the processor;

according to the instructions being executed:

configuring pseudorandom data derived from a key to perform key-scheduling functionality, wherein configuring the pseudorandom data comprises using an AES key as input to a pseudorandom number generator to produce the pseudorandom data;

generating white-box executable code, the generating hiding the pseudorandom data with the white-box executable code by incorporating it into mathematical operations performed during execution of rounds, the white-box executable code comprising code segments configured according to at least two tracks, only one of the tracks in each round actually being useful for the white-box cipher operation and other tracks serve to obfuscate round boundaries, the at least two tracks comprising a dynamic data structure configured such that data position within the dynamic data structure does not reveal a round from which the data was generated; and

generating white-box executable code, the generating comprising:

extending a number of bits an adversary must recover by incorporating reversible steps to combine internal cipher data with the pseudorandom data;

setting a user-specified security parameter defining a number of bits in the pseudorandom data, wherein the bits are configured so that the number provides a lower bound on an amount of key data an adversary must extract in order to emulate operation of the white-box executable code;

performing a brute-force search over short instruction sequences to find ones that implement a given operation and use the one found within the white-box executable code; and

providing a user-selectable choice to create white-box cipher code or compact cipher code, and in response to user-selection of white-box cipher code, obfuscating pseudorandom data within the white-box cipher code, wherein the compact cipher code contains the key within the compact cipher code;

performing rounds with key-scheduled data comprising pseudorandom data; and

performing mathematical operations within the rounds which obfuscate the pseudorandom data.

7. The computer-readable media of claim 6 , wherein performing rounds with key-scheduled data comprises:

injecting, after transformations in AES rounds, an XOR of a current AES state with pseudorandom bits, thereby providing additional bits for an adversary to recover.

8. The computer-readable media of claim 6 , wherein performing mathematical operations comprises:

obfuscating the pseudorandom data by iterating and combining a number of simple primitives.

9. The computer-readable media of claim 6 , wherein performing mathematical operations comprises:

performing an arbitrarily complex sequence of primitives to obfuscate the pseudorandom data according to a user-specified parameter.

10. The computer-readable media of claim 6 , wherein performing mathematical operations comprises:

blurring boundaries of rounds performed by the white-box by scrambling code and data elements within the white-box executable code and inserting the scrambled code and data elements into a dynamic data structure.

11. The computer-readable media of claim 6 , additionally comprising instructions for:

augmenting internal cipher operations with additional steps to combine internal data with the pseudorandom data.

12. The computer-readable media of claim 6 , wherein performing the rounds using pseudorandom data for key scheduling decodes content input to the white-box cipher.

13. A system to configure a white-box cipher, comprising:

means for storing, in a memory communicatively coupled to a processor, computer-executable instructions for performing the method for configuring the white-box cipher;

means for executing the instructions on the processor;

means for according to the instructions being executed:

means for replacing key-scheduled data with pseudorandom data derived from a key, wherein the pseudorandom data is more voluminous than the key;

means for configuring code to perform rounds based on the pseudorandom data;

means for segregating the key from the code configured to perform the rounds;

means for providing a user-selectable choice to create white-box cipher code or compact cipher code, and in response to user-selection of white-box cipher code, obfuscating pseudorandom data within the white-box cipher code;

means for creation of white-box cipher code comprising:

means for extending a number of bits an adversary must recover by incorporating reversible steps to combine internal cipher data with the pseudorandom data;

means for setting a user-specified security parameter defining a number of bits in the pseudorandom data, the bits are configured so that the number provides a lower bound on an amount of key data an adversary must extract in order to emulate operation of the white-box executable code;

means for performing a brute-force search over short instruction sequences to find ones that implement a given operation and use the one found within the white-box executable code; and

means for providing a user-selectable choice to create white-box cipher code or compact cipher code, and in response to user-selection of white-box cipher code, obfuscating pseudorandom data within the white-box cipher code, the compact cipher code containing the key within the compact cipher code;

means for blurring boundaries of the rounds performed by the code by scrambling code and data elements; and

means for executing the rounds comprising means for using key-scheduled data in the executing, and injecting, after transformations in AES rounds, an XOR of a current AES state with pseudorandom bits, thereby providing additional bits for an adversary to recover.

14. The system of claim 13 , additionally comprising:

means for obfuscating the pseudorandom data within mathematical operations performed by the white-box cipher.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034543/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 4, 2006
From: JAKUBOWSKI, MARIUSZ H.; VENKATESAN, RAMARATHNAM; YACOBI, YACOV; YUVAL, GIDEON A.; CARY, MATTHEW
To: MICROSOFT CORPORATION
Reel/Frame 017428/0806 →
Continuity (1)
Related Publication 20070086586A1 · Apr 19, 2007