IP Library Granted Patent US 10,819,502
Granted Patent B2
US 10,819,502 · App. 15/716,372 · Granted Oct 27, 2020

Method for symmetric block encryption or decryption

Inventors: Houssem Maghrebi (Issy-les-Moulineaux, FR); Guillaume Dabosville (Issy-les-Moulineaux, FR); Emmanuel Prouff (Issy-les-Moulineaux, FR)
Assignee: IDEMIA IDENTITY & SECURITY FRANCE
H04L9/0631H04L9/002H04L9/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,819,502
App. No.
15/716,372
Granted
Oct 27, 2020
Kind
B2
Abstract

The present invention relates to a method for symmetrical encryption or decryption of a data block from a secret key (K), the method comprising steps of: permutation ( 100 ) of at least one portion of the secret key (K) by means of a first permutation table (PC 1 ′) so as to produce initial data, execution of several iterations, an iteration comprising steps of: rotation ( 102 ) of data dependent on the initial data so as to produce shifted data, permutation ( 104 ) of the shifted data by means of a second permutation table (PC 2 ′) so as to produce a round key, execution of a plurality of encryption rounds ( 200 ) from the data block, an encryption round ( 200 ) using one of the round keys, generation of at least one of the permutation tables (PC 1 ′, PC 2 ′), the generation comprising determination of at least one function (F, G) variable from one encryption or decryption to another, composition of said function (F, G) with a predetermined permutation table (PC 1, PC 2 ), application of the inverse of said function (F, G) to data dependent on the data produced by the permutation step ( 100, 104 ) using the generated permutation table (PC 1 ′, PC 2 ′).

Claims (57)

1. A method comprising:

in a first run, running a process which encrypts or decrypts a data block from a secret key (K), wherein the process comprises

permuting at least one portion of the secret key by means of a first permutation table so as to produce initial data,

selecting a second permutation table (PC 2 ′), wherein the second permutation table (PC 2 ′) is generated by composing a function (F) with a predetermined permutation table (PC 2 ), wherein the second permutation table (PC 2 ′) differs from said predetermined permutation table (PC 2 ) as a result of said composing the function(F),

executing a plurality of iterations, wherein an iteration comprises:

rotating data dependent on the initial data so as to produce shifted data,

permuting, in a second permutation step, the shifted data by means of the second permutation table so as to produce a round key,

executing a plurality of encryption rounds from the data block, wherein an encryption round uses the round key,

applying an inverse of said function to data dependent on the round key,

in a second run, repeating the process so as to encrypt or decrypt a further data block from the secret key (K), wherein the second permutation table selected in the second run is different from the second permutation table selected in the first run.

2. The method according to claim 1 , wherein the process comprises at least one protective processing modifying a round key into a modified round key before its use in an encryption round, wherein the inverse of the function is applied to the modified round key.

3. The method according to claim 1 , wherein the process comprises generating an expansion table, said generation comprising composing a predetermined expansion table with the function, and wherein an encryption round comprises:

expanding data dependent on the data block by means of the generated expansion table so as to produce expanded data,

calculating an exclusive disjunction of the expanded data and of one of the round keys, wherein an inverse of the function is applied to the result of said calculation of exclusive disjunction.

4. The method according to claim 3 , wherein the process comprises generating at least one substitution table, said generation comprising composing an inverse of the function with a predetermined substitution table, and wherein an encryption round further comprises:

substituting the result of the calculation of exclusive disjunction by means of the generated substitution table.

5. The method according to claim 1 , wherein several permutation tables are generated by means of different functions, and are used during different respective iterations.

6. The method according to claim 1 , wherein:

the second permutation table is bijective,

an iteration following the iteration using the second permutation table comprises:

permuting, by means of an inverse table of the generated permutation table, the round key produced during the iteration so as to produce the data dependent on the initial data to which the rotation is applied,

after the rotation step, carrying out the second permutation step by means of the bijective permutation table so as to produce a new round key.

7. The method according to claim 6 , wherein the second permutation table is configured to permute an input datum into an output datum by

applying an injective permutation table to some bits of the datum so as to produce an intermediate datum whereof the number of bits is less than the number of bits of the input datum,

concatenating the intermediate datum with the other bits of the input datum not used by the injective permutation table so as to produce the output datum.

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

generating at least one shift value indicating a number of bits, the shift value being variable from one encryption or decryption to another,

and wherein at least one iteration further comprises a step of:

rotating the result of the second permutation step by the number of bits indicated by the generated shift value, so as to produce the round key.

9. The method according to claim 8 , wherein several shift values are generated, the values being used during different respective iterations.

10. The method according to claim 9 , wherein the shift values are generated from a same number drawn randomly.

11. The method according to claim 1 , wherein a permutation table used during a permutation step is selected from several different previously-generated permutation tables.

12. The method according to claim 11 , wherein the selection is random.

13. The method according to claim 11 , wherein a permutation table, intended to be used during an iteration is selected as a function of a shift value used during the rotation step of the iteration, wherein the shift value is particular to the iteration.

14. The method according to claim 1 , wherein the function includes a plurality of sub-functions composed with different portions of the predetermined permutation table.

15. A non-transitory computer program product comprising program code instructions which, when executed by at least one processor perform a method for symmetrical encryption or decryption of a data block from a secret key, comprising:

in a first run, running a process which encrypts or decrypts a data block from a secret key (K), wherein the process comprises:

permuting at least one portion of the secret key (K) by means of a first permutation table (PC 1 ′) so as to produce initial data,

selecting a second permutation table (PC 2 ′), wherein the second permutation table (PC 2 ′) is generated by composing a function (F) with the predetermined permutation table (PC 2 ), wherein the second permutation table (PC 2 ′) differs from said predetermined permutation table (PC 2 ) as a result of said composing the function (F),

executing a plurality of iterations, wherein an iteration comprises:

rotating ( 102 ) data dependent on the initial data so as to produce shifted data,

permuting, in a second permutation step ( 104 ), the shifted data by means of the second permutation table (PC 2 ′) so as to produce a round key, wherein the second permutation table is generated by composing a function (F) with the predetermined permutation table (PC 2 ),

executing a plurality of encryption rounds ( 200 ) from the data block, wherein an encryption round ( 200 ) uses the round key,

applying an inverse of said function (F) to data dependent on the round key,

in a second run, repeating the process so as to encrypt or decrypt a further data block from the secret key (K), wherein the second permutation table selected in the second run is different from the second permutation table selected in the first run.

16. A device comprising:

at least one memory for storing a predetermined permutation table, at least one processor configured to execute a method,

wherein the method comprises:

in a first run, running a process which encrypts or decrypts a data block from a secret key (K), wherein the process comprises:

permuting at least one portion of the secret key (K) by means of a first permutation table (PC 1 ′) so as to produce initial data,

selecting a second permutation table (PC 2 ′), wherein the second permutation table (PC 2 ′) is generated by composing a function (F) with the predetermined permutation table (PC 2 ), wherein the second permutation table (PC 2 ′) differs from said predetermined permutation table (PC 2 ) as a result of said composing the function (F),

executing a plurality of iterations, wherein an iteration comprises:

rotating ( 102 ) data dependent on the initial data so as to produce shifted data,

permuting, in a second permutation step ( 104 ), the shifted data by means of the second permutation table (PC 2 ′) so as to produce a round key, wherein the second permutation table is generated by composing a function (F) with the predetermined permutation table (PC 2 ),

executing a plurality of encryption rounds ( 200 ) from the data block, wherein an encryption round ( 200 ) uses the round key,

applying an inverse of said function (F) to data dependent on the round key,

in a second run, repeating the process so as to encrypt or decrypt a further data block from the secret key (K), wherein the second permutation table selected in the second run is different from the second permutation table selected in the first run.

Assignments (12)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 26, 2025
From: IDEMIA IDENTITY & SECURITY FRANCE
To: IDEMIA FRANCE
Reel/Frame 070632/0157 →
CHANGE OF NAME Recorded Jul 3, 2024
From: SAFRAN IDENTITY & SECURITY
To: IDEMIA IDENTITY & SECURITY FRANCE
Reel/Frame 068119/0270 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ERRONEOUSLY NAMED PROPERTIES 14/366,087 AND 15/001,534 PREVIOUSLY RECORDED ON REEL 048039 FRAME 0605. ASSIGNOR(S) HEREBY CONFIRMS THE CHANGE OF NAME. Recorded Jan 17, 2024
From: MORPHO
To: SAFRAN IDENTITY & SECURITY
Reel/Frame 066343/0143 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ERRONEOUSLY NAMED PROPERTIES 14/366,087 AND 15/001,534 PREVIOUSLY RECORDED ON REEL 047529 FRAME 0948. ASSIGNOR(S) HEREBY CONFIRMS THE CHANGE OF NAME. Recorded Jan 17, 2024
From: SAFRAN IDENTITY & SECURITY
To: IDEMIA IDENTITY & SECURITY
Reel/Frame 066343/0232 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE ERRONEOUSLY NAME PROPERTIES/APPLICATION NUMBERS PREVIOUSLY RECORDED AT REEL: 055108 FRAME: 0009. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jan 17, 2024
From: SAFRAN IDENTITY & SECURITY
To: IDEMIA IDENTITY & SECURITY FRANCE
Reel/Frame 066365/0151 →
CORRECTIVE ASSIGNMENT TO CORRECT THE THE REMOVE PROPERTY NUMBER 15001534 PREVIOUSLY RECORDED AT REEL: 055314 FRAME: 0930. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jan 17, 2024
From: SAFRAN IDENTITY & SECURITY
To: IDEMIA IDENTITY & SECURITY FRANCE
Reel/Frame 066629/0638 →
CORRECTIVE ASSIGNMENT TO CORRECT THE APPLICATION NUMBER PREVIOUSLY RECORDED AT REEL: 055108 FRAME: 0009. ASSIGNOR(S) HEREBY CONFIRMS THE CHANGE OF NAME. Recorded Feb 17, 2021
From: SAFRAN IDENTITY AND SECURITY
To: IDEMIA IDENTITY & SECURITY FRANCE
Reel/Frame 055314/0930 →
CORRECTIVE ASSIGNMENT TO CORRECT THE THE RECEIVING PARTY DATA PREVIOUSLY RECORDED ON REEL 047529 FRAME 0948. ASSIGNOR(S) HEREBY CONFIRMS THE CHANGE OF NAME. Recorded Oct 29, 2020
From: SAFRAN IDENTITY AND SECURITY
To: IDEMIA IDENTITY & SECURITY FRANCE
Reel/Frame 055108/0009 →
CORRECTIVE ASSIGNMENT TO CORRECT THE CORRECT THE ASSIGNEE NAME PREVIOUSLY RECORDED AT REEL: 047529 FRAME: 0949. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded May 1, 2020
From: SAFRAN IDENTITY & SECURITY
To: IDEMIA IDENTITY & SECURITY FRANCE
Reel/Frame 052551/0082 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 10, 2019
From: MAGHREBI, HOUSSEM; DABOSVILLE, GUILLAUME; PROUFF, EMMANUEL
To: SAFRAN IDENTITY & SECURITY
Reel/Frame 049143/0266 →
CHANGE OF NAME Recorded Jan 9, 2019
From: MORPHO
To: SAFRAN IDENTITY & SECURITY
Reel/Frame 048039/0605 →
CHANGE OF NAME Recorded Aug 30, 2018
From: SAFRAN IDENTITY & SECURITY
To: IDEMIA IDENTITY & SECURITY
Reel/Frame 047529/0948 →