# US 12,413,387 B2 · Method for securing an AES block cipher algorithm against high-order side-channel attacks

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,413,387 B2
- Document ID: US12413387B2
- Status: Granted
- Kind: B2
- Application number: 18/265,980
- Filed: 2021-12-14
- Published: 2024-01-25
- Granted: 2025-09-09
- Earliest claimed: 2020-12-14
- Assignees: Thales Dis France SAS
- Applicants: Thales Dis France SAS
- Inventors: Mylène Roussellet; David Vigilant; Olivier Adjonyo Koffi Benit
- Web page: https://patentgrep.com/patent/US12413387B2

## CPC

- H04L 9/0631: {Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms}
- H04L 9/003: {for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]}
- H04L 2209/043: of tables, e.g. lookup, substitution or mapping
- H04L 2209/08: Randomization, e.g. dummy operations or using noise
- H04L 2209/46: Secure multiparty computation, e.g. millionaire problem
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Provided is a method for securing against high-order side-channel attacks wherein a substep of field inversion is performed by a cryptographic device. The method includes computing (S1) a Dirac output value, adding (S2) said Dirac output value to one of said shares of the first set of shares to obtain a second set of shares, performing a conversion of the second set of shares (S3) from said (n+1) additive sharing to a (n+1)-multiplicative sharing, performing an inversion of each share of the (n+1)-multiplicative sharing (S4), performing a conversion of the inverted shares (S5) from said multiplicative sharing to a (n+1)-additive sharing to obtain a third set of shares, and adding (S6) said Dirac output value to one of said shares of the third set of shares. Other embodiments disclosed.

## Claims

### Claim 1

A method for securing against high-order side-channel attacks an execution of a SubBytes step of a block cipher algorithm based on Advanced Encryption Standard and operating on an internal state x split into a first set of (n+1) shares (x0, x1, x2 . . . xn) by a (n+1)-additive sharing, with n a non-zero integer,
said SubBytes step comprising: a substep of affine transformation in GF(28) on the state x and a substep of a field inversion in GF(256)*,
wherein said substep of field inversion is performed by a cryptographic device (101) and comprises:
computing (S1) a Dirac output value by executing at least one Dirac function on a plurality of shares xi of the internal state x, with i an integer in [0,n], said Dirac function being a function defined in GF(256) such that said Dirac output value is equal to 1 when x equals 0 and is equal to 0 otherwise;
adding (S2) said Dirac output value to one of said shares of the first set of shares to obtain a second set of shares;
performing a conversion of the second set of shares (S3) from said (n+1) additive sharing to a (n+1)-multiplicative sharing;
performing an inversion of each share of the (n+1)-multiplicative sharing (S4);
performing a conversion of the inverted shares (S5) from said multiplicative sharing to a (n+1)-additive sharing to obtain a third set of shares; and
adding (S6) said Dirac output value to one of said shares of the third set of shares
and wherein the step of computing the Dirac output value (S1) comprises:
replacing one of the shares xi by its binary complementary ˜xi with i an integer in {0, 1, . . . n} and ˜ the Boolean negation operation; and
performing a XOR between (n+1) binary values, each of said binary values being computed by performing a Boolean conjunction AND operation & between a plurality of bits of said shares having different indexes in said shares, with XOR the Boolean exclusive disjunction operation.

### Claim 2 (depends on 1)

The method of claim 1, comprising previously computing and storing in a Non-Volatile Memory the at least one Dirac function implemented as at least one precomputed table, and wherein the step of computing the Dirac output value comprises performing a lookup in said at least one precomputed table implementing said at least one Dirac function.

### Claim 3 (depends on 1)

The method of claim 1, wherein computing the Dirac output value (S1) comprises computing Delta_0(x)=XOR(xA0 & xB1 & xC2 & xD3 & xE4 & xF5 & xG6 & XH7), for all possible combinations of A, B, C, D, E, F, G, H in {0, 1, . . . n} with & the Boolean conjunction AND operation.

### Claim 4 (depends on 3)

The method of claim 3, comprising previously: computing and storing in a Non Volatile Memory for each Dirac function (Delta_0_i) to be executed, two binary complemented versions (Mio′, Mir′) of the precomputed table implementing said Dirac function (Delta_0_i), said binary complemented versions of the precomputed table being said precomputed table masked with either 0 or 1; and, wherein executing a Dirac function on the shares of the internal state x comprises performing a lookup in one of said two binary complemented versions of the precomputed table implementing said function depending on a random mask bit.

### Claim 5 (depends on 1)

The method of claim 1, wherein computing the Dirac output value (S1) comprises: executing a first Dirac function Delta_0_0 on the shares of the internal state x such that: Delta_0_0(x)=XOR(xA0 & xB1 & xC2 & xD3), for all possible combinations of A, B, C, D in {0, 1, . . . , n}; executing a second Dirac function Delta_0_1 on the shares of the internal state x such that: Delta_0_1(x)=XOR(xA4 & xB5 & xC6 & xD7), for all possible combinations of A, B, C, D in {0, 1, . . . , n}; and performing a Boolean conjunction AND operation & between the results of the execution of the first Dirac function and of the second Dirac function Delta_0_0(x) & Delta_0_1(x).

### Claim 6 (depends on 1)

The method of claim 1, wherein computing the Dirac output value (S1) comprises: executing a first Dirac function Delta_0_00 on the shares of the internal state x such that: Delta_0_00(x)=XOR (xA0 & xB1), for all possible combinations of A, B in {0, 1, . . . , n}; executing a second Dirac function Delta_0_01 on the shares of the internal state x such that: Delta_0_1(x)=XOR (xC2 & xD3), for all possible combinations of A, B, C, D in {0, 1, . . . , n}; executing a third Dirac function Delta_0′_10 on the shares of the internal state x such that: Delta_0_10(x)=XOR (xA4 & xB5), for all possible combinations of A, B in {0, 1, . . . , n}; executing a fourth Dirac function Delta_0_11 on the shares of the internal state x such that: Delta_0_11(x)=XOR (xC6 & xD7), for all possible combinations of C, D in {0, 1, . . . , n}; and performing a Boolean conjunction AND operation & between the results of the execution of the first Dirac function, of the second Dirac function, of the third Dirac function and of the fourth Dirac function: Delta_0(x)=Delta_0_00(x) & Delta_0_01(x) & Delta_0_10(x) & Delta_0_11(x).
