IP Library › Granted Patent US 10,140,437
Granted Patent B2
US 10,140,437 · App. 14/815,301 · Granted Nov 27, 2018

Array indexing with modular encoded values

Inventors: Jan Hoogerbrugge (Eindhoven, NL); Wil Michiels (Eindhoven, NL)
Assignee: NXP B.V.
G06F21/14G06F21/50G06F21/602G06F2221/0748
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,140,437
App. No.
14/815,301
Granted
Nov 27, 2018
Kind
B2
Abstract

A method of obscuring software code including a data array and a plurality of operations, including: identifying, by a processor, a data array with an index to be obscured and an operation using the data array; permutating the identified data array using a permutating function; and replacing the identified operation using the permutated data array and equivalent encoded permutation function.

Claims (42)

1. A method of providing an application that includes obscured software code including a data array and a plurality of operations, the method comprising:

providing the application to a user, the application created by:

identifying, by a processor, the data array with an index to be obscured and an operation using the data array;

permutating the identified data array using a permutation function; and

replacing the identified operation using the permutated data array and an equivalent encoded permutation function by obscuring an index by determining an equivalent encoded expression for the index using split variables and replacing the index in the permutation function with the encoded expression for the index;

wherein the split variables are split into two portions;

wherein the split variables are determined using first and second secret splitting multiplicative values and a modulus value, and

wherein the permutation function includes multiplying a split variable index by a secret permutation multiplication value.

2. The method of claim 1 , wherein the split variables are further determined using a secret splitting additive value.

3. The method of claim 1 , wherein the equivalent split variable expression is arranged so that none of the secret permutation multiplication value, first and second splitting secret multiplicative values, and the secret splitting additive value are observable to an attacker.

4. The method of claim 1 , wherein the permutation function includes adding a secret permutation addition value to the product of the obscured index and the secret permutation multiplication value.

5. The method of claim 1 , wherein the permutation function ƒ(i) is:

ƒ( i )=( A π I α I 1 +A π I β I 2 +A π I γ )mod M

where i is an index into the data array, A π , I 60 , I β ,and I γ are secret values, M is a modulus value based upon the size of the data array, I 1 is a first index split variable, and I 2 is a second index split variable.

6. The method of claim 1 , wherein the method of obscuring software code is carried out by a compiler.

7. A non-transitory machine-readable storage medium encoded with instructions for providing an application that includes obscured software code including a data array and a plurality of operations, the non-transitory machine-readable storage medium comprising:

instructions for providing the application to a user, the application created by:

instructions for identifying, by a processor, the data array with an index to be obscured and an operation using the data array;

instructions for permutating the identified data array using a permutation function; and

instructions for replacing the identified operation using the permutated data array and an equivalent encoded permutation function by obscuring an index by determining an equivalent encoded expression for the index using split variables and replacing the index in the permutation function with the encoded expression for the index;

wherein the split variables are split into two portions;

wherein the split variables are determined using first and second secret splitting multiplicative values and a modulus value, and

wherein the permutation function includes multiplying a split variable index by a secret permutation multiplication value.

8. The non-transitory machine-readable storage medium of claim 7 , wherein the split variables are further determined using a secret splitting additive value.

9. The non-transitory machine-readable storage medium of claim 7 , wherein the equivalent split variable expression is arranged so that none of the secret permutation multiplication value, first and second splitting secret multiplicative values, and the secret splitting additive value are observable to an attacker.

10. The non-transitory machine-readable storage medium of claim 7 , wherein the permutation function includes adding a secret permutation addition value to the product of the obscured index and the secret permutation multiplication value.

11. The non-transitory machine-readable storage medium of claim 7 , wherein the permutation function ƒ(i) is:

ƒ( i )=( A π I α I 1 +A π I β I 2 +A π I γ )mod M

where i is an index into the data array, A π ,I α ,I β ,and I γ are secret values, and M is a modulus value based upon the size of the data array, I 1 is a first index split variable, and I 2 is a second index split variable.

12. The non-transitory machine-readable storage medium of claim 7 , wherein instructions for obscuring software code including a data array and a plurality of operations are part of a compiler.

13. A method of controlling a server that provides an application that implements a white-box implementation of a cryptographic function that includes obscured software code including a data array and a plurality of operations, comprising:

receiving a request from a user for the application that implements a white-box implementation of a cryptographic function that includes obscured software code including the data array and a plurality of operations; and

providing the user the application that implements a white-box implementation of a cryptographic function that includes obscured software code including a data array and a plurality of operations, wherein the application was created by:

identifying, by a processor, a data array with an index to be obscured and an operation using the data array;

permutating the identified data array using a permutation function; and

replacing the identified operation using the permutated data array and an equivalent encoded permutation function by obscuring an index by determining an equivalent encoded expression for the index using split variables and replacing the index in the permutation function with the encoded expression for the index,

wherein the split variables are split into two portions,

wherein the split variables are determined using first and second secret splitting multiplicative values and a modulus value, and

wherein the permutation function includes multiplying a split variable index by a secret permutation multiplication value.

14. The method of claim 13 , wherein the permutation function ƒ(i) is:

ƒ( i )=( A π I α I 1 +A π I β I 2 +A π I γ )mod M

where i is an index into the data array, A π , I α , I β , and I γ are secret values, and M is a modulus value based upon the size of the data array, I 1 is a first index split variable, and I 2 is a second index split variable.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 31, 2015
From: HOOGERBRUGGE, JAN; MICHIELS, WIL
To: NXP, B.V.
Reel/Frame 036230/0645 →
Continuity (2)
Continuation In Part 14704083 · May 5, 2015
Related Publication 20160328540A1 · Nov 10, 2016