IP Library Granted Patent US 9,977,899
Granted Patent B2
US 9,977,899 · App. 14/397,330 · Granted May 22, 2018

Cyclic redundancy check method with protection from side-channel attacks

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 9,977,899
App. No.
14/397,330
Granted
May 22, 2018
Kind
B2
Abstract

In an aspect, a method can include generating a cyclic redundancy check code for a binary data item, using a generator polynomial; and masking, using polynomial addition, the binary data item with a binary mask. The method can also include at least one of: storing, by a microcircuit, the masked binary data item in a memory of an electronic device; or transferring, by the microcircuit, the masked data item to another device. The cyclic redundancy check code for the binary data item can be generated from the masked binary data item to prevent discovery of the binary data item by a side-channel attack during the generating the cyclic redundancy check. The binary mask can be a multiple of a random number and the generator polynomial, such that respective cyclic redundancy check code of the masked data item and the binary data item have a same result.

Claims (52)

1. A method for processing a binary data item in an electronic device, the method comprising:

receiving the binary data item by a microcircuit of the electronic device;

generating, at the microcircuit, a cyclic redundancy check code for the binary data item using a generator polynomial;

masking, at the microcircuit using polynomial addition, the binary data item with a binary mask; and

at least one of:

storing, by the microcircuit, the masked binary data item in a memory of the electronic device; or

transferring, by the microcircuit; the masked binary data item to another device, wherein:

the cyclic redundancy check code for the binary data item is generated from the masked binary data item to prevent discovery of the binary data item by a side-channel attack during the generating the cyclic redundancy check, and

the binary mask is a multiple of a random number and the generator polynomial, such that the cyclic redundancy check code of the masked binary data item is the same result as the cyclic redundancy check code of the binary data item.

2. The method according to claim 1 , further comprising: splitting the binary data item into at least two portions;

masking a first portion of the binary data item with a first binary mask that is a multiple of the generator polynomial and a first random number;

generating a first cyclic redundancy check code for the first masked portion;

concatenating the first cyclic redundancy check code with a next portion of the binary data item to form an intermediate binary data item;

masking the intermediate binary data item with a second binary mask that is a multiple of the generator polynomial and a second random number; and

generating a second cyclic redundancy check code for the masked intermediate binary data item.

3. The method according to claim 1 , further comprising generating the binary mask, the generating the binary mask including:

generating the random number; and

multiplying the random number by the generator polynomial.

4. The method according to claim 1 , wherein the binary data item includes N bits, the generator polynomial includes P bits, and the random number includes at least N−P bits.

5. The method according to claim 1 , further comprising generating the binary mask, the generating the binary mask including:

generating a plurality of random numbers;

multiplying each of the plurality of random numbers by the generator polynomial to obtain a plurality of respective mask portions; and

concatenating the plurality of respective mask portions.

6. The method according to claim 5 , wherein the binary data item includes N bits, the generator polynomial includes P bits, and each of the plurality of random numbers includes a number of bits equal to (N−nP)/n, n being a number of random numbers included in the plurality of random numbers.

7. The method according to claim 1 , wherein the binary data item includes a binary data item that is masked with a storage or transfer mask, the storage or transfer mask being a random binary mask, the method further comprising, prior to calculating the cyclic redundancy check code for the binary data item using the generator polynomial:

receiving, with the binary data item masked with the storage or transfer mask, a cyclic redundancy check code for the binary data item masked with the storage or transfer mask;

removing the storage or transfer mask from the binary data item masked with the storage or transfer mask to obtain the binary data item; and

after generating the cyclic redundancy check code for the binary data item using the generator polynomial, comparing the cyclic redundancy check code for the binary data item masked with the storage or transfer mask and the cyclic redundancy check code for the binary data item generated using the generator polynomial.

8. The method according to claim 1 , wherein the binary data item includes a binary data item that is masked with a storage or transfer mask, the storage or transfer mask being a random binary mask, the method further comprising:

prior to calculating the cyclic redundancy check code for the binary data item using the generator polynomial, receiving, with the binary data item that is masked with the storage or transfer mask, a cyclic redundancy check code for the binary data item that is masked with the storage or transfer mask;

after masking, using polynomial addition, the binary data item that is masked with the storage or transfer mask with the binary mask that is a multiple of the generator polynomial and a random number, and before generating, with the generator polynomial, the cyclic redundancy check code for the binary data item from the binary data item that is masked with the binary mask that is a multiple of the generator polynomial and a random number, removing the storage or transfer mask from the binary data item that is masked with both the storage or transfer mask and the binary mask that is a multiple of the generator polynomial and a random number; and

comparing the cyclic redundancy check code for the binary data item from the binary data item that is masked with the binary mask that is a multiple of the generator polynomial and a random number and the cyclic redundancy check code for the binary data item that is masked with the storage or transfer mask.

9. The method according to claim 1 , wherein the cyclic redundancy check code for the binary data item that is generated from the masked binary data item is a first cyclic redundancy check code, and the binary data item includes a binary data item that is masked with a storage or transfer mask, the storage or transfer mask being a random binary mask, the method further comprising:

prior to calculating the cyclic redundancy check code for the binary data item using the generator polynomial, receiving, with the binary data item that is masked with the storage or transfer mask, a second cyclic redundancy check code, the second cyclic redundancy check code being a cyclic redundancy check code for the binary data item that is masked with the storage or transfer mask; and

comparing the first cyclic redundancy check code and the second cyclic redundancy check code.

10. An electronic device for processing a binary data item, wherein the electronic device is configured to implement the method according to claim 1 .

11. A method for storing or transferring a binary data item, comprising:

receiving the binary data item by a microcircuit;

masking, at the microcircuit using polynomial addition, the binary data item with a binary mask that is a random multiple of a generator polynomial for generating a cyclic redundancy check code;

generating, from the masked binary data item using the generator polynomial, the cyclic redundancy check code,

wherein:

the generating the cyclic redundancy check from the masked binary data item prevents discovery of the binary data item by a side-channel attack during the generating the cyclic redundancy check, and

the cyclic redundancy check code of the masked binary data item is the same result as a cyclic redundancy check code of the binary data item; and

at least one of storing in, or transferring to an electronic device, the masked binary data item and the cyclic redundancy check code to decode the masked binary data item.

12. The method according to claim 11 , further comprising generating the binary mask by:

generating the random number; and

multiplying the random number by the generator polynomial.

13. The method according to claim 11 , further comprising generating the binary mask by:

generating a plurality of random numbers;

multiplying each of the plurality of random numbers by the generator polynomial to obtain a plurality of respective mask portions; and

concatenating the plurality of respective mask portions.

14. An electronic device comprising a circuit configured to store or transfer a binary data item in accordance with the method according to claim 11 .

Assignments (7)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 3, 2020
From: RAMBUS INC.
To: CRYPTOGRAPHY RESEARCH, INC.
Reel/Frame 054539/0109 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 12, 2019
From: VERIMATRIX
To: RAMBUS INC.
Reel/Frame 051262/0413 →
PARTIAL RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL Recorded Nov 21, 2019
From: GLAS SAS, AS AGENT
To: INSIDE SECURE
Reel/Frame 051076/0306 →
CHANGE OF ADDRESS Recorded Oct 16, 2019
From: VERIMATRIX
To: VERIMATRIX
Reel/Frame 050733/0003 →
CHANGE OF NAME Recorded Oct 7, 2019
From: INSIDE SECURE
To: VERIMATRIX
Reel/Frame 050647/0428 →
SECURITY INTEREST Recorded Feb 27, 2019
From: INSIDE SECURE
To: GLAS SAS, AS SECURITY AGENT
Reel/Frame 048449/0887 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 19, 2014
From: ROUSSELLET, MYLÉNE; VERNEUIL, VINCENT
To: INSIDE SECURE
Reel/Frame 034558/0407 →