[close]
 

United States Patent

Patent No.:

9,734,065

Date of Patent:

Sep. 15, 2017


Title
Method of managing consistency of caches
Abstract
The present invention relates to a method of transmitting a message comprising an integrity check and a header, between two processing units via a shared memory, comprising steps of: --generation (501), by a first processing unit, of a first pseudorandom binary string; --encryption (502) of the message to be transmitted by applying an involutive transformation dependent on the first pseudorandom binary string generated; --transmission and storage (503) of the encrypted message in the shared memory; --generation (504), by the second processing unit, of a second pseudorandom binary string; --decryption of the message stored by applying an involutive transformation dependent on the second pseudorandom binary string, and by decrypting the header (505) of said message, by verifying the decrypted header (505), and as a function of the result of the verification, by decrypting the complete message (506); --verification (507) of the integrity of the decrypted message on the basis of its integrity check.
Claims

The invention claimed is:

1. A method of transmitting a message between a first processing unit and a second processing unit via a memory shared by both processing units, each of said processing units being linked to a separate cache memory the message to be transmitted comprising an integrity check and a predetermined header, each processing unit comprising a generator of pseudorandom binary strings and a cryptographic module; the generators of the first and second processing units being initialised with one same seed and synchronised with one another; said method comprising the following steps: generation, by the pseudorandom binary string generator of the first processing unit, of a first pseudorandom binary string; encryption of the message to be transmitted by the cryptographic module of the first processing unit by applying to the message to be transmitted an involutive transformation dependent on the generated first pseudorandom binary string; transmission and storage of the encrypted message by the first processing unit in the shared memory generation, by the pseudorandom binary string generator of the second processing unit, of a second pseudorandom binary string; said first and second binary strings being identical; decryption of the message stored in the shared memory by the cryptographic module of the second processing unit, by applying to the stored message an involutive transformation dependent on the second pseudorandom binary string, the decryption of the message comprising decryption of the header of said message, verification of the decrypted header and, as a function of the result of header verification, decryption of the complete message; the involutive transformations dependent on the first and second pseudorandom binary strings being identical; verification by the second processing unit of the integrity of the decrypted message on the basis of an integrity check of the decrypted message, so that the second processing unit seeking to read said message to be transmitted for updating of its cache memory is able to verify that it has read this message in the shared memory.

2. The method according to claim 1, wherein the involutive transformation dependent on a binary string is an exclusive OR operation (XOR) applied between said binary string and the message to be encrypted or decrypted.

3. The method according to claim 1, wherein the verification of the header comprises a step to compare the header with a predetermined header.

4. The method according to claim 1, wherein the integrity check is an error detection code.

5. The method according to claim 4, wherein the error detection code is a cyclic redundancy check (CRC) or checksum.

6. The method according to claim 1, wherein the shared memory is a circular buffer memory.

7. The method according to claim 1, wherein the pseudorandom binary string generators have a longer period than the bit size of the shared memory.

8. A computer programme product comprising code instructions to implement a method according to claim 1 when this programme is executed by a processor.

9. A system comprising: at least one first processing unit configured to access a memory shared with a second processing unit, and configured to be linked to a first cache memory, said first processing unit comprising: a generator of pseudorandom binary strings to generate a first pseudorandom binary string; a cryptographic module to encrypt a message to be transmitted to the second processing unit by applying to the message to be transmitted an involutive transformation dependent on the generated first pseudorandom binary string; said message to be transmitted comprising an integrity check and a predetermined header, means to transmit and store the encrypted message in the shared memory and at least one second processing unit configured to access said memory shared with said first processing unit, and configured to be linked to a second cache memory separate from said first cache memory, said second processing unit comprising: a generator of pseudorandom binary strings to generate a second pseudorandom binary string; the generators of said first processing unit and said second processing unit being initialised with one same seed and synchronised with one another, and said first and second binary strings being identical; a cryptographic module to decrypt the encrypted message stored in the shared memory by applying to the encrypted stored message an involutive transformation dependent on the second pseudorandom binary string, the decryption of the message comprising decryption of the header of said message, verification of the decrypted header and, as a function of the result of header verification, decryption of the complete message; the involutive transformations dependent on the first and second pseudorandom binary strings being identical; means to verify the integrity of the decrypted message on the basis of the integrity check of the decrypted message, so that the second processing unit seeking to read said message to be transmitted for updating of the second cache memory is able to verify that it has read this message in the shared memory.