Symmetrical iterated block encryption method and corresponding apparatus
A symmetrical iterated block encryption method includes: a bitwise XOR combination of a predetermined data word of a predetermined block with a predetermined data word of a predetermined round key; and a bitwise XOR combination of the predetermined data word with at least one other predetermined data word.
Latest ROBERT BOSCH GMBH Patents:
1. Field of the Invention
The present invention relates to symmetrical iterated block encryption method and a device for implementing the method.
2. Description of the Related Art
Modern block encryption methods, such as the Advanced Encryption Standard (AES), are designed as iterated block ciphers. This means that processing of the input encompasses multiple rounds that are configured identically. The data to be encoded are divided into individual blocks of fixed length that are then mapped, by way of a transformation determined by a key, onto encoded values. The ciphertext blocks produced thereby also have fixed lengths.
A block cipher is a function that maps a cleartext onto an encoded text. This function is injective for every possible key, so that a decoding function exists which calculates the cleartext again for every encoded text.
Selection of the block cipher and of the key are of great interest. For certain cryptological methods it has been possible, by observing a cryptographic device as it executes the corresponding cryptological algorithms, to find correlations between the observed data and the key being used. Conclusions as to the key being used are thereby possible, and can ultimately cause the cryptographic method to be compromised.
For example, it is possible by way of side-channel attacks such as so-called differential power analysis, by measuring the energy consumption of a microprocessor during cryptographic calculations, to draw conclusions as to the operations being performed and thus as to the key being used.
Countermeasures against such side-channel attacks have already been proposed, and can be divided into the following groups:
Countermeasures at the cell level, i.e. modifying the implementation of the logic gates or analog components of the microprocessor, in order to influence the physical properties of the electronic circuit in such a way that the information regarding energy consumption is not measurable, or is measurable only with difficulty, for side-channel attacks.
Modifications to the implementation of a logic of a cryptographic algorithm on standard CMOS cells, which attempt to conceal or mask the information regarding energy consumption which is necessary for physical analysis in order thereby to prevent an analysis of the run time of the algorithm.
BRIEF SUMMARY OF THE INVENTIONThe method and the apparatus according to the present invention have the advantage that in the context of an implementation in hardware, e.g. in an application-specific integrated circuit (ASIC) or field programmable gate array (FPGA), comparatively little processor area is required, and in the context of an implementation in software lesser demands are placed on standard CMOS cells in terms of calculation time and memory usage. A favorable solution that offers sufficient protection from side-channel attacks is thereby achieved.
It is particularly advantageous if only the first and the last round of the iterated block encryption method encompass the bitwise XOR combination of the block with at least one other byte. With an implementation in the microprocessor this saves area, and with an implementation in software it saves calculation time and memory space.
It is particularly advantageous if, for a plurality of the bytes obtained from the bitwise XOR combinations, a plurality of values from a substitution box is identified. The countermeasure against side-channel attacks is thereby improved by the fact that as many as possible of, or in fact all, the key candidates, i.e. all possible values of a byte, are employed for calculation. As a result it is difficult to correlate the measured energy consumption with the correct key. Each of the calculated values thereby leads back to a possible key of the iterated block encryption method. All the keys obtainable via a side-channel attack are thus plausible. It is therefore largely impossible to recognize the correct key from the plurality of plausible keys.
Preferably the identification of the bitwise XOR combination, or of the value from the substitution box, is accomplished for at least two of the aforesaid bytes successively. With an implementation in software, where calculation cannot occur arbitrarily in parallel, identification of the correct key thus remains largely impossible, since all the keys recognized as plausible for each round are calculated successively, and it remains unclear which of the plausible keys is the correct one.
It is particularly advantageous if a memory access to a table mapping the substitution box is accomplished substantially simultaneously for at least two values. For a solution implemented in software, a reliable conclusion regarding the correct key is thus not possible even by observing the energy consumption of a data bus connecting the processor to the memory, since it is only possible to infer plausible keys from all the data contained in the memory access.
It is particularly advantageous if the identification of the bitwise XOR combinations or of the value from the substitution box is accomplished substantially simultaneously for at least two of the aforesaid bytes. With an implementation in an ASIC or FPGA, the association of the energy consumption with the key thus cannot be reliably inferred from the energy consumption of the ASIC or FPGA.
Exemplifying embodiments of the invention are depicted in the drawings and will be explained in further detail in the description that follows.
Examples of the symmetrical iterated encryption process will be described below. They encompass a bitwise XOR combination of a predetermined data word with a key, and at least one further bitwise XOR combination of the predetermined data word with at least one further key.
The examples furthermore encompass a nonlinear substitution operation that is accomplished in accordance with a substitution box (S-box). The nonlinear substitution operation is, for example, a mapping of a data word onto another data word of the same length. The S-box is expressed, for example, in accordance with the Advanced Encryption Standard. Alternatively, an S-box according to the PRESENT block encryption method can also be used. Any other S-box suitable for symmetrical iterated block encryption methods, for example a Rijndael S-box, can likewise be used.
The example of symmetrical iterated encryption using AES will be described below. The AES procedure is modified in order to perform further XOR combinations and mappings in accordance with an S-box.
Implementation is accomplished either via hardware in the ASIC or FPGA, or as software. The blocks and tables mentioned below, as well as signal paths, are accordingly either mapped in hardware or implemented as software.
AES allows predetermined key lengths and block lengths of, for example, 128 bits, 192 bits, and 256 bits. AES 256, having a user key with a length of 256 bits, is used in the example.
To begin with, the cleartext to be encoded is written into a block having one of the aforesaid lengths; if applicable, longer cleartext is subdivided into multiple cleartext blocks to be processed successively. Each block corresponds to the aforesaid predetermined data word and is firstly written into a two-dimensional table having four rows, each of whose cells is one byte in size. For a 256-bit long block, for example, a table having four rows and eight columns is generated.
Each block is successively subjected to specific transformations. These are only roughly sketched out below, since the details are known from the AES standard.
Encoding via AES is accomplished by performing a key expansion, a pre-round, multiple encoding rounds, and a last round. The four transformations in this context are SubBytes, ShiftRows, MixColumns, and AddRoundKey.
This procedure and the transformations are implemented either as software code or in hardware in an ASIC or FPGA.
In the transformations, AES applies various parts of an expanded original key to the block. These various parts are hereinafter referred to as “round keys.” The number of rounds varies, and in AES depends only on the key length. For AES 256 with the block length of 256, for example, 14 rounds are carried out.
The expanded original key is identified from the user key in the key expansion step, by expansion to the appropriate length. It is identified in such a way that each round key has the same length as the block. In AES 256 each round key is thus 256 bits long.
After key expansion the pre-round occurs, in which the AddRoundKey transformation is performed for the first time. The AddRoundKey transformation contains, in the pre-round, a bitwise XOR combination between the block and the first round key. This means that a predetermined data word is bitwise XOR-combined with a key. Each byte of the block can also be successively XOR-combined with the corresponding byte of the first round key. In this case the bitwise XOR combination of each of the bytes is performed.
In addition, in a departure from the usual AES encryption method, at least one further bitwise XOR combination of the block with a further data word of the same length as the first round key is performed. Preferably each byte of the further data word is different from the respective byte of the first round key. Preferably several of these further data words are applied, in further bitwise XOR combinations, to the predetermined data word. The greater the number of other data words that are used, the more successively executing or parallel transformations are available.
The bytes of the further data words can be selected, for example, in such a way that they represent all other possible values of a byte except for the respective byte of the first round key. All that an attacker can then discover by way of a side-channel attack, from the totality of the bitwise XOR combinations for all bytes, is multiple parts recognizable as plausible in terms of a hypothesis for the correct key.
The result of each of these bitwise XOR combinations is stored in the memory in separate blocks, or a hardware path for further processing is provided for each of the results.
The correct block or hardware path is marked as a function of the actual user key. For example, a base address for the correct block is stored in memory, or the correct hardware path is stored.
The first of the encoding rounds then follows.
In the first step of each encoding round, the SubByte transformation is performed: for each byte of all the blocks, an equivalent is looked for in the S-box.
Each byte of each block to which the SubBytes transformation is applied is mapped onto a byte at the output by way of the aforementioned S-box, for example a table in memory or a functional block implemented in hardware.
The result is stored in the respective block, or is further utilized via a corresponding hardware path.
The ShiftRows transformation is then performed for all blocks. Each block is present in the form of a two-dimensional table having four rows. The rows of the table are shifted to the left a specific number of columns in accordance with the AES specification. Overflowing cells are continued from the right.
The result is again stored in the respective block, or is further utilized via a corresponding hardware path.
The MixColumns transformation is then performed. Here the data within the columns are mixed using a reversible linear transformation in accordance with the AES specification.
The result is again stored in the respective block, or is further utilized via a corresponding hardware path.
The bitwise XOR combination between the block identified by way of the base address as the correct block, and the next round key, is then performed by way of the AddRoundKey transformation. The other blocks are XOR-combined with further data words having the same length as the next round key. These are preferably different from the respective byte of the round key. For example, all other possible values of a byte except for the respective byte of the current round key are used. Alternatively, this step can be omitted from the iterated encoding rounds and can be provided only in the AddRoundKey transformation of the last round. This reduces memory and calculation outlay, or area utilization on the microprocessor.
The result is again stored in the respective block, or is further utilized via a corresponding hardware path, and the next encoding round follows.
After all the encoding rounds are complete, in the example after 14 rounds, a last round is carried out. In this only the SubBytes, ShiftRows, and AddRoundKey transformations, as described, are carried out.
The result, i.e. the encoded text, is then stored back in the respective block or is available via a corresponding hardware path. The correct result can be discovered on the basis of the base address and is correspondingly outputted.
The same correspondingly applies to encoding using the PRESENT encryption method. In other words, the XOR combination and the mapping via S-box occur at a corresponding point in accordance with the specifications of the PRESENT encryption method.
Integrated circuit 100 encompasses an input “in” that is connected to multiple XOR elements. These XOR elements are labeled ⊕ in
Each of the XOR elements is connected on the output side to a functional block 101. Functional blocks 101 are connected on the output side to a multiplexer 102 that is embodied to switch the output of one of these functional blocks 101 to an output “out” of integrated circuit 100. Each of the XOR elements possesses a second input at which one of the keys sk1, sk2, sk3, . . . , skn is applied. These are selected, as described above, in such a way that at least one of the keys sk1, sk2, sk3, . . . , skn is the current round key. The others can be selected arbitrarily, preferably as described above.
Input “in”, multiplier 102, the XOR elements, output “out”, and the connections are designed for data words of a predetermined length.
In the AES 256 example with a block length of 256 bits, this predetermined length is 256 bits. The key length is based on the encryption method being used. With AES 256 a key length of 256 bits is used.
The input of each functional block 101 is identified by way of the XOR element, by bitwise XOR combination of the predefined data word at input “in” with a respective predetermined key sk1, . . . , skn.
Each functional block 101 then maps the data word at its input onto a data word at its output. With the S-box according to AES 256, the data word is mapped bytewise onto the output.
The bitwise XOR combinations can also be carried out successively for parts of the keys. For example, for each byte a predetermined data word is XOR combined with all the keys sk1, . . . , skn.
The output of the XOR combination is then delivered bytewise to the respective functional blocks 101.
For an individual byte of a round key, 256 different values are possible. With bytewise processing, for example, provision is made for 256 functional blocks 101 and 256 bitwise XOR elements.
This means that in this case electronic circuit 100 carries out the bitwise XOR combination simultaneously or at least approximately simultaneously for every possible value of a byte of the round key. Also in this case, the mapping by functional blocks 101 for 256 possible round keys is calculated simultaneously or approximately simultaneously in electronic circuit 100.
In each of the cases recited, multiplexer 102 is embodied to select, from all the values at the output of the respective functional blocks 101, the value belonging to the correct round key. For example, multiplexer 102 switches to output “output” that data word which is identified by the base address belonging to the correct round key.
Electronic circuit 100 contains for this purpose, for example, a finite state machine (not shown in
If encoding in accordance with the PRESENT block encryption method is used, the substitution box encompasses an input four bits in size, so that only 16 substitution boxes are needed for this encryption method. In this case therefore 16 XOR combinations, or 16 values at the output of the respective functional blocks, are calculated substantially simultaneously.
The result is that once an attacker has collected sufficient information regarding the energy consumption of the electronic circuit, he or she cannot achieve an unambiguous result using a hypothesis with regard to the value of the round key byte, since each byte of the round key appears plausible in terms of the hypothesis.
A method for symmetrical iterative block encryption accordingly encompasses a bitwise XOR combination of a predetermined data word of a predetermined block with a predetermined data word of a predetermined round key, and a bitwise XOR combination of the predetermined data word with at least one other predetermined data word.
The symmetrically iterated block encryption method correspondingly preferably contains a mapping of the result of the bitwise XOR combinations by way of a substitution box onto a data word at the respective output of the functional block. From these data words, the data word attributable to the part of the round key is then selected by way of the multiplexer for the output of integrated circuit 100.
If the calculation is accomplished bytewise, the symmetrically iterated block encryption method contains a bitwise XOR combination of a predetermined byte of a predetermined block with a predetermined byte of a predetermined round key, and a bitwise XOR combination of the predetermined byte with at least one other predetermined byte.
In the case of PRESENT, block encryption contains a bitwise XOR combination of a 4-bit data word at the input with a 4-bit wide round key.
A method for symmetrical iterated block encryption, for example implemented as software that can execute on a standard processor 201, will be described below with reference to
In this case memory 202 contains a table mapping the S-box. By way of this table, a data word of predefined word width is mapped onto another data word of predefined word width. The substitution table is designed in accordance with the block encryption algorithm being used.
In the example of
The read access is sent, for example, from processor 101 to memory 202 via the data bus by way of requests 210, 212, 214, 216. For example, processor 201 sends the base address and the result of the bitwise XOR combination to the memory in the request. Request 210 contains, for example, a request for the result of the mapping of the predetermined data word XOR-combined with the key sk1. This is represented, for example, by a string “read@baseaddress+(in⊕sk1)”. The further requests 212, 214, and 216 are represented, for example, by the strings “read@baseaddress+(in⊕sk2)”, “read@baseaddress+(in⊕sk1)”, . . . , “read@baseaddress+(in⊕skn)”. In general, the number of read accesses accomplished is the same as the number of further data words provided.
After the request is received, memory 202 sends the respectively requested data back in a respective response 211, 213, 215, 217. As depicted in
In the AES 256 example, for example, the request is made 256 times, so that all possible values of the S-box are requested. In this case memory 202 also sends 256 responses, which contain all possible values of the S-box, to processor 201.
In this case processor 201 is embodied to continue with further calculation of the block encryption using only the response that was made to the request having the correct part of the round key. Provision is made for this purpose, for example, to correspondingly mark the response belonging to the correct part of the round key. This is done, for example, by reutilizing the received value that belongs to the marked base address, whereas all other received values are not reutilized.
Implementation in accordance with PRESENT block encryption is accomplished correspondingly. The 4-bit word width is again used here. This reduces the memory requirement in memory 202.
In contrast to integrated circuit 100 of
Similarly to what was described regarding
The result is that the value of the data word continues to be identified in parallel in four functional blocks 301, 302, 303, 304, and the bitwise XOR combination of the data word at the input with the part of the round key is also executed in parallel. In most cases this is sufficient to allow a successful defense against side-path attacks without requiring too much processor area in order to implement functional blocks 301, 302, 303, 304 and XOR operations. Because of the temporal displacement of the calculation of the respective four data words, it also remains temporally unclear which of the calculations is attributable to the correct part of the round key. Correlating the energy consumption of integrated circuit 300 with the value of the correct part of the round key is thereby made more difficult. Any hypothesis regarding a correct part of the round key becomes so obscured that calculation using the other data words of the 4-bit set also leads to plausible results regarding the possible part of the round key.
After receiving one of the requests 410, 412, 414, 416, memory 402 correspondingly sends the respectively requested data for the respectively pertinent response 411, 413, 415, and 417 to processor 401. This communication likewise takes place via a data bus (not depicted).
As depicted in
Processor 401 is correspondingly embodied, as described for
The totality of the data word associated with the round key, and the further data words, can on the one hand assume all possible values of a data word having the respective word width. On the other hand, the further data words can also be generated by random selection, for example using a random generator provided in the microprocessor. If randomly generated data words are used, it is then possible to dispense with the use of all possible data words. The memory requirement or calculation outlay, or the area requirement on the microprocessor, is thereby also reduced. Testing becomes easier, however, if a random generator is not used.
Claims
1. A method for providing symmetrical iterated block encryption, the method comprising:
- performing a bitwise XOR combination, via XOR elements of an integrated circuit, of a predetermined data word of a predetermined block with a predetermined key; and
- performing a bitwise XOR combination, via the XOR elements of the integrated circuit, of the predetermined data word with at least one other predetermined data word of a same length as one of the predetermined keys;
- wherein the integrated circuit includes an input that is connected to the XOR elements,
- wherein each of the XOR elements is connected on an output side to at least one of a plurality of function blocks,
- wherein the at least one of the plurality of function blocks is connected on the output side to a multiplexer configured to switch the output of the at least one of the plurality of function blocks to an output of the integrated circuit,
- wherein each of the XOR elements includes a second input at which the predetermined key of the plurality of keys is applied, wherein at least one of the plurality of keys is a current key,
- wherein each substitution box of a plurality of substitution boxes includes n of the function blocks for a given time period.
2. The method as recited in claim 1, further comprising:
- performing, in addition to the bitwise XOR combination of the data word with the predetermined key, a plurality of bitwise XOR combinations of the data word with other data words.
3. The method as recited in claim 2, wherein the totality of the values assumed by the data word of the predetermined key and by the other data words encompasses, at least once, every possible value of a data word having the word width of the predetermined data word.
4. The method as recited in claim 2, wherein only the first and the last rounds of the iterated block encryption method encompass the bitwise XOR combinations of the block with at least one other data word.
5. The method as recited in claim 2, wherein each round of the block encryption method encompasses the bitwise XOR combinations of the predetermined data word of the predetermined block with at least one other data word.
6. The method as recited in claim 2, wherein a value from each of the plurality of the substitution boxes is identified for at least one data word obtained by way of one of the bitwise XOR combinations.
7. The method as recited in claim 6, wherein a plurality of values from the substitution box is identified for a plurality of the data words obtained from the bitwise XOR combinations.
8. The method as recited in claim 7, wherein a value is selected from the plurality of values from the substitution box identified for the plurality of the data words obtained from the bitwise XOR combination of the data word of the predetermined block with the data word of the predetermined key.
9. The method as recited in claim 8, wherein the selected value from the substitution box identified for the bitwise XOR combination of the predetermined block with the predetermined key is used for the block encryption method.
10. The method as recited in claim 2, wherein the identification of the bitwise XOR combination is accomplished successively for at least two of the data words.
11. The method as recited in claim 6, wherein a memory access to a table mapping the substitution box is accomplished substantially simultaneously for at least two values.
12. The method as recited in claim 8, wherein a plurality of functional blocks is provided for mapping a data word identified by one of the bitwise XOR combinations at the input of the respective functional block onto one of the values at the output of the respective functional block by way of the substitution box, the value at the output of the functional block at whose input the bitwise XOR combination of the data word of the predetermined block with the data word of the predetermined key is used being selected from the outputs of the functional blocks for the block encryption method.
13. The method as recited in claim 2, wherein the identification of the bitwise XOR combination is accomplished substantially simultaneously for at least two of the data words.
14. A non-transitory, computer-readable data storage medium storing a computer program having program codes, which is executable on a computer, comprising:
- a program code arrangement having program code for providing symmetrical iterated block encryption, by performing the following: performing a bitwise XOR combination, via XOR elements of an integrated circuit, of a predetermined data word of a predetermined block with a predetermined key; and performing a bitwise XOR combination, via the XOR elements of the integrated circuit, of the predetermined data word with at least one other predetermined data word of a same length as one of the predetermined keys; wherein the integrated circuit includes an input that is connected to the XOR elements, wherein each of the XOR elements is connected on an output side to at least one of a plurality of function blocks, wherein the at least one of the plurality of function blocks is connected on the output side to a multiplexer configured to switch the output of the at least one of the plurality of function blocks to an output of the integrated circuit, wherein each of the XOR elements includes a second input at which the predetermined key of the plurality of keys is applied, wherein at least one of the plurality of keys is a current key,
- wherein each substitution box of a plurality of substitution boxes includes n of the function blocks for a given time period.
8155308 | April 10, 2012 | Poo |
8290148 | October 16, 2012 | Akishita |
8300805 | October 30, 2012 | Langhammer |
8379841 | February 19, 2013 | Taylor |
20030068036 | April 10, 2003 | Macchetti |
20040174994 | September 9, 2004 | Jiraki |
20040202317 | October 14, 2004 | Demjanenko |
20050213756 | September 29, 2005 | Hubert |
20060177052 | August 10, 2006 | Hubert |
20070036353 | February 15, 2007 | Reznik |
20100115286 | May 6, 2010 | Hawkes |
20100142702 | June 10, 2010 | Wolf |
20140348323 | November 27, 2014 | Chevallier-Mames |
Type: Grant
Filed: Aug 12, 2015
Date of Patent: Nov 28, 2017
Patent Publication Number: 20160056955
Assignee: ROBERT BOSCH GMBH (Stuttgart)
Inventors: Paulius Duplys (Markgroeningen), Sebastien Leger (Stuttgart)
Primary Examiner: Yonas Bayou
Application Number: 14/824,424
International Classification: H04L 9/06 (20060101); H04L 9/00 (20060101);