BLOCK CRYPTOGRAPHIC METHOD FOR ENCRYPTING/DECRYPTING MESSAGES AND CRYPTOGRAPHIC DEVICES FOR IMPLEMENTING THIS METHOD
20230041383 · 2023-02-09
Inventors
Cpc classification
Y04S40/20
GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
H04L9/3242
ELECTRICITY
H04L9/0637
ELECTRICITY
H04L9/0631
ELECTRICITY
International classification
H04L9/06
ELECTRICITY
H04L9/32
ELECTRICITY
Abstract
A block cipher method and apparatus using round repetition for providing, from a plaintext message (10), a cipher-text message (50) and a global tag (52) is disclosed. The plaintext message is converted into a plurality of ordered plaintext blocks (11) which are successively processed during a round for computing:—a cryptogram (30) by encrypting input data (20) using a single cryptographic key, said cryptogram comprising a first segment (31) and a second segment (32)—a ciphertext block (51) by performing a first operation (41) using, as operands: said first segment (31) said current plaintext block (11) and said second segment (32). At each next round said input data is newly determined based on the current ciphertext block and an updated reproducible data. The ciphertext message is determined by concatenating the ciphertext blocks and the global tag by a second operation (42) using computed authentication local tags as operands.
Claims
1. A block cipher method using round repetition for providing, from a plaintext message, a ciphertext message, wherein a plaintext message being converted into plaintext blocks having a predefined bit length, each of the plaintext blocks being successively processed in a predefined order as a current plaintext block during a round, said method comprising the following actions: loading a first data into a register, running said round by performing the following steps: (1) inputting input data into a block cipher algorithm, said input data comprising data of said register and a reproducible data, (2) computing, within said block cipher algorithm, a cryptogram by encrypting the input data using a single cryptographic key, said cryptogram comprising a first segment and a second segment, (3) computing a ciphertext block by performing a first operation using, as operands, said first segment, said second segment and said current plaintext block, wherein the first operation comprises a first sub-operation and a second sub-operation, the first sub-operation uses two of the operands as inputs and the second sub-operation uses the other operand and the result of the first sub-operation as inputs, and the ciphertext block is the result of the second sub-operation; as long as not all said plaintext blocks have been processed, reloading the register with said ciphertext block and applying an updating function to said reproducible data before running a new round by starting at step (1), determining said ciphertext message by concatenating the ciphertext blocks of all the rounds in said orderly manner, then reloading the register with the last computed ciphertext block and applying said updating function to said reproducible data before performing only the first two steps of said round.
2. The block cipher method of claim 1, further comprising a preliminary step for restoring a common bit length between the first data of said register and said reproducible data whether the first data and said reproducible data do not have the same bit length, said preliminary step being undertaken before inputting said input data into the block cipher algorithm.
3. The block cipher method of claim 1, wherein said first data is an initialization vector.
4. The block cipher method of claim 1, wherein said first data is the result of an initial operation using a plaintext associated data as an operand.
5. The block cipher method of claim 1, wherein said initial operation and said first and second operations are logical exclusive OR operations.
6. The block cipher method of claim 1, further comprising a step for padding an end plaintext block with at least one default bit in the case where the plaintext message has a bit number which is not a multiple of the bit number of said plaintext blocks.
7. A block decipherment method using round repetition for providing, from a ciphertext message, a plaintext message, said ciphertext message being converted into a plurality of ordered ciphertext blocks having a same bit length, each of said ciphertext blocks being successively processed in an a predefined order as a current ciphertext block during a round, said method comprising the following actions: loading a first data into a register, running said round by performing the following steps: (1) inputting input data into a block decipherment algorithm, said input data comprising data of said register and a reproducible data, (2) computing, within said block decipherment algorithm, a first output by decrypting the input data using a single cryptographic key, said first output comprising a first segment and a second segment (3) computing a plaintext block by performing a first operation using, as operands, said first segment and said current ciphertext block, wherein the first operation comprises a first sub-operation and a second sub-operation, the first sub-operation uses two of the operands as inputs and the second sub-operation uses the other operand and the result of the first sub-operation as inputs, and the ciphertext block is the result of the second sub-operation; as long as not all said ciphertext blocks have been processed, reloading the register with said current ciphertext block and applying an updating function to said reproducible data before running a new round by starting at step (1), determining said plaintext message by concatenating the plaintext blocks of all of the rounds in said predefined order, reloading the register with the current ciphertext block and applying said updating function to said reproducible data before performing only steps (1) and (2) of said round, and.
8. The block decipherment method of claim 7, further comprising a preliminary step for restoring a common bit length between first data of said register and said reproducible data whether said first data and said reproducible data do not have the same bit length, said preliminary step being undertaken before inputting said input data into the block cipher algorithm.
9. The block decipherment method of claim 7, wherein said first data is an initialization vector.
10. The block decipherment method of claim 7, wherein said first data is the result of an initial operation using a plaintext associated data as an operand.
11. The block decipherment method of any of claim 7, wherein said initial operation and said first and second operations are logical exclusive OR operations.
12. The block decipherment method of claim 7, wherein said ciphertext message is further provided with an authentication data and said method further comprises a step for checking whether said authentication data is identical to said global tag, if not, the ciphertext message is declared as not authentic.
13. A cryptographic device for implementing a block cipher method using round repetition for providing, from a plaintext message, a ciphertext message, comprising: a register for receiving a first data, an updater for updating a reproducible data according to an updating function, an interface for receiving at least said plaintext message, a converting unit for converting and storing said plaintext message into a plurality of ordered plaintext blocks having a same bit length, a processing unit for successively processing each of said plaintext blocks in a predefined order as a current plaintext block during a round, said processing unit further comprising a ciphering unit, hosting a block cipher algorithm, and a memory storing a cryptographic key, the processing unit being configured to perform the following steps during each round: (1) input data into the block cipher algorithm, said input data comprising data of said register and a reproducible data, (2) compute, within said block cipher algorithm, a cryptogram by encrypting the input data using said single cryptographic key, said cryptogram comprising a first segment and a second segment, (3) compute and store in said memory a ciphertext block by performing a first operation using, as operands, said first segment and said current plaintext block, wherein the first operation comprises a first sub-operation and a second sub-operation, the first sub-operation uses two of the operands as inputs and the second sub-operation uses the other operand and the result of the first sub-operation as inputs, and the ciphertext block is the result of the second sub-operation, said processing unit being further configured to reload the register with said ciphertext block and to update the reproducible data before running a new round starting with (1), as long as not all said plaintext blocks have been processed in a round, said converting unit being further configured to determine said ciphertext message by concatenating the ciphertext blocks of all the rounds in said predefined order, and said processing unit being further configured to reload the register with the last computed ciphertext block and to apply the updating function to said reproducible data in order to update it before performing only steps (1) and (2) of said round, said interface being further configured to output said ciphertext message, wherein the cryptographic device is a computer device, wherein the register is a memory of the computer device, wherein the updater is a computer implemented function, wherein the first interface is a computer interface, wherein the converting unit is a computer implemented data converter, and wherein the processing unit is a CPU of the computer device.
14. A cryptographic device for implementing a block decipherment method using round repetition for providing, from a ciphertext message, a plaintext message, comprising: a register for receiving a first data, an updater for updating a reproducible data according to an updating function, an interface for receiving at least said ciphertext message, a converting unit for converting and storing said ciphertext message into a plurality of ordered ciphertext blocks having a same bit length, a processing unit for successively processing each of said ciphertext blocks in a predefined order as a current ciphertext block during a round, said processing unit further comprising a deciphering unit, hosting a block decipherment algorithm, and a memory comprising a single cryptographic key, the processing unit being configured to perform the following steps during each round: (1) input data into the block decipherment algorithm, said input data comprising data of said register and a reproducible data, (2) compute, within said block decipherment algorithm, a first output by processing the input data using said single cryptographic key, said first output comprising a first segment and a second segment, (3) compute and store in said memory a plaintext block by performing a first operation using, as operands, said first segment and said current ciphertext block, wherein the first operation comprises a first sub-operation and a second sub-operation, the first sub-operation uses two of the operands as inputs and the second sub-operation uses the other operand and the result of the first sub-operation as inputs, and the ciphertext block is the result of the second sub-operation, said processing unit being further configured to reload the register with said current ciphertext block and to update the reproducible data before running a new round by starting with step (1), as long as not all said ciphertext blocks have been processed in a round, said converting unit being further configured to determine said plaintext message by concatenating the plaintext blocks of all the rounds in said predefined order, and said processing unit being further configured to reload the register with the current ciphertext block and to apply the updating function to said reproducible data in order to update it before performing only steps (1) and (2) of said round, said interface being further configured to output said plaintext message, wherein the cryptographic device is a computer device, wherein the register is a memory of the computer device, wherein the updater is a computer implemented function, wherein the interface is a computer interface, wherein the converting unit is a computer implemented data converter, and wherein the processing unit is a CPU of the computer device.
15. The cryptographic device of claim 14, wherein said processing unit is further configured to check whether said global tag is identical to an authentication data provided together with the ciphertext message, and, if not, to undertake an appropriate action.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0024] The present invention will be better understood thanks to the attached figures in which:
[0025]
[0026]
[0027]
[0028]
[0029]
DETAILED DESCRIPTION
[0030] Referring to
[0031] According to a preferred embodiment, the aforementioned input data 20 comprises a first data 21, for instance an initialization vector (IV), and a reproducible data 22 that can be initialized (reset) to any default value. This reproducible data is preferably a counter data (CDt), namely a data such as a value provided by a counter. However, as there is no requirement to limit such data to data provided by a counter in the strict sense, it is referred to the so-called reproducible data. The word “reproducible” excludes any random data unless they have been predefined before to be used. Therefore, it should be understood that the aforementioned reproducible data refers to any data such as a value that can be reproduced thanks to a reproducible process or function which can be regarded as an updating function or a renewal function. For example, such a process or function may relate to a hash function or to an incrementing or decrementing function applied to an initial value. It may also refer to a predefined list or series of random or pseudo-random numbers successively taken, in a certain order, as reproducible data. Preferably, all of these numbers will be different in order to avoid any repetition. In the present description, the expression “counter data” is used according to a preferred embodiment, namely as non-limiting example. The complementary data 52 relates to a tag, in particular to a global tag (TG) which is determined from a plurality of local tags, as further explained hereafter. The global tag 52 is used as an authentication data for authenticating the ciphertext message 50 at the end of the process.
[0032] As shown in
[0033] The plaintext blocks 11 have to be processed in a specific order, so that the same order can be applied during the reverse process aiming to decrypt the ciphertext message. Accordingly, the plaintext blocks 11 are arranged in an orderly manner. Alternatively, each block is assigned with an identifiable position in order to determine such a specific order. Thanks to the order of these blocks, it will be possible to rebuild the plaintext message 10 from the ciphertext message 50. Preferably, when the plaintext message 10 is divided into blocks 11, the latter are not mixed together, but the order in which they have been divided is kept. Keeping such an order can be achieved, e.g. by storing in a record both the content of the block and is position within the message 10. In a variant, an index could be associated to the content of each block, so as it can be possible to retrieve the appropriate position of any block m.sub.1, m.sub.2, m.sub.3, . . . m.sub.i thanks to its index 1, 2, 3, . . . i.
[0034] Then, each of these plaintext blocks 11 is successively processed, as a so-called current plaintext block, in such an orderly manner during a round R of the method. At the end of each round, a ciphertext block 51 is obtained in correspondence of the current plaintext block 11. For instance, the plaintext block m.sub.1 shown in
[0035] Each round also provides a tag, in particular a local tag 32 in correspondence with the related ciphertext block 51 output by the same round. The set of iterations which allow to compute the ciphertext blocks 51 constitutes a first pass of the method. In one embodiment, the second pass aims to determine the global tag 52 by using all local tags 32 which have been computed.
[0036] The ciphertext message 50 is obtained by combining all the ciphertext blocks 51 together, in particular by concatenating them so as to form a chain in accordance with the aforementioned orderly manner, so as to keep respective positions between the blocks 11 within the plaintext message 10 and the correspondent blocks 51 within the ciphertext message 50. Given that the associated data 15 can typically be the header of the message 10, therefore it remains unencrypted and it is merely appended to the ciphertext message 50. At the end of the process, the ciphertext message 50, its associated data 15 (if any) and the global tag 52 form together three united related entities.
[0037] A preferred method implementing the present invention will be now explained in more details thanks to
[0038] The first action is to load a first data 21 into a register 23. Preferably and as shown in the embodiment depicted in
[0039] The first step of the round is used for inputting input data 20 into a block cipher algorithm (E) 35. This algorithm is a generic block encryption scheme that can refer to DES, IDEA, AES, or to any other block cipher algorithm. Input data 20 comprises data loaded into the register 23, namely the first data 21 and a counter data (CDt.sub.i) 22. Counter data 22 refers to a value provided by a counter (CTR) 25. This counter can be regarded as an updater (i.e. a unit for updating) since it is updated, namely incremented (or decremented), each time a new iteration IT.sub.n is undertaken. Accordingly, each round starts with a new counter data (CDt.sub.1, CDt.sub.2, . . . CDt.sub.i, CDt.sub.i+1). The counter data is thus used as a so-called “nonce”, namely as a “number used once”. Indeed, each value provided by the counter is unique across all the processed blocks 11.
[0040] During the second step of the round a cryptogram 30 is computed then output from the block cipher algorithm 35 by encrypting the input data 20 using a single cryptographic key (K) 34. This cryptogram 30 comprises a first segment (51) 31 and a second segment 32. The latter is defined as being an authentication tag (T.sub.n), in particular as being the local tag that authenticates the first segment 31. Preferably, the local tag 32 is stored in a memory, either until the global tag 52 has been calculated, or at least temporarily until an intermediate calculation is performed with the next local tag 32 of the next round, in the case where the global tag is determined progressively during each iteration.
[0041] The third step of the round is devoted to compute the ciphertext block 51 of the current plaintext block 11. To this end, the ciphertext block 51 is determined by performing a first operation 41 using as operands: the first segment 31, the current plaintext block 11 and the local tag 32. Therefore, the ciphertext block 51 is the result of an operation performed onto three data.
[0042] Given that this first operation 41 uses three operands, it is therefore performed in two steps, namely by performing a first sub-operation OP1.sub.1 using a first operator and then by performing a second sub-operation OP1.sub.2 using a second operator. Typically, the two sub-operations OP1.sub.1, OP1.sub.2 are logical operations (Boolean algebra), typically commutative operations. Still preferably, at least one of the operators is an exclusive OR operation (XOR operation).
[0043] Besides, owing to the commutative property of the XOR sub-operations, it should be noted that the three operands can be processed in any order within the first operation 41. As shown as example in
[0044] Instead of using a Boolean operation, such as an XOR operation, it should be noted that the second sub-operation OP1.sub.2 could be based on any other function that is able to mix distributions of the two operands used as inputs, such that when one of these two operands is unknown, it is not possible to compute the other operand for a given cipher block 51 (i.e. for a given output). Nevertheless, the function must obviously remain reversible; otherwise the decryption would be not feasible. For instance, if a modular addition is used as operation during the encryption phase, then a modular subtraction will be used instead of the modular addition during the decryption phase. Therefore, the operations performed during the decryption phase will be the inverse of those performed during the encryption phase.
[0045] Although XOR operation remains the most natural choice, it should be noted that modular addition or modular multiplication could be also used to perform such operations during the encryption phase if modular subtraction or respectively modular division is used for the decryption phase. However, such modular operations are less suitable because they may release information (e.g. the carry-bit in modular addition) that could be used by other side-channel attacks.
[0046] As long as all the plaintext blocks 11 have not been fully processed, the register 23 is then reloaded with the ciphertext block 51 (i.e. with the current—or last computed—ciphertext block 51, as shown in
[0047] When all the plaintext blocks 11 have been processed, the register 23 is reloaded with the last computed ciphertext block 51 and the incrementing function of the counter is applied to the (current) counter data CDTi, as for the previous iterations. However, only the two first steps of the round are then performed in order to get the cryptogram 30 from the input data 20 (i.e. from c.sub.i and CDt.sub.i+1) which is processed within the block cipher algorithm 35 using the cryptographic key 34. Accordingly, these actions does not refers to a complete iteration (as those done before), but should be rather regarded as being a partial iteration. From this last cryptogram 30, the local tag (T.sub.i+1) 32 is then used to compute the global tag 52 by a second operation (OP2) 42 using all the computed local tags, namely all local tags computed since the first iteration IT.sub.1. It should be noted that only the local tag (second segment 32) of this partial iteration is used. Therefore, the determination of the first segment 31 remains optional, but is implicitly done through the calculation of the cryptogram 30 which is processed as a single data.
[0048] The result of the second operation (OP2) provides the global tag 52. This result is calculated in a similar way as for determining the result of the first operation (OP1), namely by a plurality of sub-operations (OP2.sub.1 to OP2.sub.1). Preferably, each sub-operation uses as operands the local tag T.sub.n of the related iteration IT.sub.n and the result of the previous sub-operation determined in the previous iteration IT.sub.n−1. The nature (i.e. the kind) of the second operation OP2 is similar or identical to that of the first operation OP1. The same is true regarding the order in which the operands are used to determine the global tag 52. The determination of the global tag 52 from all local tags corresponds to the second pass of the mode of operation.
[0049] The ciphertext message 50 is determined by combining (concatenating) all the ciphertext blocks 51 together, in a specific order that will be reused to recover the plaintext message 10 from the ciphertext message 50 during a reverse process that will be described hereafter. For instance, such an order can be the same as that in which the plaintext blocks 11 have been processed. In a variant, an index could be assigned to each ciphertext blocks 51 in order to identify the order in which these blocks have been processed.
[0050] Advantageously, by performing the first operation OP1 by using three operands instead of two, the ciphertext block 51 does not result from a single operation, but it results from two successive operations, namely the first sub-operation OP1.sub.1, and the second sub-operation OP1.sub.2. The first sub-operation uses two of the three operands as inputs, and the second sub-operation uses as inputs the third operand and the result of the first sub-operation. An attacker aiming to perform DPA attacks onto such a process by running the block cipher algorithm over many inputs (e.g. 100′000 times to observe 100′000 power traces) will have no access to the intermediate output determined on the basis of the first two operands. Instead he can only observe the output provided after the second sub-operation OP1.sub.2. Accordingly, he will first need to attack the second sub-operation before being able to analyze the first sub-operation OP1.sub.1. However, the second sub-operation is based on two unknown values; both uniformly distributed and uncorrelated. As a result the DPA does not work, or it will be at least much more difficult to apply such an attack on the subject-matter of the present invention than on one of the processes of the prior art.
[0051] According to one embodiment, the method further comprises a preliminary step for restoring a common bit length between the first data 21 (i.e. data loaded within the register 23) and the counter data 22. This preliminary step is performed in the case where first data 21 and counter data 22 do not have the same bit length. Preferably, this preliminary step is undertaken before inputting said input data 20 into the block cipher algorithm 35 or within the algorithm 35 itself. Preferably, the first segment 31 and the local tag 32 have the same bit length. If not, the method may further comprise an additional step (padding step) to restore the same bit length between these two segments. Still preferably, the first data 21 (e.g. IV), the counter data 22, the first segment 31 and the second segment 32 (local tag) all have the same bit length, namely the half bit length of the input data 20.
[0052] According to one embodiment shown in
[0053] Referring to
[0054] More specifically,
[0055] Generally speaking, the same actions as those performed during the encryption phase are undertaken, namely loading a first data 21 into the register 23, then running the round by performing the following steps:
[0056] A first step for inputting input data 20 into a block decipherment algorithm 35, this input data comprising data loaded in the register 23 and a counter data 22.
[0057] A second step for computing, within the block decipherment algorithm 35, a first output 30 by decrypting input data 20 using the single cryptographic key 34 (i.e. the same key K as that used for the encryption phase). This first output 30 comprises a first segment 31 and a second segment 32, the latter being defined as an authentication local tag.
[0058] A third step for computing a plaintext block 11 by performing a first operation (OP1) 41 using as operands: the first segment 31, the current ciphertext block 51 and the second segment 32 (i.e. the local tag provided by the current iteration). Accordingly, the plaintext block 11 is the result of an operation performed onto three data. Given that this first operation 41 uses three operands, it is therefore performed in two steps as already explained regarding the encryption phase.
[0059] It should be noted that the operation (OP1) 41 performed during the decryption phase (
[0060] As long as all the ciphertext blocks 51 have not been fully processed, the register is reloaded during a next iteration with the current ciphertext block 51 (i.e. with the last computed ciphertext block 51, as shown in
[0061] The plaintext message 10 is determined by combining (concatenating) the plaintext blocks 11 obtained during all the rounds in the same order, as mentioned above, so as to retrieve the plaintext message that was originally used during the encryption phase to provide the ciphertext message 50.
[0062] Then, the register 23 is reloaded with the current ciphertext block 51 (i.e. with the last ciphertext block 51 which has been processed during the last iteration IT.sub.1′) and the incrementing function is applied one more time onto the last counter data 22 before performing only the first two steps of the round (similarly to what was performed during the encryption phase when referring to the partial iteration). From this last first output 30, the local tag (T.sub.i+1) 32 is then used to compute the global tag 52 (T.sub.G) by a second operation (OP2) 42 that uses all the computed authentication local tags 32 as operands. As already explained regarding the encryption phase, the global tag 52 resulting from the second operation OP2 is calculated in a similar manner as for determining the result of the first operation (OP1), namely by a plurality of sub-operations (OP2.sub.1 to OP2.sub.1). The same kind of operations and variants as those mentioned during the encryption phase can be applied during the decryption phase.
[0063] Regardless the encryption or the decryption phase, it should be noted that the sub-operations (OP2.sub.1 to OP2.sub.1) are not necessarily computed once all the blocks 11, 51 have been processed. Indeed, these sub-operations could be progressively computed, one by one during each iteration, by determining an intermediate result. This intermediate result could be stored in a memory until it is processed as an operand with the next local tag (second operand) provided by the next iteration (or partial iteration at the end of the process). The same principle could be applied for determining the message 10, 50, from the respective blocks 11, 51.
[0064] Besides, due to the reverse property of the algorithm 35, it should be noted that the block cipher algorithm mentioned in the encryption phase is the same as the block decipherment algorithm of the decryption phase. Furthermore, it should be noted that the result provided by the algorithm 35 is defined as being a so-called “first output” 30 in the decryption phase. This wording has chosen instead of the word cryptogram, because this output should be rather regarded as being decrypted data (although, technically speaking, the algorithm 35 does not make any difference between the so-called first output and the so-called cryptogram).
[0065] According to one embodiment, the block decipherment method further comprises a preliminary step for restoring a common bit length between the first data 21 loaded in the register 23 and the counter data 22. This preliminary step will be used in the case first data 21 and counter data 22 do not have the same bit length. Such a preliminary step will be undertaken before inputting the input data 20 into the block cipher algorithm 35.
[0066] As already mentioned with respect to the encryption phase, the first data 21 can be an initialization vector IV, in particular a single block having the same bit length as that of the counter data 22.
[0067] According to one embodiment and similarly to what is shown in
[0068] In addition, it should be noted that the ciphertext message 50 of the present decipherment method can be further associated with an authentication data (in particular the global tag obtained during the encryption phase by a related block cipher method). In such a case, the present decipherment method could further comprise a step for checking whether this associated authentication data is identical to the global tag 52 determined by the second pass of the decipherment method. If the global tag 52 is not identical to the authentication data associated with the ciphertext message 50, the latter will be declared as being not authentic.
[0069] Although the encryption phase and the decryption phase have been respectively presented as an encryption method and as a decryption method, the present invention could be also refer to a single method comprising both the encryption phase and the decryption phase.
[0070] The invention also refers to a cryptographic device 60, 60′ for implementing one of the methods or embodiments disclosed in the present description. Referring to
[0076] Each round comprises: [0077] a first step for inputting (e,g. through the processing unit 64 as shown in
[0080] As long as all the plaintext blocks 11 have not been fully processed, the processing unit 64 being further configured to reload the register 23 with the current ciphertext block 51 (i.e. the last computed ciphertext block 51) and to increment the counter data 22 (i.e. to update the reproducible data) before running a new round by starting again to the first step.
[0081] The converting unit 62 being further configured to determine the ciphertext message 50 by concatenating the ciphertext blocks 51 (c.sub.1, c.sub.2, . . . c.sub.i) of all the rounds in an orderly manner, in particular in the aforementioned orderly manner, so as to keep respective positions between the blocks 11 within the plaintext message 10 and the correspondent blocks 51 within the ciphertext message 50.
[0082] The processing unit 64 being further configured to reload the register 23 with the last computed ciphertext block 51 and to apply the incrementing function (f) to the counter data 22 in order to increment it before performing only the first two steps of the round. Then, the processing unit 64 is configured to compute the global tag 52 by a second operation OP2 using, e.g. from the memory 66, all the computed authentication local tags (32) as operands.
[0083] The interface 61 (or any other interface) is further configured to output the ciphertext message 50 and the global tag 52.
[0084] The converting operation performed by the converting unit 62 may relate to divide the plaintext message 10 into blocks 11 having the same bit length and, if any, to a padding operation applied to at least one of the two end blocks 11 of this plaintext message once divided.
[0085] The cryptographic device 60 can further include a generator 67 (or a pseudo generator) for generating an initialization vector (IV) that could be used for implementing the method according to any of the embodiment disclosed in the present description. Such a generator (or another one) could be also used for initializing the counter 25 with an initial value, typically for resetting purpose. Besides, it should be noted that the register 23, the counter 25 and, if any, the generator 67 could be located within the processing unit 64.
[0086] When acting as a first device, in particular at the sender side, the encryption device 60 is typically intended to be used for encrypting plaintext messages 10 that will be then decrypted by a decryption device 60′, acting as a second device, in particular at the receiver side. Given that the decryption phase corresponds to the reverse process of the encryption phase, the electronic components that form the encryption device are identical or similar to those of the decryption device. Only the functions associated to some components of the decryption device can differ from those of the encryption device. Accordingly, the decryption device of the present invention will be also described hereafter in reference to the components of
[0087] Accordingly, this second device relates to a cryptographic device 60′ for implementing a block decipherment method using round repetition for providing, from a ciphertext message 50, a plaintext message 10 and a global tag 52 for authenticating the plaintext message. This cryptographic device 60′ comprises: [0088] a register 23, typically in the form of a memory (or memory cell), for receiving first data 21, [0089] an updater 25 for updating a reproducible data 22 according to an updating function f; for example, it may refer to a counter 25 for incrementing counter data 22 according to an incrementing function (f), [0090] an interface 61 for receiving at least the ciphertext message 50, [0091] a converting unit 62 for converting and preferably storing the ciphertext message 50 into a plurality of ordered ciphertext blocks 51 having all the same bit length, [0092] a processing unit 64 for successively processing each of the ciphertext blocks 51 in an orderly manner as a current ciphertext block during a round, the processing unit 64 further comprising a cryptographic unit 65, hosting a block decipherment algorithm 35, and a memory 66 comprising a single cryptographic key 34 (K).
[0093] Each round comprises: [0094] a first step for inputting input data 20 into the block decipherment algorithm 35, this input data comprising data 21 loaded in the register 23 and a reproducible data (counter data 22), [0095] a second step for computing, within the block cipherment algorithm 35, a first output 30 by processing input data 20 using the single cryptographic key 34, the first output 30 comprising a first segment 31 and a second segment 32, the latter being defined as an authentication local tag and being stored (at least temporarily) in a memory, for instance the memory 66, [0096] a third step for computing then storing (e.g. in such a memory 66) a plaintext block 11 by performing a first operation OP1 using, as operands, the first segment 31, the current ciphertext block 51 and the second segment 32 (i.e the local tag).
[0097] As long as all the ciphertext blocks 51 have not been fully processed, the processing unit 64 being further configured to reload the register 23 with the current ciphertext block (i.e. the last computed ciphertext block) and to update the reproducible data (e.g. to increment the counter data 22 by means of the incrementing function of the counter 25) before running a new round by starting again to the first step.
[0098] The converting unit 62 being further configured to determine the plaintext message 10 by concatenating the plaintext blocks 11 of all the rounds in an orderly manner, in particular in the aforementioned orderly manner in order to keep respective positions between the blocks 11, within the plaintext message 10, and the correspondent blocks 51, within the ciphertext message 50.
[0099] The processing unit 64 being further configured to reload the register 23 with the current ciphertext block (i.e. the last ciphertext block which has been processed) and to apply the incrementing function (f) to the counter data 22 in order to increment it before performing only the first two steps of the round. Then, the processing unit 64 is configured to compute the global tag 52 by a second operation OP2 using, e.g. from the memory 66, all the computed authentication local tags (32) as operands.
[0100] Preferably, the processing unit 64 of the cryptographic device 60′ is further configured to check whether the global tag 52 is identical to an authentication data provided together with the ciphertext message 50. Such an authentication data will typically be the global tag 52 that was determined during the encryption phase by the cryptographic device 60. In the case where (for a same message 50) there is a difference between the global tags 52 provided by each of the cryptographic device 60, 60′, this means that the plaintext message 10 (or the ciphertext message 50) is not authentic. Accordingly, the processing unit 64 can undertake an appropriate action, for instance it may trigger a warning message, interrupt the release of the plaintext message 10 and/or it may send information as reporting data.
[0101] Of course, the interface 61 is further configured to output the plaintext message 10 once it has been restituted.
[0102] It should be noted that the cipher algorithm of the cryptographic device 60 is the same as the decipherment algorithm of the cryptographic device 60′. Indeed, such an algorithm 35 can be used for ciphering as well as for deciphering.
[0103] Besides, in view to determine the global tag 52, the memory 66 (or another memory) will be used to store all the local tags 32 or the intermediate results in the event the global tag is progressively determined during each iteration. In one embodiment, the ciphertext message 50 or the plaintext message 10 could be also determined in the same way.
[0104] The memory 66 of the cryptographic device 60, 60′ can be a secure memory. In one embodiment, the components of the cryptographic device 60, 60′ are comprised in a monolithic unit, so it would be not possible to physically access to the components, in particular at least to the sensitive components, without destroying the monolithic unit.
[0105] The cryptographic key 34 is use both for encryption or decryption purpose by the cryptographic device 60, 60′.
[0106] Although embodiments of the present disclosure have been described with reference to specific example embodiments, it will be evident that various modifications and changes may be made to these embodiments without departing from the broader scope of these embodiments. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense. The accompanying drawings that form a part hereof, show by way of illustration, and not of limitation, specific embodiments in which the subject matter may be practiced. The embodiments illustrated are described in sufficient detail to enable those skilled in the art to practice the teachings disclosed herein. Other embodiments may be utilized and derived there from, such that structural and logical substitutions and changes may be made without departing from the scope of this disclosure. This Detailed Description, therefore, is not to be taken in a limiting sense, and the scope of various embodiments is defined only by the appended claims, along with the full range of equivalents to which such claims are entitled.
[0107] Such embodiments of the inventive subject matter may be referred to herein, individually and/or collectively, by the term “invention” merely for convenience and without intending to voluntarily limit the scope of this application to any single inventive concept if more than one is in fact disclosed. Thus, although specific embodiments have been illustrated and described herein, it should be appreciated that any arrangement calculated to achieve the same purpose may be substituted for the specific embodiments shown. This disclosure is intended to cover any and all adaptations or variations of various embodiments. Combinations of the above embodiments, and other embodiments not specifically described herein, will be apparent to those of skill in the art upon reviewing the above description.