WO2011101994A1 - 暗号化装置 - Google Patents

暗号化装置 Download PDF

Info

Publication number
WO2011101994A1
WO2011101994A1 PCT/JP2010/052654 JP2010052654W WO2011101994A1 WO 2011101994 A1 WO2011101994 A1 WO 2011101994A1 JP 2010052654 W JP2010052654 W JP 2010052654W WO 2011101994 A1 WO2011101994 A1 WO 2011101994A1
Authority
WO
WIPO (PCT)
Prior art keywords
conversion
data
unit
random number
register
Prior art date
Application number
PCT/JP2010/052654
Other languages
English (en)
French (fr)
Inventor
つかさ 遠藤
雄一 駒野
浩一 藤崎
秀夫 清水
華恵 池田
淳 新保
Original Assignee
株式会社東芝
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社東芝 filed Critical 株式会社東芝
Priority to PCT/JP2010/052654 priority Critical patent/WO2011101994A1/ja
Priority to JP2012500445A priority patent/JP5364840B2/ja
Publication of WO2011101994A1 publication Critical patent/WO2011101994A1/ja
Priority to US13/585,391 priority patent/US9288040B2/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]

Definitions

  • the present invention relates to an encryption device.
  • the encryption partial processing is performed in plain text to calculate intermediate data, the plurality of encryption partial processing is repeated to update the intermediate data, and the final intermediate data is subjected to encryption partial processing.
  • This is a technique for calculating ciphertexts.
  • Various side channel attacks have been devised in which an encryption key is analyzed using physical information such as processing time, power consumption, and radiated electromagnetic waves when the cryptographic module operates.
  • analysis methods using power consumption information include simple power analysis (Spa), differential power analysis (DPA), and correlation power analysis (CPA). Is mentioned.
  • DPA predicts a part of the encryption key and statistically analyzes the predicted encryption key, the intermediate data calculated from the plaintext, and the power consumption during the encryption process, thereby correcting the correctness of the predicted encryption key. This is an attack technique for determining and specifying an encryption key.
  • analysis methods called secondary DPA and Zero Offset secondary DPA (ZO-2DPA) have been proposed (see Non-Patent Document 1).
  • the mask method is known as a countermeasure for DPA and CPA.
  • the mask method is a technique for eliminating the correlation between power consumption and intermediate data by adding a random number called a mask to the intermediate data of the encryption process and continuing the encryption process.
  • the power consumption of a register in a CMOS circuit depends on the number of data transition bits in a continuous clock.
  • the power consumption has a strong correlation with the Hamming distance of the intermediate data output by the continuous encryption partial process. Therefore, if the intermediate data of the encryption process is stored in the register as it is, the encryption key may be analyzed by statistically analyzing the power consumption and the intermediate data. Therefore, in order to improve resistance to power analysis, it is necessary to protect the register so that power consumption in the register does not correlate with intermediate data.
  • the present invention has been made in view of the above, and an object of the present invention is to provide an encryption device that is resistant to power analysis.
  • the present invention is an encryption device that performs encryption processing using an encryption key and calculates ciphertext from plaintext, and includes a register, an input unit that receives plaintext, and first intermediate data that is calculated from the plaintext.
  • the cipher partial processing unit is forwarded by the second conversion unit.
  • FIG. 1 is a block diagram of an encryption device according to a first embodiment.
  • Block diagram of the round function. 3 is a flowchart showing an overall flow of encryption processing in the first embodiment.
  • the block diagram arrange
  • 3 is a flowchart showing an overall flow of data conversion processing in the first embodiment.
  • the block diagram of the 1st conversion part concerning a modification of a 3rd embodiment, a register, and the 2nd conversion part.
  • the flowchart which shows the whole flow of the data conversion process in the modification of 3rd Embodiment.
  • the block diagram of the 1st conversion part and 2nd conversion part concerning 4th Embodiment.
  • the flowchart which shows the whole flow of the data conversion process in 4th Embodiment.
  • the block diagram which shows an example of a conversion process part.
  • the block diagram of the 1st conversion part and 2nd conversion part concerning 5th Embodiment.
  • the flowchart which shows the whole flow of the data conversion process in 5th Embodiment.
  • the hardware block diagram of the encryption apparatus concerning 1st-5th Embodiment.
  • the encryption device converts intermediate data for encryption processing into protection data that cannot be predicted from the outside, stores it in a register, and performs reverse conversion when reading it out. By protecting the data stored in the register in this way, the attack method for analyzing the encryption key embedded in the cryptographic module by measuring the power consumption when performing cryptographic processing is more effective.
  • a secure encryption device can be provided.
  • the cipher partial processing represents processing executed in the course of encryption processing for calculating ciphertext from plaintext.
  • a round function including SubByte, ShiftRow, MixColumn, and AddRoundKey, and SubByte, ShiftRow, MixColumn, and AddRoundKey correspond to the encryption partial processing.
  • the key length is not limited to 128 bits, and a key length of 192 bits or 256 bits can be similarly applied. Any other method may be used as long as N pieces of intermediate data (N is a predetermined integer equal to or larger than 2) is stored in a storage unit such as a register to execute encryption processing by repeating encryption partial processing.
  • the present invention can also be applied to an encryption device using an encryption algorithm. For example, the present invention can be applied to an encryption device that performs encryption using DES (Data Encryption Standard), Hiercrypt, or the like.
  • FIG. 1 is a block diagram illustrating an example of the configuration of the encryption device 100 according to the first embodiment.
  • the encryption device 100 includes an input unit 110a, an output unit 110b, a key storage unit 101, a round key generation unit 102, an AddRoundKey 105a, round functions 103b to 103j and 104, a first function Conversion units 112a to 112j, registers 106a to 106j, and second conversion units 113a to 113j are provided.
  • the input unit 110a accepts input of plain text data from the outside.
  • the output unit 110b outputs the ciphertext as a processing result to the outside.
  • the key storage unit 101 stores a 128-bit secret key.
  • the key storage unit 101 can be configured by any commonly used storage medium such as an HDD (Hard Disk Drive), an optical disk, a memory card, and a RAM (Random Access Memory).
  • the round key generation unit 102 calculates eleven 128-bit round keys RK 0 to RK 10 from the secret key stored in the key storage unit 101, and supplies them to the AddRoundKey 105a and the round functions 103b to 103j.
  • the round keys RK 0 to RK 10 may be calculated in advance before the AddRoundKey 105a is executed, or may be calculated in parallel with the round functions 103b to 103j and 104.
  • AddRoundKey105a (first encryption partial processing unit) performs AddRoundKey transformation process which is defined in the AES cipher the plaintext data, and outputs the intermediate data x 0.
  • FIG. 2 is a block diagram illustrating a configuration example of the round functions 103b to 103j.
  • FIG. 2 illustrates the configuration of the round function 103b, but the round functions 103c to 103j have the same configuration.
  • the round function 103b includes a SubByte 107b, a ShiftRow 108b, a MixColumn 109b, and an AddRoundKey 105b.
  • the SubByte 107b performs nonlinear conversion on the data stored in the register 106a every 8 bits.
  • the ShiftRow 108b rearranges the processing result of the SubByte 107b in units of 8 bits.
  • MixColmun 109b performs linear conversion for every 32 bits of the processing result of ShiftRow 108b.
  • AddRoundKey105b calculates the exclusive OR of the round keys RK 1 to be calculated by the processing result and the round-key generation unit 102 of MixColmun109b, stores the processing result in the register 106b.
  • round functions 103c to 103j also agitate the data output in the previous round and stored in the registers 106b to 106i by the same procedure, and store the processing results in the registers 106c to 106j.
  • FIG. 3 is a block diagram illustrating a configuration example of the round function 104.
  • the round function 104 includes a SubByte 107k, a ShiftRow 108k, and an AddRoundKey 105k.
  • the SubByte 107k performs nonlinear conversion on the data stored in the register 106j every 8 bits.
  • ShiftRow 108k rearranges the processing results of SubByte 107k in units of 8 bits.
  • AddRoundKey 105k calculates the exclusive OR of RK 10 calculated by the processing result of ShiftRow 109k and round key generation unit 102, and outputs the processing result from output unit 110b.
  • AddRoundKey 105a outputs intermediate data x 0 (first intermediate data).
  • the round functions 103b to 103j output intermediate data x 1 to x 9 (second intermediate data to tenth intermediate data), respectively.
  • the data generated in each round is hereinafter referred to as intermediate data.
  • the data x 10 to be output from the round function 104 is output as the ciphertext.
  • the first converters 112a to 112j convert the intermediate data x 0 to x 9 output from the AddRoundKey 105a and the round functions 103b to 103j by a predetermined conversion process.
  • the intermediate data converted by the first converters 112a to 112j is referred to as converted data.
  • First converter 112a ⁇ 112j outputs the converted data y 0 ⁇ y 9 which converts the intermediate data x 0 ⁇ x 9 respectively in the registers 106a ⁇ 106 j.
  • the registers 106a to 106j store conversion data y 0 to y 9 respectively.
  • the second conversion units 113a to 113j restore the intermediate data x 0 to x 9 by converting the data y 0 to y 9 stored in the registers 106a to 106j by a predetermined conversion process, and the next round function To enter.
  • the conversion process by the second conversion units 113a to 113j is a conversion process corresponding to the inverse conversion of the conversion process by the first conversion units 112a to 112j. That is, it is a conversion process for converting data after conversion by the first conversion units 112a to 112j into data before conversion by the first conversion units 112a to 112j.
  • the processing units that execute the processing of each round are shown separately, but the processing units having the same number have common functions and configurations.
  • the alphabets of the processing units having the same number but different alphabets may be omitted.
  • the processing units having the same numbers with different alphabets may be shared, and one shared processing unit may execute the processing of each round.
  • the registers 106a to 106j may be configured as one register 106.
  • FIG. 4 is a flowchart showing the overall flow of the cryptographic processing in the first embodiment.
  • the input unit 110a receives plaintext data (step S101).
  • the round key generation unit 102 calculates 11 128-bit round keys RK 0 to RK 10 using the secret key stored in the key storage unit 101 (step S102).
  • AddRoundKey105a calculates the intermediate data x 0 is the exclusive OR of the round key RK 0 calculated by 128-bit plaintext data and round-key generation unit 102 which is received by the input section 110a (step S103).
  • the first conversion unit 112a may perform a conversion process of converting the intermediate data x 0 which is output to the converted data y 0, and stores the converted data y 0 in the register 106a (Step S104).
  • Second converter 113a may perform a conversion process for converting y 0 that is stored in the register 106a in the intermediate data x 0, to recover the intermediate data x 0 (step S105).
  • the encryption device 100 determines whether the number of rounds is the 10th round (step S106). When the number of rounds is 1 to 9 (step S106: No), the round functions 103b to 103j agitate the intermediate data output from the second conversion units 113a to 113i (step S107).
  • the intermediate data is stirred by the SubByte 107b, the ShiftRow 108b, the MixColmun 109b, and the AddRoundKey 105b, and the processing result is stored in the register 106b. Since the round functions 103c to 103j of the second to ninth rounds perform the same processing as the round function 103b, description thereof is omitted.
  • the first converters 112b to 112j convert the intermediate data x 1 to x 9 output from the round functions 103b to 103j into converted data y 1 to y 9 and convert the converted data y 1 to y 9 to the registers 106b to 106j (step S104).
  • the second conversion units 113b to 113j restore y 1 to y 9 stored in the registers 106b to 106j into intermediate data x 1 to x 9 (step S105).
  • step S106 If the round number is determined to be 10 round in step S106 (step S106: Yes), stirring the intermediate data x 9 the round function 104 (step S108).
  • the intermediate data is agitated by the SubByte 107k, the ShiftRow 108k, and the AddRoundKey 105k, and the processing result is output to the output unit 110b.
  • the output unit 110b outputs the data x 10 is a processing result of the round function 104 (step S109).
  • the cipher partial processing may be any of SubByte, ShiftRow, MixColumn, and AddRoundKey processing.
  • the first conversion unit 112, the register 106, and the second conversion unit 113 are each subbyte, shiftrow in the encryption apparatus 100.
  • MixColumn, and AddRoundKey processing may be placed anywhere.
  • FIG. 5 is a diagram showing a configuration example arranged between all the processes of SubByte, ShiftRow, MixColumn, and AddRoundKey.
  • FIG. 6 is a diagram for explaining a configuration example in which 128-bit data is processed 8 bits at a time.
  • the processing unit is not limited to 8 bits, and may be 16 bits or 128 bits, or may be a processing unit having a different number of bits.
  • the first converter 112 is divided into first converters 112_0 to 112_15 that convert data of each processing unit.
  • the register 106 is divided into registers 106_0 to 106_15.
  • the second conversion unit 113 is divided into second conversion units 113_0 to 113_15.
  • x0 x 0,0
  • First converter 112_0 ⁇ 112_15 outputs the converted data y 0,0 - y 0, 15 8-bit inputs the x 0,0 - x 0, 15, respectively.
  • the registers 106_0 to 106_15 store the conversion data y 0,0 to y 0,15 output from the first conversion units 112_0 to 112_15.
  • the second conversion units 113_0 to 113_15 receive the conversion data y 0,0 to y 0,15 output from the registers 106_0 to 106_15, and output intermediate data x 0,0 to x 0,15 .
  • x 0,0 to x 0,15 are combined and output as 128-bit intermediate data x 0 .
  • FIG. 7 is a block diagram illustrating a configuration example of the first conversion unit 112, the register 106, and the second conversion unit 113 in which the data processing unit illustrated in FIG. 6 is 8 bits. The same configuration can be applied when the processing unit is other than 8 bits.
  • the first conversion unit 112 includes a function calculation unit 610 that calculates a function F 5 having an inverse function.
  • the register 106 includes a register 602a. Note that the register 106 includes the register 602a for convenience of explanation, which means that the register 106 includes the register 602a as a storage unit (or area) that stores at least one piece of data (xb in FIG. 7). . As will be described later, when storing a plurality of data, the register 106 may include a plurality of registers 602a, 602b,.
  • the second conversion unit 113 includes an inverse function calculation unit 611 for calculating the inverse function F 5 -1 function F 5.
  • the first converter 112 encryption processing during the 8-bit data xa (intermediate data) as input, converts the data xa by the function F 5 to 8-bit data xb (conversion data).
  • the register 602a stores the data xb output from the first conversion unit 112.
  • the second conversion unit 113 restores the 8-bit data xb stored in the register 602a to 8-bit data xa using the function F 5 ⁇ 1 , and outputs the data xa.
  • FIG. 8 is a flowchart showing an overall flow of the data conversion process in the first embodiment.
  • the first conversion unit 112 inputs data xa in the middle of encryption processing (step S201).
  • Function calculating unit 610 converts the data xa by the function F 5 data xb, and outputs the converted data xb (step S202).
  • the register 602a stores the data xb output from the first conversion unit 112 (step S203).
  • the inverse function calculation unit 611 of the second conversion unit 113 converts the data xb stored in the register 602a into the data xa using the function F 5 ⁇ 1 and outputs the data xa (step S204).
  • F (x) Ax (1)
  • F (x) Ax + b (2)
  • F (x) A (x + b) (3)
  • F (x) A (x + b) + c (4)
  • the inverse functions of the function F in the expressions (1), (2), (3), and (4) are the expressions (5), (6), (7), and (8), respectively. is there.
  • the 8-bit data x is an argument of the function in the form of an 8 ⁇ 1 matrix.
  • the matrix A is an 8 ⁇ 8 matrix having an inverse matrix A ⁇ 1
  • the matrices b and c are 8 ⁇ 1 matrices, and any matrix can be selected.
  • the following matrices (9) to (12) can be used as the matrices A, A ⁇ 1 , b, and c.
  • the function F 5 function calculation unit 610 a function of only change the order of the bits of the 8-bit data x, it is desirable, for example, without using a function such as the following equation (13).
  • data obtained by converting the intermediate data of the encryption process with the predetermined function is stored in the register.
  • the power consumption in the register has a correlation with the data stored in the register, but has no correlation with the intermediate data of the encryption process. For this reason, the correlation between the intermediate data of the cryptographic process and the power consumption is removed, and it has resistance to power analysis.
  • the mask method can be broken.
  • the presence / absence of a correlation between power consumption and intermediate data of encryption processing is determined after taking into consideration the influence of the mask using two points of power on the power consumption waveform.
  • ZO-2DPA is a method of creating a new waveform obtained by squaring the value of each point of the power consumption waveform and performing DPA processing with the waveform.
  • the encryption key can be specified when the intermediate data (masked data) to which the mask is added and the mask simultaneously affect the power consumption.
  • the encryption apparatus uses the mask method as a countermeasure against the secondary DPA, and applies data conversion to at least one of the random number used for the mask and intermediate data of the encryption process. To do.
  • the functions of the first converter, the register, and the second converter are different from those of the first embodiment.
  • the other processing units (input unit 110a, output unit 110b, key storage unit 101, round key generation unit 102, AddRoundKey 105a, round function 103, and round function 104 in FIG. 1) are the same as those in the first embodiment.
  • the overall flow of the cryptographic process is the same as that in FIG. For this reason, below, the function of the 1st conversion part of the 2nd embodiment, a register, and the 2nd conversion part, and details of processing by these processing parts are explained.
  • FIG. 9 is a block diagram illustrating an example of the configuration of the first conversion unit 212, the register 206, and the second conversion unit 213 according to the second embodiment.
  • the processing unit is assumed to be 8 bits as in FIG. 7, but the same configuration can be applied when the processing unit is other than 8 bits.
  • the first conversion unit 212 receives the 8-bit data xa in the middle of the encryption process, and outputs 8-bit data xb obtained by converting the data xa and an 8-bit random number r.
  • the first conversion unit 212 includes a random number generation unit 704, a function calculation unit 705a, and an exclusive OR calculation unit 706a.
  • the random number generation unit 704 generates an 8-bit random number r.
  • the function calculation unit 705a converts the generated random number into a converted random number by a predetermined conversion process (first conversion process). For example, the function calculation unit 705a calculates a converted random number F (r) obtained by converting the random number r using a function F that converts an 8-bit input into an 8-bit output.
  • the exclusive OR operation unit 706a calculates the exclusive OR of F 1 (r) and the data xa, masks the data xa with the converted random number F 1 (r), and converts the converted data xb as a processing result. Is output.
  • the register 206 stores the data xb output from the first conversion unit 212 and the random number r.
  • the register 206 includes two registers 602a and a register 602b.
  • the register 602a stores the conversion data xb
  • the register 602b stores the random number r before conversion.
  • the second conversion unit 213 receives the 8-bit data xb and the random number r stored in the register 206, converts them into 8-bit data xa, and outputs the data xa.
  • the second conversion unit 213 includes a function calculation unit 705b and an exclusive OR calculation unit 706b.
  • the function calculation unit 705b calculates a converted random number F 1 (r) obtained by converting the random number r stored in the register 602b by a function F that converts an 8-bit input into an 8-bit output.
  • the exclusive OR operation unit 706b calculates the exclusive OR of F 1 (r) and the converted data xb, thereby canceling the mask by the converted random number F 1 (r), and the intermediate data xa that is the processing result. Is output.
  • the function F is not limited to this, and a non-linear transformation such as a hash function, a linear feedback shift register, and an S-box may be used.
  • the random number generation unit 704 may be arranged outside the first conversion unit 212.
  • the first conversion unit 212 receives the 8-bit data xa in the middle of the encryption process and the random number r generated by the random number generation unit 704, calculates the 8-bit data xa, and outputs it together with the random number r.
  • FIG. 10 is a flowchart showing an overall flow of data conversion processing in the second embodiment.
  • the first conversion unit 212 inputs intermediate data xa for cryptographic processing (step S301).
  • the random number generation unit 704 generates a random number r (step S302).
  • the function calculation unit 705a converts the random number r into F 1 (r) using the function F 1 (step S303).
  • the register 206 stores the conversion data xb in the register 602a and stores the random number r in the register 602b (step S305).
  • the function calculation unit 705b of the second conversion unit 213 converts the random number r stored in the register 602b into F 1 (r) using the function F 1 (step S306).
  • the data (F 1 (r)) obtained by converting the random number r with the function F 1 is used as a mask, and the intermediate data (converted data xb) in which the register 206 is masked is stored. Correlation with power consumption is eliminated. Therefore, it can be resistant to power analysis such as DPA. Since the register 206 stores the masked intermediate data (conversion data xb) and the random number (r) before conversion, the masked intermediate data and the mask do not affect the power consumption at the same time. For this reason, it can be resistant to ZO-2DPA.
  • FIG. 11 is a block diagram illustrating an example of a conversion processing unit that can be applied as at least part of the components of the first conversion unit 212 and the second conversion unit 213.
  • the first conversion unit 212 has a configuration in which one or more conversion processing units included in the conversion processing unit group (conversion processing units 810, 820, 830, 840, 850, and 860) in FIG. 11 are arranged in an arbitrary order. It can be.
  • the first conversion unit 212 includes a random number generation unit that generates a random number to be input to the conversion processing unit arranged first.
  • the second conversion unit 213 arranges one or more of the conversion processing units 810, 820, 830, 840, 852, and 862 in the reverse order of the conversion processing unit of the corresponding first conversion unit 212. At this time, when the conversion processing units 850 and 860 are arranged in the first conversion unit 212, the conversion processing units 852 and 862 are arranged in corresponding positions in the second conversion unit, respectively. If the arrangement of the conversion processing units of the first conversion unit 212 and the second conversion unit 213 is symmetrical about the register 206, the intermediate data of the cryptographic process is restored.
  • the conversion processing unit of the first conversion unit 212 is arranged in the order of the conversion processing units 810, 850, and 860 toward the register 206
  • the conversion processing unit of the second conversion unit 213 is , Conversion processing units 862, 852, and 810 are arranged in this order.
  • the first conversion unit 212 needs to include at least one of the conversion processing unit 810 and the first conversion unit 830. Further, since the attack by ZO-2DPA alone cannot be avoided by the conversion processing unit 830 alone, at least one of other conversion processing units including a process of converting a random number and a process of converting intermediate data using a converted random number converted from the random number Must be provided in the first converter 212.
  • the conversion processing unit 810 includes a function calculation unit 811 and an exclusive OR calculation unit 812.
  • the conversion processing unit 820 includes a function calculation unit 821 and an exclusive OR calculation unit 822.
  • the conversion processing unit 830 includes an exclusive OR operation unit 831.
  • the conversion processing unit 840 includes an exclusive OR operation unit 841.
  • the conversion processing unit 850 includes a function calculation unit 851.
  • the conversion processing unit 852 includes a function calculation unit 853.
  • the conversion processing unit 860 includes a function calculation unit 861.
  • the conversion processing unit 862 includes a function calculation unit 863.
  • F 1 and F 2 calculated by the function calculation units 811 and 821 for example, conversion using a feedback shift register, linear conversion, nonlinear conversion such as S-box, and the like are used.
  • F 5 and F 6 calculated by the function calculation units 851 and 861 functions having inverse functions F 5 ⁇ 1 and F 6 ⁇ 1 are used.
  • the function F in the expressions (1) to (4) described in the first embodiment is used.
  • the function calculation unit 811 receives the data r and outputs a function value F 1 (r).
  • the exclusive OR calculator 812 outputs the exclusive OR x ⁇ F 1 (r) of the data x and F 1 (r) output from the function calculator 811.
  • the function calculation unit 821 receives the data x and outputs a function value F 2 (x).
  • the exclusive OR calculator 822 outputs the exclusive OR r ⁇ F 2 (x) of the data r and F 2 (x) output from the function calculator 821.
  • the exclusive OR operation unit 831 outputs the exclusive OR r ⁇ x of the data r and the data x.
  • the exclusive OR operation unit 841 outputs an exclusive OR x ⁇ r of the data x and the data r.
  • the function calculation unit 851 receives the data x and outputs a function value F 5 (x).
  • the function calculation unit 853 receives the data x and outputs a function value F 5 ⁇ 1 (x).
  • the function calculation unit 861 receives the data r and outputs a function value F 6 (r).
  • the function calculation unit 863 receives the data r and outputs a function value F 6 ⁇ 1 (r).
  • the function calculators 811, 821, 851, and 861 are recommended to return different outputs depending on the input.
  • the exclusive OR operation units 812, 822, 831, and 841 may perform addition using modulo 256, for example, considering 8-bit data as an integer from 0 to 255 instead of the exclusive OR. .
  • modulo 256 for example, considering 8-bit data as an integer from 0 to 255 instead of the exclusive OR.
  • the first conversion unit 212 includes a random number generation unit 704 and a conversion processing unit 810 that receives data x and random number r in the middle of encryption processing as inputs.
  • the second conversion unit 213 includes a conversion processing unit 810 in which the data output from the register 602a is x and the data output from the register 602b is r.
  • FIG. 12 is a block diagram illustrating an example of the configuration of the first conversion unit 212-2 and the second conversion unit 213-2 according to a modification of the second embodiment.
  • the first conversion unit 212-2 includes a random number generation unit 704, a conversion processing unit 830a, and a conversion processing unit 850.
  • the conversion processing unit 830a includes an exclusive OR operation unit 831a.
  • the conversion processing unit 850 includes a function calculation unit 851.
  • the second conversion unit 213-2 includes a conversion processing unit 852 and a conversion processing unit 830b.
  • the conversion processing unit 852 includes a function calculation unit 853.
  • the conversion processing unit 830b includes an exclusive OR operation unit 831b.
  • First conversion unit 212-2 receives 8-bit data xa in the middle of encryption processing, converts data xa into 8-bit data xb using conversion processing unit 830a, and converts data xb using conversion processing unit 850. Are converted into data xc, and data xc and r are output.
  • the register 206 stores the data xc output from the first conversion unit 212-2 in the register 602a, and stores the data r in the register 602b.
  • the second conversion unit 213-2 receives the data xc and r stored in the register 206, converts the data xc into data xb using the conversion processing unit 852, and converts the data xb into 8 bits using the conversion processing unit 852. Data xa and output data xa.
  • the conversion processing unit 830a calculates the exclusive OR of the data xa and r using the exclusive OR operation unit 831a, and outputs the data xb and r that are the calculation results.
  • the conversion processing unit 850 calculates the data xb using the function calculation unit 851 and outputs data xc and r as calculation results. It is assumed that the function F 5 used in the function calculation unit 851 has an inverse function F 5 ⁇ 1 .
  • the conversion processing unit 852 calculates the input data xc using the function calculation unit 853, and outputs data xb and r as calculation results.
  • the function used in the function calculation unit 853 is an inverse function F 5 ⁇ 1 of the function F 5 used in the function calculation unit 851.
  • the conversion processing unit 830b calculates the exclusive OR of the data xb and r using the exclusive OR operation unit 831b, and outputs the data xa that is the calculation result.
  • FIG. 13 is a flowchart illustrating an overall flow of data conversion processing according to the modification of the second embodiment.
  • the first conversion unit 212-2 receives the intermediate data xa for encryption processing (step S401).
  • the random number generation unit 704 generates a random number r and supplies it to the conversion processing unit 830a (step S402).
  • Register 206 stores data xc in register 602a and data r in register 602b (step S405).
  • This modification can also be resistant to power analysis such as DPA and ZO-2DPA.
  • the encryption device As described above, in the encryption device according to the second embodiment, at least one of the masked data intermediate data and the mask is converted and stored in the register. Therefore, the masked data intermediate data and the mask do not affect the power consumption at the same time when the clock is switched (timing of writing data into the register). For this reason, it can be resistant to power analysis including ZO-2DPA.
  • the encryption device uses a plurality of random numbers as a mask.
  • the third embodiment can also be configured by using the components shown in FIG.
  • the third embodiment also differs from the first and second embodiments only in the functions of the first conversion unit, the register, and the second conversion unit. For this reason, below, the function of the 1st conversion part of the 3rd embodiment, a register, and the 2nd conversion part, and the details of processing by these processing parts are explained.
  • FIG. 14 is a block diagram illustrating an example of the configuration of the first converter 312, the register 306, and the second converter 313 according to the third embodiment.
  • the first conversion unit 312 includes a random number generation unit 1004, a conversion processing unit 810a, and a conversion processing unit 810b.
  • the random number generation unit 1004 generates two random numbers r 1 and r 2 and supplies them to the conversion processing units 810a and 810b, respectively.
  • the conversion processing unit 810a converts 8-bit data xa into 8-bit data xb.
  • the conversion processing unit 810b converts the data xb into data xc.
  • the first conversion unit 312 and outputs such data xc obtained by the r 1 and r 2.
  • the register 306 includes a register 602a, a register 602b, and a register 602c.
  • the register 602a stores the data xc output from the first conversion unit 312.
  • Register 602b stores data r 1.
  • Register 602c stores data r 2.
  • the second conversion unit 313 includes a conversion processing unit 810c and a conversion processing unit 810d.
  • the second converter 313 receives data xc, r 1 , r 2 stored in the register 306 as input.
  • the conversion processing unit 810c restores the data xc to the data xb.
  • the conversion processing unit 810d restores the data xb to the data xa and outputs the data xa.
  • the conversion processing units 810a to 810d included in the first conversion unit 312 or the second conversion unit 313 include function calculation units 811a to 811d and exclusive OR calculation units 812a to 812d.
  • functions of the conversion processing units 810a to 810d will be described.
  • An exclusive OR xa xb ⁇ fa is calculated using the arithmetic unit 812d, and data xa is output.
  • the function calculation units 811a and 811d use the same function, and the function calculation units 811b and 811c use the same function.
  • FIG. 15 is a flowchart illustrating an overall flow of data conversion processing according to the third embodiment.
  • the first conversion unit 312 receives intermediate data xa for cryptographic processing as an input (step S501).
  • the random number generation unit 1004 generates random numbers r 1 and r 2 and supplies them to the conversion processing units 810a and 810b (step S502).
  • Exclusive OR operation unit 812a outputs the calculation result xb to the conversion processing unit 810b, and outputs the data r 1 to the register 602b.
  • XOR unit 812b outputs the calculation result xc in the register 602a, and outputs the data r 2 to the register 602c.
  • the register 306, the data xc of the first conversion unit 312 is output and stored in the register 602a, the data r 1 of the first converter 312 has output is stored in register 602b, the first conversion unit 312 has output storing data r 2 in the register 602c (step S507).
  • FIG. 16 is a block diagram illustrating an example of the configuration of the first conversion unit 312-2, the register 306, and the second conversion unit 313-2 according to a modification of the third embodiment.
  • the first conversion unit 312-2 includes a random number generation unit 1004, a conversion processing unit 810a, and a conversion processing unit 830a.
  • the random number generation unit 1004 generates two random numbers r 1 a and r 2 and supplies them to the conversion processing units 810 a and 830 a.
  • the conversion processing unit 810a converts 8-bit data xa into 8-bit data xb.
  • the conversion processing unit 830a converts the data r 1 a into data r 1 b and outputs data xb, r 1 b, and r 2 .
  • the register 306 stores the data xb output from the first conversion unit 312-2 in the register 602a, stores the data r1b in the register 602b, and stores the data r2 in the register 602c.
  • the second conversion unit 313-2 includes a conversion processing unit 830b and a conversion processing unit 810b.
  • the second conversion unit 313-2 receives the data xb, r 1 b, r 2 stored in the register 306.
  • Conversion processing unit 830b restores the r1b data r1a with r 2.
  • the conversion processing unit 810b restores the data xa using the data xb and r1a, and outputs the data xa.
  • the conversion processing units 810a and 810b include function calculation units 811a and 811b and exclusive OR calculation units 812a and 812b.
  • the conversion processing units 830a and 830b include exclusive OR operation units 831a and 830b.
  • FIG. 17 is a flowchart illustrating an overall flow of data conversion processing according to the modification of the third embodiment.
  • the first conversion unit 312-2 accepts the intermediate data xa of the encryption process as an input (step S601).
  • the random number generation unit 1004 generates random numbers r 1 a and r 2 and supplies them to the conversion processing units 810a and 830a (step S602).
  • the function calculation unit 811a of the conversion processing unit 810a calculates the function value fa of the random number r 1 a (step S603).
  • the exclusive OR operation unit 812a outputs the calculation result xb to the register 602a and outputs the data r 1 a to the conversion processing unit 830a.
  • the exclusive OR operation unit 831a outputs the calculation result r 1 b to the register 602b and outputs the data r2 to the register 602c.
  • the register 306 stores the data xb output from the first conversion unit 312 in the register 602a, the data r1b output from the first conversion unit 312-2 in the register 602b, and the first conversion unit 312-2. There stores outputs the data r 2 in the register 602c (step S606).
  • r 1 b ⁇ r 2 is calculated (step S607) and output to the conversion processing unit 810a.
  • the function calculation unit 811b of the conversion processing unit 810b calculates the function value fa of the data r 1 a output from the conversion processing unit 830b (step S608).
  • the encryption apparatus according to the third embodiment can be resistant to power analysis such as DPA and ZO-2DPA as in the second embodiment.
  • the fourth embodiment also differs from the first to third embodiments only in the functions of the first conversion unit, the register, and the second conversion unit. For this reason, below, the function of the 1st conversion part of a 4th embodiment, a register, and the 2nd conversion part, and the details of processing by these processing parts are explained.
  • FIG. 18 is a block diagram illustrating an example of the configuration of the first conversion unit 412 and the second conversion unit 413 according to the fourth embodiment.
  • the first conversion unit 412 includes a random number generation unit 704, a conversion processing unit 850, and a conversion processing unit 810.
  • the conversion processing unit 850 includes a function calculation unit 851.
  • the conversion processing unit 810 includes a function calculation unit 811 and an exclusive OR calculation unit 812.
  • the first conversion unit 412 receives the data xa being encrypted.
  • the random number generation unit 704 generates a random number r and supplies it to the conversion processing unit 850.
  • the conversion processing unit 850 converts 8-bit data xa into data xb.
  • the conversion processing unit 810 converts the data xb into data xc and outputs data xc and r.
  • the register 206 stores the data xc output from the first conversion unit 412 in the register 602a, and stores the data r in the register 602b.
  • the second conversion unit 413 includes a conversion processing unit 852 and a conversion processing unit 830.
  • the conversion processing unit 852 includes a function calculation unit 853.
  • the conversion processing unit 830 includes an exclusive OR operation unit 831.
  • the second conversion unit 413 receives data xc and r stored in the register 206 as inputs.
  • the conversion processing unit 852 converts the data xc into data xd.
  • the conversion processing unit 830 restores the data xd to the data xa and outputs the data xa.
  • the conversion processing unit 850 calculates the input data xa using the function calculation unit 851 and outputs the calculation result xb and the data r.
  • the conversion processing unit 810 receives the data xb in the middle of the encryption process and the random number r generated by the random number generation unit 704 as input, calculates the function value f of the data r using the function calculation unit 811, and performs the exclusive OR calculation unit 812. Is used to calculate the exclusive logical sum xc of the data xb and f, and the data xc and r are output.
  • the conversion processing unit 852 calculates the input data xc using the function calculation unit 853, and outputs the calculation result xd.
  • the conversion processing unit 830 restores the data xa by calculating the exclusive OR of the data xd and r using the exclusive OR operation unit 831 and outputs the data xa.
  • the function F 7 of the function calculation units 811 and 851 is a homomorphic mapping and has an inverse mapping.
  • the function F 7 of the function calculation units 811 and 851 is the same function.
  • the function of the function calculation unit 853 is the inverse map F 7 ⁇ 1 of the homomorphic map F 7 .
  • the function F 7 and the function F 7 ⁇ 1 for example, the following expressions (15) and (16) are used.
  • the 8-bit data x is an argument of the function in the form of an 8 ⁇ 1 matrix.
  • FIG. 19 is a flowchart illustrating an overall flow of data conversion processing according to the fourth embodiment.
  • the first conversion unit 412 receives the intermediate data xa of the cryptographic process as an input (step S701).
  • the random number generation unit 704 generates a random number r and supplies it to the conversion processing unit 850 (step S702).
  • the function calculation unit 851 of the conversion processing unit 850 calculates the function value xb of the intermediate data xa for encryption processing (step S703).
  • Function calculating unit 811 of the conversion processing unit 810, random number generation unit 704 calculates the function value f of the generated random number r by using the function F 7 (step S704).
  • the register 206 stores the data xc output from the first conversion unit 412 in the register 602a, and stores the data r output from the first conversion unit 412 in the register 602b (step S706).
  • the function calculation unit 853 of the conversion processing unit 852 calculates the function value xd of the data xc stored in the register 206 using the function F 7 ⁇ 1 (step S707), and the calculation result xd and the data r is output to the conversion processing unit 830.
  • the exclusive OR operation unit 831 of the conversion processing unit 830 restores and outputs the data xa by calculating the exclusive OR of the data xd and the data r output from the conversion processing unit 852 (step S708). ).
  • the first conversion unit 412 and the second conversion unit 413 can be generated by the methods described in the following (1) to (4).
  • the first conversion unit 412 any one of the plurality of first conversion units 412a, 412b, 412c,... Is selected.
  • the second conversion unit 413 an arbitrary one is selected from the plurality of second conversion units 413a, 413b, 413c,.
  • the first conversion unit 412a generates the random number generation unit 704 and one or more of the conversion processing units 810, 820, 830, 840, 850, and 860 in FIG. 11 described above in an arbitrary order. Is done.
  • the first conversion units 412b, 412c,... Having the same input / output are replaced by the following replacement rules ((A-1) to (A-3), (B-1) to (B-8), And (C-1) to (C-8)).
  • the functions F 1 to F 6 in FIGS. 11, 20 and 21 are assumed to be composed of the same homomorphic map F and its inverse map F ⁇ 1 .
  • 20 and 21 are block diagrams illustrating an example of a conversion processing unit that can be applied as at least part of the components of the first conversion unit 412 and the second conversion unit 413, in addition to the conversion processing unit of FIG. .
  • A-1) Continuous conversion processing unit 810 and conversion processing unit 830 are interchangeable (A-2) Continuous conversion processing unit 820 and conversion processing unit 840 are interchangeable (A-3) Continuous conversion processing unit 850 and
  • the conversion processing unit 860 can be replaced (B-1) When the conversion processing unit 850 moves before the previous conversion processing unit 810, the conversion processing unit 810 changes to the conversion processing unit 814 (B-2) immediately after the conversion processing unit 850 (B-3) When the conversion processing unit 850 moves before the previous conversion processing unit 820, the conversion processing unit 820 converts the conversion processing unit 820 into the conversion processing unit 824. (B-4) When the conversion processing unit 850 moves after the immediately following conversion processing unit 820, the conversion processing unit 820 changes to the conversion processing unit 825 (B-5).
  • the conversion processing unit 830 When moving before the conversion processing unit 830, the conversion processing unit 830 changes to the conversion processing unit 834 (B-6). When the conversion processing unit 850 moves after the immediately following conversion processing unit 830, the conversion processing unit 830 moves to the conversion processing unit 835. Change (B-7) When the conversion processing unit 850 moves before the immediately preceding conversion processing unit 840, the conversion processing unit 840 changes to the conversion processing unit 844. (B-8) The conversion processing unit 850 changes to the conversion processing unit 840 immediately after.
  • the conversion processing unit 840 changes to the conversion processing unit 845 when moving later (C-1) When the conversion processing unit 860 moves before the previous conversion processing unit 810, the conversion processing unit 810 changes to the conversion processing unit 816 (C-2 ) When the conversion processing unit 860 moves after the immediately following conversion processing unit 810, the conversion processing unit 810 changes to the conversion processing unit 817. (C-3) When the conversion processing unit 860 moves before the immediately preceding conversion processing unit 820.
  • Conversion processing unit 820 changes to conversion processing unit 826 (C-4) When conversion processing unit 860 moves after conversion processing unit 820 immediately after that, conversion processing unit 820 changes to conversion processing unit 827 (C-5) Conversion processing unit When 860 moves before the immediately preceding conversion processing unit 830, the conversion processing unit 830 changes to the conversion processing unit 836 (C-6). When the conversion processing unit 860 moves after the immediately following conversion processing unit 830, the conversion processing unit 830 converts Change to the processing unit 837 (C-7) When the conversion processing unit 860 moves before the immediately preceding conversion processing unit 840, the conversion processing unit 840 changes to the conversion processing unit 846 (C-8). When moving after the processing unit 840, the conversion processing unit 840 changes to a conversion processing unit 847.
  • the second conversion units 413a, 413b, 413c,... are arranged in the reverse order of the conversion processing units in the first conversion units 412a, 412b, 412c,.
  • a conversion processing unit 852 and a conversion processing unit 862 are respectively arranged at the positions.
  • the 1st conversion part 412 and the 2nd conversion part 413 of FIG. 18 represent an example produced
  • the homomorphic map F has an inverse map F- 1 .
  • the homomorphic map F uses a function F (x) of the following equation (17).
  • the inverse map F ⁇ 1 uses a function F ⁇ 1 (x) of the following equation (18).
  • F (x) Ax (17)
  • F ⁇ 1 (x) A ⁇ 1 x (18)
  • the 8-bit data x is an argument of the function in the form of an 8 ⁇ 1 matrix.
  • the matrix A is an 8 ⁇ 8 matrix having an inverse matrix A ⁇ 1 , and an arbitrary matrix can be selected.
  • the following matrices (19) and (20) can be used as the matrix A and the inverse matrix A ⁇ 1 , respectively.
  • the encryption apparatus uses the homomorphism mapping, and has resistance to power analysis such as DPA and ZO-2DPA even when the conversion before and after the register is not symmetric. be able to. Moreover, since the conversion method is not symmetrical, the conversion method can be prevented from being analyzed.
  • the encryption device selects one first conversion unit and one second conversion unit from the plurality of first conversion units and the plurality of second conversion units, respectively, as the random number generation unit 704. Used for data conversion.
  • the fifth embodiment also differs from the first to fourth embodiments only in the functions of the first conversion unit, the register, and the second conversion unit. For this reason, below, the function of the 1st conversion part of a 5th embodiment, a register, and the 2nd conversion part, and details of processing by these processing parts are explained.
  • FIG. 22 is a block diagram illustrating an example of the configuration of the first conversion unit 512 and the second conversion unit 513 according to the fifth embodiment.
  • the first conversion unit 512 includes a random number generation unit 1304, a plurality of first conversion calculation units 1301a and 1301b, and a first selection unit 1305.
  • the second conversion unit 513 includes second conversion calculation units 1303a and 1303b corresponding to the first conversion calculation units 1301a and 1301b, respectively, and a second selection unit 1306.
  • the first conversion unit 512 can use any of the first conversion units shown in the first to fourth embodiments as the first conversion calculation units 1301a and 1301b.
  • the first conversion operation units 1301a and 1301b receive data x in the middle of encryption processing as input, and first input data ya and data yb obtained by concatenating the data converted from the data x and the data used for the conversion (such as a random number r), respectively.
  • the data is output to the selection unit 1305.
  • the random number generation unit 1304 generates a random number r ( ⁇ ⁇ a, b ⁇ ) as control data of the first selection unit 1305, and outputs it to the first selection unit 1305 and the register 602b.
  • the first selection unit 1305 selects one of the output data ya and yb of the first conversion calculation units 1301a and 1301b according to the random number r generated by the random number generation unit 1304, and selects the selected data (referred to as data y). Is output to the register 602a.
  • the random number generation unit 1304 generates a random number r ⁇ ⁇ a, b ⁇
  • the first selection unit 1305 selects the data ya when the value of the random number r is “a”, and the value of the random number r is “b” ", The data yb is selected.
  • the register 206 stores the data y output from the first selection unit 1305 in the register 602a, and stores the random number r generated by the random number generation unit 1304 in the register 602b.
  • the second conversion unit 513 includes second conversion calculation units 1303a and 1303b that perform inverse conversion processing corresponding to the first conversion calculation units 1301a and 1301b, respectively.
  • Second conversion operation units 1303a and 1303b receive data y stored in register 602a as input, and restore data xa and data xb from data y.
  • Second conversion operation units 1303a and 1303b output data xa and data xb, which are calculation results, to second selection unit 1306, respectively.
  • the second selection unit 1306 selects one of the output data xa and xb of the second conversion calculation units 1303a and 1303b with reference to the data r output from the register 602b, and selects the selected data (referred to as data x). Is output.
  • the second selection unit 1306 is configured to select the data xa when the first selection unit 1305 selects the data ya, and to select the data xb when the first selection unit 1305 selects the data yb. For example, in the case of the above example in which the random number generation unit 1304 generates the random number r ⁇ ⁇ a, b ⁇ , the second selection unit 1306 selects the data xa when the value of the random number r is “a”, and the random number r When the value of “b” is “b”, the data xb is selected.
  • FIG. 23 is a flowchart illustrating an overall flow of data conversion processing according to the fifth embodiment.
  • the first conversion unit 512 receives the intermediate data x of the cryptographic process as an input (step S801).
  • the first conversion calculation unit 1301a converts the data x and outputs the conversion data ya to the first selection unit 1305.
  • the first conversion calculation unit 1301a performs conversion using a random number generated internally, the first conversion calculation unit 1301a outputs the conversion data ya including the random number used for the conversion.
  • the first conversion calculation unit 1301b converts the data x and outputs the conversion data yb to the first selection unit 1305 (step S802).
  • the random number generation unit 1304 generates a random number r ( ⁇ ⁇ a, b ⁇ ) as control data of the first selection unit 1305 and supplies the random number r to the first selection unit 1305 and the register 602b (step S803).
  • the register 206 stores data y in the register 602a and stores a random number r in the register 602b (step S807).
  • the second conversion calculation unit 1303a converts the data y and outputs it as the data xa to the second selection unit 1306.
  • the second conversion calculation unit 1303b converts the data y and outputs the data xb to the second selection unit 1306 (step S808).
  • first conversion operation units 1301 in the first conversion unit 512 the first conversion operation unit 1301a and the first conversion operation unit 1301b
  • second conversion operation unit 1301 in the second conversion unit 513 The case where there are two conversion operation units 1303 (second conversion operation unit 1303a and second conversion operation unit 1303b) has been described.
  • the number of the first conversion calculation unit 1301 and the second conversion calculation unit 1303 is not limited to this, and the number of the first conversion calculation unit 1301 and the second conversion calculation unit 1303 can be similarly realized even when there are three or more.
  • the first conversion unit and the second conversion unit are changed in order to randomly change the configurations in the first conversion unit and the second conversion unit for each encryption. Analysis of the conversion unit can be prevented.
  • FIG. 24 is an explanatory diagram of a hardware configuration of the encryption device according to the first to fifth embodiments.
  • the encryption device includes a control device such as a CPU (Central Processing Unit) 51, a storage device such as a ROM (Read Only Memory) 52 and a RAM (Random Access Memory) 53, A communication I / F 54 that communicates by connecting to a network, and a bus 61 that connects each unit are provided.
  • a control device such as a CPU (Central Processing Unit) 51
  • a storage device such as a ROM (Read Only Memory) 52 and a RAM (Random Access Memory) 53
  • a communication I / F 54 that communicates by connecting to a network
  • a bus 61 that connects each unit are provided.
  • the program executed by the encryption apparatus according to the first to fifth embodiments is provided by being incorporated in advance in the ROM 52 or the like.
  • the program executed by the encryption device is a file in an installable or executable format, and is a CD-ROM (Compact Disk Read Only Memory), a flexible disk (FD), You may comprise so that it may record and provide on computer-readable recording media, such as CD-R (Compact Disk Recordable) and DVD (Digital Versatile Disk).
  • CD-ROM Compact Disk Read Only Memory
  • FD flexible disk
  • the program executed by the encryption apparatus according to the first to fifth embodiments is stored on a computer connected to a network such as the Internet and is provided by being downloaded via the network. May be.
  • the program executed by the encryption apparatus according to the first to fifth embodiments may be provided or distributed via a network such as the Internet.
  • the program executed by the encryption device according to the first to fifth embodiments can cause the computer to function as each unit (first conversion unit, second conversion unit, etc.) of the encryption device described above.
  • the CPU 51 can read a program from a computer-readable storage medium onto a main storage device and execute the program.
  • the present invention is not limited to the above-described embodiment as it is, and can be embodied by modifying the constituent elements without departing from the scope of the invention in the implementation stage.
  • various inventions can be formed by appropriately combining a plurality of constituent elements disclosed in the above embodiments. For example, some components may be deleted from all the components shown in the embodiment. Furthermore, constituent elements over different embodiments may be appropriately combined.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

 電力解析に耐性を持たせるため、平文から第1中間データを計算するAddRoundKey105aと、第i中間データと暗号化鍵とに基づいて第i+1中間データを計算するラウンド関数部103と、第j中間データを第j変換データに変換してレジスタ106に記憶する第1変換部112と、レジスタ106に記憶された第j変換データを第j中間データに変換する第2変換部113と、第N中間データから暗号文を計算するラウンド関数104と、を備え、ラウンド関数103は、第2変換部113により第j変換データから変換された第j中間データと暗号化鍵とに基づいて第j+1中間データを計算する処理をj=1からj=N-1まで繰り返す。

Description

暗号化装置
 本発明は、暗号化装置に関する。
 共通鍵暗号は、暗号化鍵に基づいて、平文に暗号部分処理を行って中間データを計算し、複数の暗号部分処理を繰り返して中間データを更新し、最終的な中間データに暗号部分処理を行って暗号文を計算する技術である。暗号モジュールが動作する際の処理時間、消費電力、および放射電磁波などの物理的な情報を利用して暗号化鍵を解析するサイドチャネル攻撃が各種考案されている。サイドチャネル攻撃の中でも、消費電力情報を用いた解析手法として、単純電力解析(Simple Power Analysis、SPA)、差分電力解析(Differential Power Analysis、DPA)、および、相関電力解析(Correlation Power Analysis、CPA)が挙げられる。DPAは、暗号化鍵の一部を予測し、予測した暗号化鍵と平文から計算される中間データと、暗号処理中の消費電力とを統計分析することにより、予測した暗号化鍵の正誤を判定し、暗号化鍵を特定する攻撃手法である。DPAに関しては、さらに2次DPAおよびZero Offset2次DPA(ZO-2DPA)と呼ばれる解析手法が提案されている(非特許文献1参照)。
 DPAやCPAの対策としては、マスク法が知られている。マスク法は、暗号処理の中間データに対してマスクと呼ばれる乱数を加算し暗号処理を続けることで、消費電力と中間データとの相関をなくす技術である。
Jason Waddle and David Wagner: Towards Efficient Second-Order Power Analysis, Cryptographic Hardware and Embedded Systems - CHES 2004, LNCS 3156, pp.1-15, 2004.
 CMOS回路でのレジスタの消費電力は、連続したクロックでのデータの遷移ビット数に依存する。前述の暗号処理の中間データをレジスタに記憶して平文から暗号文を計算する暗号化装置においては、消費電力は、連続した暗号部分処理が出力する中間データのハミング距離と強い相関がある。そのため、暗号処理の中間データをそのままレジスタに記憶すると、消費電力と中間データを統計分析することにより暗号化鍵を解析されるおそれがある。したがって、電力解析に対する耐性を向上させるためには、レジスタでの消費電力が中間データと相関を持たないよう、レジスタを保護する必要がある。
 本発明は、上記に鑑みてなされたものであって、電力解析に耐性を持つ暗号化装置を提供することを目的とする。
 本発明は、暗号化鍵を用いて暗号化処理を行い平文から暗号文を計算する暗号化装置であって、レジスタと、平文を受け付ける入力部と、前記平文から第1中間データを計算する第1暗号部分処理部と、第i中間データ(iは1以上N未満の整数、Nは予め定められた2以上の整数)と前記暗号化鍵とに基づいて第i+1中間データを計算する第2暗号部分処理部と、第j中間データ(jは1以上N以下の整数)を第j変換データに変換して前記レジスタに記憶する第1変換部と、前記レジスタに記憶された前記第j変換データを前記第j中間データに変換する第2変換部と、前記第N中間データから暗号文を計算する第3暗号部分処理部と、前記暗号文を出力する出力部と、を備え、前記第2暗号部分処理部は、前記第2変換部により前記第j変換データから変換された前記第j中間データと前記暗号化鍵とに基づいて第j+1中間データを計算する処理をj=1からj=N-1まで繰り返す、ことを特徴とする。
 本発明によれば、電力解析に耐性を持つ暗号化装置を提供することができるという効果を奏する。
第1の実施の形態にかかる暗号化装置のブロック図。 ラウンド関数のブロック図。 ラウンド関数のブロック図。 第1の実施の形態における暗号処理の全体の流れを示すフローチャート。 SubByte、ShiftRow、MixColumn、およびAddRoundKeyのすべての処理間に配置した構成図。 128ビットのデータを8ビットずつ処理する構成例を示す図。 第1の実施の形態にかかる処理単位が8ビットである第1変換部、レジスタ、および第2変換部のブロック図。 第1の実施の形態におけるデータ変換処理の全体の流れを示すフローチャート。 第2の実施の形態にかかる第1変換部、レジスタ、および第2変換部のブロック図。 第2の実施の形態におけるデータ変換処理の全体の流れを示すフローチャート。 変換処理部の一例を示すブロック図。 第2の実施の形態の変形例にかかる第1変換部および第2変換部のブロック図。 第2の実施の形態の変形例におけるデータ変換処理の全体の流れを示すフローチャート。 第3の実施の形態にかかる第1変換部、レジスタ、および第2変換部のブロック図。 第3の実施の形態におけるデータ変換処理の全体の流れを示すフローチャート。 第3の実施の形態の変形例にかかる第1変換部、レジスタ、および第2変換部のブロック図。 第3の実施の形態の変形例におけるデータ変換処理の全体の流れを示すフローチャート。 第4の実施の形態にかかる第1変換部および第2変換部のブロック図。 第4の実施の形態におけるデータ変換処理の全体の流れを示すフローチャート。 変換処理部の一例を示すブロック図。 変換処理部の一例を示すブロック図。 第5の実施の形態にかかる第1変換部および第2変換部のブロック図。 第5の実施の形態におけるデータ変換処理の全体の流れを示すフローチャート。 第1~第5の実施の形態にかかる暗号化装置のハードウェア構成図。
 以下に添付図面を参照して、この発明にかかる暗号化装置の好適な実施の形態を詳細に説明する。
 (第1の実施の形態)
 第1の実施の形態にかかる暗号化装置は、暗号処理の中間データを外部から予測できない保護データに変換してレジスタに記憶し、読み出す時に逆変換する。このようにレジスタに記憶されるデータを保護することにより、暗号処理を実行する際の電力消費量を計測することにより暗号モジュールに埋め込まれている暗号化鍵を解析する攻撃方法に対して、より安全な暗号化装置を提供することができる。
 以下では、鍵長を128ビットとしたAES(Advanced Encryption Standard)方式の暗号化装置に適用した例について説明する。また、以下では暗号部分処理としてAESのラウンド関数等を用いた例を説明する。なお、暗号部分処理とは、平文から暗号文を計算する暗号化処理の過程で実行される処理を表す。AESの場合は、例えばSubByte、ShiftRow、MixColumn、およびAddRoundKey、並びに、SubByte、ShiftRow、MixColumn、およびAddRoundKeyを備えるラウンド関数が暗号部分処理に相当する。
 鍵長は128ビットに限られず、192ビットや256ビットの鍵長でも同様に適用できる。また、暗号部分処理を繰り返すことなどにより、N個(Nは予め定められた2以上の整数)の中間データをレジスタ等の記憶部に記憶して暗号処理を実行する方式であれば他のあらゆる暗号アルゴリズムによる暗号化装置にも適用できる。例えば、DES(Data Encryption Standard)やHierocryptなどにより暗号化する暗号化装置にも適用できる。
 図1は、第1の実施の形態にかかる暗号化装置100の構成の一例を示すブロック図である。図1に示すように、暗号化装置100は、入力部110aと、出力部110bと、鍵記憶部101と、ラウンド鍵生成部102と、AddRoundKey105aと、ラウンド関数103b~103jおよび104と、第1変換部112a~112jと、レジスタ106a~106jと、第2変換部113a~113jと、を備えている。
 入力部110aは、外部から平文データの入力を受け付ける。出力部110bは、処理結果の暗号文を外部に出力する。なお、入力部110aと出力部110bの機能を共に有する入出力部110を備えるように構成してもよい。
 鍵記憶部101は、128ビットの秘密鍵を記憶する。鍵記憶部101は、HDD(Hard Disk Drive)、光ディスク、メモリカード、RAM(Random Access Memory)などの一般的に利用されているあらゆる記憶媒体により構成することができる。
 ラウンド鍵生成部102は、鍵記憶部101が記憶する秘密鍵から11個の128ビットのラウンド鍵RK~RK10を計算し、AddRoundKey105aおよびラウンド関数103b~103jに供給する。ラウンド鍵RK~RK10は、AddRoundKey105aが実行される以前に予め計算してもよいし、ラウンド関数103b~103jおよび104と並行に計算しても良い。
 AddRoundKey105a(第1暗号部分処理部)は、平文データに対してAES暗号で定められているAddRoundKey変換処理を行い、中間データxを出力する。
 ラウンド関数103b~103j(第2暗号部分処理部)および104(第3暗号部分処理部)は、平文データまたはレジスタ106a~106jが記憶するデータを、ラウンド鍵を用いて攪拌する。図2は、ラウンド関数103b~103jの構成例を示すブロック図である。なお、図2は、ラウンド関数103bの構成を例示しているが、ラウンド関数103c~103jも同様の構成を備えている。
 図2に示すように、ラウンド関数103bは、SubByte107bと、ShiftRow108bと、MixColumn109bと、AddRoundKey105bとを備えている。
 SubByte107bは、レジスタ106aが記憶するデータを8ビットごとに非線形変換する。ShiftRow108bは、SubByte107bの処理結果を8ビットをブロック単位として並べ替える。MixColmun109bは、ShiftRow108bの処理結果の32ビットごとに線形変換を実行する。AddRoundKey105bは、MixColmun109bの処理結果とラウンド鍵生成部102によって計算されるラウンド鍵RKの排他的論理和を計算し、その処理結果をレジスタ106bに記憶する。
 なお、ラウンド関数103c~103jも同様の手順により、前のラウンドで出力されレジスタ106b~106iに記憶されたデータを攪拌し、その処理結果をレジスタ106c~106jに記憶する。
 図3は、ラウンド関数104の構成例を示すブロック図である。図3に示すように、ラウンド関数104は、SubByte107kと、ShiftRow108kと、AddRoundKey105kとを備えている。
 SubByte107kは、レジスタ106jが記憶するデータを8ビットごとに非線形変換する。ShiftRow108kは、SubByte107kの処理結果を8ビットをブロック単位として並べ替える。AddRoundKey105kは、ShiftRow109kの処理結果とラウンド鍵生成部102が計算するRK10の排他的論理和を計算し、その処理結果を出力部110bから出力する。
 上述のように、AddRoundKey105aは、中間データx(第1中間データ)を出力する。また、ラウンド関数103b~103jは、それぞれ中間データx~x(第2中間データ~第10中間データ)を出力する。このように、各ラウンドで生成されるデータを以下では中間データという。なお、ラウンド関数104から出力されるデータx10は暗号文として出力される。
 第1変換部112a~112jは、AddRoundKey105aおよびラウンド関数103b~103jが出力した中間データx~xを、予め定められた変換処理により変換する。以下では、第1変換部112a~112jにより変換された中間データを変換データという。第1変換部112a~112jは、それぞれ中間データx~xを変換した変換データy~yをレジスタ106a~106jに出力する。
 レジスタ106a~106jは、それぞれ変換データy~yを記憶する。
 第2変換部113a~113jは、レジスタ106a~106jが記憶するデータy~yを、予め定められた変換処理で変換することにより中間データx~xを復元し、次のラウンド関数に入力する。第2変換部113a~113jによる変換処理は、第1変換部112a~112jによる変換処理の逆変換に相当する変換処理である。すなわち、第1変換部112a~112jによる変換後のデータを第1変換部112a~112jによる変換前のデータに変換する変換処理である。
 なお、図1では、各ラウンドの処理を実行する処理部を分けて記載しているが、同一番号の処理部はそれぞれ共通の機能および構成を備えている。以下では、アルファベットが異なる同一番号の処理部のアルファベットを省略して説明する場合がある。また、アルファベットが異なる同一番号の処理部を共通化し、共通化した1つの処理部が各ラウンドの処理を実行するように構成してもよい。例えば、レジスタ106a~106jを1つのレジスタ106として構成してもよい。
 次に、このように構成された第1の実施の形態にかかる暗号化装置100による暗号処理について図4を用いて説明する。図4は、第1の実施の形態における暗号処理の全体の流れを示すフローチャートである。
 まず、入力部110aが平文データを受け付ける(ステップS101)。次に、ラウンド鍵生成部102が、鍵記憶部101に記憶される秘密鍵を用いて11個の128ビットのラウンド鍵RK~RK10を計算する(ステップS102)。その後、AddRoundKey105aが、入力部110aで受け付けた128ビットの平文データとラウンド鍵生成部102によって計算されたラウンド鍵RKの排他的論理和である中間データxを計算する(ステップS103)。
 次に、第1変換部112aが、出力された中間データxを変換データyに変換する変換処理を行い、変換データyをレジスタ106aに記憶する(ステップS104)。第2変換部113aが、レジスタ106aに記憶されているyを中間データxに変換する変換処理を行い、中間データxを復元する(ステップS105)。暗号化装置100は、ラウンド数が10ラウンド目か否かを判定する(ステップS106)。ラウンド数が1~9ラウンド目の場合(ステップS106:No)、ラウンド関数103b~103jが、第2変換部113a~113iが出力した中間データを攪拌する(ステップS107)。
 ラウンド関数103bでは、上述のように、SubByte107b、ShiftRow108b、MixColmun109b、および、AddRoundKey105bにより中間データが攪拌され、処理結果がレジスタ106bに記憶される。2~9ラウンド目のラウンド関数103c~103jは、ラウンド関数103bと同様の処理を行うため、説明は省略する。
 次に、第1変換部112b~112jが、ラウンド関数103b~103jが出力した中間データx~xを変換データy~yに変換し、変換データy~yをレジスタ106b~106jに記憶する(ステップS104)。次に、第2変換部113b~113jが、レジスタ106b~106jが記憶するy~yを中間データx~xに復元する(ステップS105)。
 ステップS106でラウンド数が10ラウンド目であると判定された場合(ステップS106:Yes)、中間データxをラウンド関数104で攪拌する(ステップS108)。ラウンド関数104では、上述のように、SubByte107k、ShiftRow108k、および、AddRoundKey105kにより中間データが攪拌され、処理結果が出力部110bに出力される。
 出力部110bは、ラウンド関数104の処理結果であるデータx10を出力する(ステップS109)。
 なお、暗号部分処理を、SubByte、ShiftRow、MixColumn、およびAddRoundKey処理のいずれかとしてもよく、第1変換部112、レジスタ106、および第2変換部113は、暗号化装置100内の各SubByte、ShiftRow、MixColumn、およびAddRoundKey処理間のいずれに配置しても良い。図5は、SubByte、ShiftRow、MixColumn、およびAddRoundKeyのすべての処理間に配置した構成例を示す図である。
 また、第1変換部112、レジスタ106、および第2変換部113が、データを複数の処理単位に分割した処理単位ごとに、上述の処理を実行するように構成してもよい。図6は、128ビットのデータを8ビットずつ処理する構成例を説明するための図である。なお、処理単位は8ビットに限られず、16ビットや128ビットとしてもよいし、ビット数が異なる処理単位としてもよい。
 図6に示すように、第1変換部112は、各処理単位のデータを変換する第1変換部112_0~112_15に分割される。同様に、レジスタ106は、レジスタ106_0~106_15に分割される。また、第2変換部113は、第2変換部113_0~113_15に分割される。
 1ラウンド目の処理(i=0)について図6を用いて説明する。2ラウンド以降も同様に処理される(i=1~9)。暗号処理途中の128ビットのデータxは、8ビットずつ16個のデータx0,0、x0,1、・・・、x0,15に分割される。
 x0= x0,0||x0,1||・・・||x0,15(||は分割を表す)
 第1変換部112_0~112_15は、それぞれx0,0~x0,15を入力とし8ビットの変換データy0,0~y0,15を出力する。レジスタ106_0~106_15は、第1変換部112_0~112_15が出力した変換データy0,0~y0,15を記憶する。第2変換部113_0~113_15は、レジスタ106_0~106_15が出力した変換データy0,0~y0,15を入力とし、中間データx0,0~x0,15を出力する。x0,0~x0,15は結合され128ビットの中間データxとして出力される。
 次に、第1変換部112、レジスタ106、および第2変換部113のより具体的な構成例について説明する。図7は、図6で示したデータの処理単位が8ビットである第1変換部112、レジスタ106、および第2変換部113の構成例を示すブロック図である。なお、処理単位は8ビット以外の場合も同様の構成を適用できる。
 第1変換部112は、逆関数を持つ関数Fを演算する関数演算部610を備えている。レジスタ106は、レジスタ602aを備えている。なお、レジスタ106がレジスタ602aを備えるとは説明の便宜のためであり、レジスタ106が少なくとも1つのデータ(図7ではxb)を記憶する記憶部(または領域)としてレジスタ602aを備えることを意味する。後述するように、複数のデータを記憶する場合は、レジスタ106が複数のレジスタ602a、602b・・・を備える場合がある。第2変換部113は、関数Fの逆関数F -1を演算する逆関数演算部611を備えている。
 第1変換部112は、暗号処理途中の8ビットのデータxa(中間データ)を入力とし、データxaを関数Fによって8ビットのデータxb(変換データ)に変換して出力する。レジスタ602aは、第1変換部112が出力したデータxbを記憶する。第2変換部113は、レジスタ602aが記憶する8ビットのデータxbを関数F -1によって8ビットのデータxaに復元し、データxaを出力する。
 次に、このように構成された第1の実施の形態にかかる第1変換部112、レジスタ106、および第2変換部113によるデータ変換処理について図8を用いて説明する。図8は、第1の実施の形態におけるデータ変換処理の全体の流れを示すフローチャートである。
 まず、第1変換部112は、暗号処理途中のデータxaを入力する(ステップS201)。関数演算部610は、データxaを関数Fによりデータxbに変換し、変換したデータxbを出力する(ステップS202)。レジスタ602aは、第1変換部112が出力したデータxbを記憶する(ステップS203)。第2変換部113の逆関数演算部611は、レジスタ602aが記憶するデータxbを関数F -1によりデータxaに変換し、データxaを出力する(ステップS204)。
 関数演算部610の関数Fとしては、例えば以下の(1)式~(4)式の関数F(x)を用いる。
 F(x)=Ax      ・・・(1)
 F(x)=Ax+b    ・・・(2)
 F(x)=A(x+b)  ・・・(3)
 F(x)=A(x+b)+c・・・(4)
 このとき逆関数演算部611の関数F -1としては、以下の(5)式~(8)式の関数F-1(x)を用いる。
 F-1(x)=A-1x      ・・・(5)
 F-1(x)=A-1(x+b)  ・・・(6)
 F-1(x)=A-1x+b    ・・・(7)
 F-1(x)=A-1(x+c)+b・・・(8)
 なお、(1)式、(2)式、(3)式および(4)式の関数Fの逆関数は、それぞれ(5)式、(6)式、(7)式および(8)式である。
 ここで、8ビットのデータxは8行1列行列の表現で関数の引数となる。行列Aは逆行列A-1を持つ8行8列行列であり、行列b、cは8行1列行列であり、それぞれ任意の行列を選ぶことができる。
 例えば、行列A、A-1、b、およびcとして以下の(9)式~(12)式の行列を用いることができる。
Figure JPOXMLDOC01-appb-M000001
 関数演算部610の関数Fとしては、8ビットのデータxのビットの順序を入れ替えるだけの関数、例えば以下の(13)式のような関数を用いないことが望ましい。
Figure JPOXMLDOC01-appb-M000002
 このように、第1の実施の形態にかかる暗号化装置では、暗号処理の中間データを所定の関数で変換したデータをレジスタに記憶する。レジスタでの消費電力はレジスタが記憶するデータと相関を持つが、暗号処理の中間データとは相関を持たない。このため、暗号処理の中間データと消費電力との相関が除去され、電力解析に対する耐性を持つ。
 (第2の実施の形態)
 上述の2次DPAおよびZO-2DPAでは、マスク法を破ることができる。例えば、2次DPAでは、消費電力波形上の2点の電力を利用してマスクの影響を考慮した上で、消費電力と暗号処理の中間データとの相関の有無を判定する。ZO-2DPAは、消費電力波形の各点の値を2乗した新たな波形を作成し、その波形でDPAの処理を行う手法である。このZO-2DPAでは、マスクが加算された中間データ(マスクされたデータ)とマスクとが同時に消費電力に影響を与えるときに、暗号化鍵を特定できる。そのため、マスクされたデータ中間データとマスクをそのままレジスタに記憶すると、マスクされたデータ中間データとマスクが同時に消費電力に影響を与え、ZO-2DPAにより暗号化鍵を解析されるおそれがある。そこで、第2の実施の形態にかかる暗号化装置は、2次DPA対策としてマスク法を利用し、かつ、マスクに用いる乱数および暗号処理の中間データの少なくとも1つに対してデータの変換を適用する。
 第2の実施の形態では、第1変換部、レジスタ、および第2変換部の機能が第1の実施の形態と異なる。その他の処理部(図1の入力部110a、出力部110b、鍵記憶部101、ラウンド鍵生成部102、AddRoundKey105a、ラウンド関数103、およびラウンド関数104)は第1の実施の形態と同様である。また、暗号処理の全体の流れは、図4と同様である。このため、以下では、第2の実施の形態の第1変換部、レジスタ、および第2変換部の機能とこれらの処理部による処理の詳細について説明する。
 図9は、第2の実施の形態にかかる第1変換部212、レジスタ206、および第2変換部213の構成の一例を示すブロック図である。なお、以下では図7と同様に処理単位は8ビットとして説明するが、処理単位が8ビット以外の場合も同様の構成を適用できる。
 第1変換部212は、暗号処理途中の8ビットのデータxaを入力とし、データxaを変換した8ビットのデータxbと8ビットの乱数rを出力する。第1変換部212は、乱数生成部704と、関数演算部705aと、排他的論理和演算部706aとを備えている。
 乱数生成部704は、8ビットの乱数rを生成する。関数演算部705aは、生成された乱数を、予め定められた変換処理(第1変換処理)により変換乱数に変換する。例えば、関数演算部705aは、8ビットの入力を8ビットの出力に変換する関数Fにより乱数rを変換した変換乱数F(r)を演算する。排他的論理和演算部706aは、F(r)とデータxaとの排他的論理和を演算することにより、データxaを変換乱数F(r)でマスクし、処理結果である変換データxbを出力する。
 レジスタ206は、第1変換部212が出力したデータxbと乱数rとを記憶する。レジスタ206は、2つのレジスタ602aおよびレジスタ602bを備えている。レジスタ602aが変換データxbを記憶し、レジスタ602bが変換前の乱数rを記憶する。
 第2変換部213は、レジスタ206が記憶する8ビットのデータxbと乱数rを入力とし、8ビットのデータxaに変換し、データxaを出力する。第2変換部213は、関数演算部705bと、排他的論理和演算部706bとを備えている。
 関数演算部705bは、8ビットの入力を8ビットの出力に変換する関数Fにより、レジスタ602bに記憶されている乱数rを変換した変換乱数F(r)を演算する。排他的論理和演算部706bは、F(r)と変換データxbとの排他的論理和を演算することにより、変換乱数F(r)によるマスクを解除し、処理結果である中間データxaを出力する。
 関数演算部705aおよび関数演算部705bが用いる関数Fとしては、以下の(14)式の関数を用いることができる。
Figure JPOXMLDOC01-appb-M000003
 関数Fはこれに限られず、ハッシュ関数、線形フィードバックシフトレジスタ、およびS-boxなどの非線形変換を用いてもよい。
 なお、乱数生成部704は、第1変換部212の外部に配置してもよい。この場合は、第1変換部212は、暗号処理途中の8ビットのデータxaと乱数生成部704が生成する乱数rを入力とし、8ビットのデータxaを計算して乱数rとともに出力する。
 次に、このように構成された第2の実施の形態にかかる第1変換部212、レジスタ206、および第2変換部213によるデータ変換処理について図10を用いて説明する。図10は、第2の実施の形態におけるデータ変換処理の全体の流れを示すフローチャートである。
 まず、第1変換部212は、暗号処理の中間データxaを入力する(ステップS301)。次に、乱数生成部704が、乱数rを生成する(ステップS302)。関数演算部705aは、関数Fを用いて乱数rをF(r)に変換する(ステップS303)。排他的論理和演算部706aは、暗号処理の中間データxaと関数演算部705aの出力F(r)との排他的論理和xb=xa^F(r)を計算し(^は排他的論理和を表す)、計算結果である変換データxbおよび乱数rを出力する(ステップS304)。レジスタ206は、レジスタ602aに変換データxbを記憶し、レジスタ602bに乱数rを記憶する(ステップS305)。第2変換部213の関数演算部705bは、関数Fを用いてレジスタ602bが記憶する乱数rをF(r)に変換する(ステップS306)。排他的論理和演算部706bは、レジスタ602aが記憶するデータxbと関数演算部705bの出力F(r)との排他的論理和xa=xb^F(r)を計算し、計算結果である中間データxaを出力する(ステップS307)。
 このような処理により、乱数rを関数Fで変換したデータ(F(r))をマスクとし、レジスタ206がマスクされた中間データ(変換データxb)を記憶することで、中間データxaと消費電力との相関が除去される。したがって、DPAなどの電力解析に対する耐性を持つことができる。また、レジスタ206がマスクされた中間データ(変換データxb)と変換前の乱数(r)を記憶するため、マスクされた中間データとマスクが同時に消費電力に影響を与えない。このため、ZO-2DPAに耐性を持つことができる。
 なお、図9の第1変換部212および第2変換部213の構成は以下のように一般化することができる。図11を用いて説明する。図11は、第1変換部212および第2変換部213の構成要素の少なくとも一部として適用できる変換処理部の一例を示すブロック図である。
 第1変換部212は、図11の変換処理部群(変換処理部810、820、830、840、850、および860)に含まれる変換処理部の1つ以上を、任意の順序で配置した構成とすることができる。なお、第1変換部212は、配置する変換処理部以外に、最初に配置した変換処理部に入力する乱数を発生する乱数生成部を備える。
 第2変換部213は、変換処理部810、820、830、840、852、および862の1つ以上を、対応する第1変換部212の変換処理部の順序の逆の順序で配置する。このとき、第1変換部212に変換処理部850および860が配置されている場合は、第2変換部には、変換処理部852および862がそれぞれ対応する位置に配置される。第1変換部212と第2変換部213の変換処理部の配置が、レジスタ206を中心に対称であれば、暗号処理の中間データは復元される。
 例えば、第1変換部212の変換処理部が、レジスタ206に向けて、変換処理部810、850、および860の順に配置されている場合、第2変換部213の変換処理部は、レジスタ206から、変換処理部862、852、および810の順に配置される。
 なお、乱数を用いてマスクを加算するためには、少なくとも変換処理部810および第1変換部830のいずれかを第1変換部212が備える必要がある。また、変換処理部830のみではZO-2DPAによる攻撃を回避できないため、乱数を変換する処理、および、乱数を変換した変換乱数により中間データを変換する処理を含む他の変換処理部の少なくとも1つを第1変換部212が備える必要がある。
 ここで、図11の各変換処理部の詳細について説明する。変換処理部810は、関数演算部811と、排他的論理和演算部812とを備えている。変換処理部820は、関数演算部821と、排他的論理和演算部822とを備えている。変換処理部830は、排他的論理和演算部831を備えている。変換処理部840は、排他的論理和演算部841を備えている。変換処理部850は、関数演算部851を備えている。変換処理部852は、関数演算部853を備えている。変換処理部860は、関数演算部861を備えている。変換処理部862は、関数演算部863を備えている。
 関数演算部811および821で計算するFやFとしては、例えばフィードバックシフトレジスタを用いた変換、線形変換、およびS-boxなどの非線形変換などを用いる。関数演算部851および861で計算するFやFとしては、逆関数F -1やF -1を持つ関数を利用する。例えば、第1の実施の形態で説明した(1)式~(4)式の関数Fなどを用いる。
 次に、各変換処理部810、820、830、840、850、852、860、および862の処理手順を説明する。変換処理部810は、データx、rを入力するとx’=x^F(r)およびr’=rを出力する。
 関数演算部811は、データrを入力とし、関数値F(r)を出力する。排他的論理和演算部812は、データxと関数演算部811が出力したF(r)の排他的論理和x^F(r)を出力する。
 変換処理部820は、データx、rを入力するとx’=x、r’=r^F(x)を出力する。関数演算部821は、データxを入力とし、関数値F(x)を出力する。排他的論理和演算部822は、データrと関数演算部821が出力したF(x)の排他的論理和r^F(x)を出力する。
 変換処理部830は、データx、rを入力するとx’=x^r、r’=rを出力する。排他的論理和演算部831は、データrとデータxの排他的論理和r^xを出力する。
 変換処理部840は、データx、rを入力するとx’=x、r’=r^xを出力する。排他的論理和演算部841は、データxとデータrの排他的論理和x^rを出力する。
 変換処理部850は、データx、rを入力するとx’=F(x)、r’=rを出力する。関数演算部851は、データxを入力とし、関数値F(x)を出力する。
 変換処理部852は、データx、rを入力するとx’=F -1(x)、r’=rを出力する。関数演算部853は、データxを入力とし、関数値F -1(x)を出力する。
 変換処理部860は、データx、rを入力するとx’=x、r’=F(r)を出力する。関数演算部861は、データrを入力とし、関数値F(r)を出力する。
 変換処理部862は、データx、rを入力するとx’=x、r’=F -1(r)を出力する。関数演算部863は、データrを入力とし、関数値F -1(r)を出力する。
 関数演算部811、821、851、および861は、入力によって異なる出力を返す関数が推奨される。
 排他的論理和演算部812、822、831、および841は、排他的論理和の代わりに、例えば8ビットのデータを0から255までの整数とみなして256を法とする加算を行っても良い。このとき、第1変換部212の変換処理部で加算を行った場合は、第2変換部213の対応する変換処理部で減算を行い、第1変換部212の変換処理部で減算を行った場合は、第2変換部213の対応する変換処理部で加算を行う。
 ここで、図11で説明した構成要素を用いて図9に示した第1変換部212および第2変換部213を構成する方法を説明する。第1変換部212は、乱数生成部704と、暗号処理途中のデータxと乱数rを入力とした変換処理部810を備えている。第2変換部213は、レジスタ602aが出力したデータをx、レジスタ602bが出力したデータをrとした変換処理部810を備えている。
(変形例)
 図11に示した構成要素を用いることで構成される第1変換部212および第2変換部213の変形例について図12を用いて説明する。図12は、第2の実施の形態の変形例にかかる第1変換部212-2および第2変換部213-2の構成の一例を示すブロック図である。
 第1変換部212-2は、乱数生成部704と、変換処理部830aと、変換処理部850とを備えている。変換処理部830aは、排他的論理和演算部831aを備える。変換処理部850は、関数演算部851を備える。第2変換部213-2は、変換処理部852と、変換処理部830bとを備えている。変換処理部852は、関数演算部853を備える。変換処理部830bは、排他的論理和演算部831bを備える。
 第1変換部212-2は、暗号処理途中の8ビットのデータxaを入力とし、データxaを変換処理部830aを用いて8ビットのデータxbに変換し、データxbを変換処理部850を用いてデータxcに変換し、データxcとrを出力する。レジスタ206は、第1変換部212-2が出力したデータxcをレジスタ602aに記憶し、データrをレジスタ602bに記憶する。第2変換部213-2は、レジスタ206が記憶するデータxcとrを入力とし、データxcを変換処理部852を用いてデータxbに変換し、データxbを変換処理部852を用いて8ビットのデータxaに変換し、データxaを出力する。
 変換処理部830aは、データxa、rの排他的論理和を排他的論理和演算部831aを用いて計算し、計算結果であるデータxb、rを出力する。変換処理部850は、データxbを関数演算部851を用いて計算し、計算結果であるデータxc、rを出力する。関数演算部851で用いる関数Fは逆関数F -1を持つものとする。変換処理部852は、入力されたデータxcを関数演算部853を用いて計算し、計算結果であるデータxb、rを出力する。関数演算部853で用いる関数は、関数演算部851で用いる関数Fの逆関数F -1とする。変換処理部830bは、データxb、rの排他的論理和を排他的論理和演算部831bを用いて計算し、計算結果であるデータxaを出力する。
 次に、このように構成された第2の実施の形態の変形例にかかる第1変換部212-2、レジスタ206、および第2変換部213-2によるデータ変換処理について図13を用いて説明する。図13は、第2の実施の形態の変形例におけるデータ変換処理の全体の流れを示すフローチャートである。
 まず、第1変換部212-2は、暗号処理の中間データxaを入力する(ステップS401)。乱数生成部704は、乱数rを生成し変換処理部830aに供給する(ステップS402)。変換処理部830aの排他的論理和演算部831aは、データxaと乱数rの排他的論理和xb=xa^rを計算し、データxb、rを出力する(ステップS403)。変換処理部850の関数演算部851は、排他的論理和演算部831aが出力したデータxbを用いてxc=F(xb)を計算し、計算結果であるデータxcとrをレジスタ206に出力する(ステップS404)。
 レジスタ206は、レジスタ602aにデータxcを記憶し、レジスタ602bにデータrを記憶する(ステップS405)。
 第2変換部213-2では、変換処理部852の関数演算部853が、レジスタ206が記憶するデータxcを用いてxb=F -1(xc)を復元し(ステップS406)、データxb、rを出力する。変換処理部830bの排他的論理和演算部831bは、データxbと乱数rの排他的論理和xa=xb^rを計算し、出力する(ステップS407)。
 この変形例でもDPAやZO-2DPAなどの電力解析に対する耐性を持つことができる。
 以上のように、第2の実施の形態にかかる暗号化装置では、マスクされたデータ中間データとマスクの少なくとも一方が変換されてレジスタに記憶される。したがって、クロック切り替え時(レジスタにデータを書き込むタイミング)に、マスクされたデータ中間データとマスクが同時に消費電力に影響を与えることがない。このため、ZO-2DPAを含む電力解析に耐性を持つことができる。
 (第3の実施の形態)
 第3の実施の形態にかかる暗号化装置は、マスクとして複数の乱数を用いる。第3の実施の形態も図11に示した構成要素を用いることで構成することができる。
 第3の実施の形態も、第1変換部、レジスタ、および第2変換部の機能が第1および第2の実施の形態と異なるのみである。このため、以下では、第3の実施の形態の第1変換部、レジスタ、および第2変換部の機能とこれらの処理部による処理の詳細について説明する。
 図14は、第3の実施の形態にかかる第1変換部312、レジスタ306、および第2変換部313の構成の一例を示すブロック図である。
 第1変換部312は、乱数生成部1004と、変換処理部810aと、変換処理部810bとを備えている。
 乱数生成部1004は、2つの乱数r、rを生成し、それぞれ変換処理部810a、810bに供給する。変換処理部810aは、8ビットのデータxaを8ビットのデータxbに変換する。変換処理部810bは、データxbをデータxcに変換する。第1変換部312はこのようにして得られたデータxcとrとrを出力する。
 レジスタ306は、レジスタ602aと、レジスタ602bと、レジスタ602cとを備えている。レジスタ602aは、第1変換部312が出力したデータxcを記憶する。レジスタ602bはデータrを記憶する。レジスタ602cは、データrを記憶する。
 第2変換部313は、変換処理部810cと、変換処理部810dとを備えている。第2変換部313は、レジスタ306が記憶するデータxc、r、rを入力とする。変換処理部810cは、データxcをデータxbに復元する。変換処理部810dは、データxbをデータxaに復元し、データxaを出力する。
 第1変換部312または第2変換部313に含まれる変換処理部810a~810dは、関数演算部811a~811dと、排他的論理和演算部812a~812dとを備える。以下、変換処理部810a~810dの機能について説明する。
 変換処理部810aは、データxaと乱数rを入力とし、関数演算部811aを用いてfa=F(r)を計算し、排他的論理和演算部812aを用いて排他的論理和xb=xa^faを計算し、データxb、rを出力する。
 変換処理部810bは、変換処理部810aが出力したデータxbと乱数r2を入力とし、関数演算部811bを用いてfb=F(r)計算し、排他的論理和演算部812bを用いて排他的論理和xc=xb^fbを計算し、データxc、rを出力する。
 変換処理部810cは、レジスタ306が記憶するデータxc、rを入力とし、関数演算部811cを用いてfb=F(r)を計算し、排他的論理和演算部812cを用いて排他的論理和xb=xc^fbを計算し、データxbを出力する。
 変換処理部810dは、変換処理部810cが出力したデータxbとレジスタ306が記憶するrを入力とし、関数演算部811dを用いてfa=F(r)を計算し、排他的論理和演算部812dを用いて排他的論理和xa=xb^faを計算し、データxaを出力する。
 なお、関数演算部811aと811dは同一の関数を用い、関数演算部811bと811cは同一の関数を用いる。
 次に、このように構成された第3の実施の形態にかかる第1変換部312、レジスタ306、および第2変換部313によるデータ変換処理について図15を用いて説明する。図15は、第3の実施の形態におけるデータ変換処理の全体の流れを示すフローチャートである。
 まず、第1変換部312は暗号処理の中間データxaを入力として受け付ける(ステップS501)。乱数生成部1004は、乱数r、rを生成し、変換処理部810a、810bに供給する(ステップS502)。変換処理部810aの関数演算部811aは、乱数r1を用いてfa=F(r)を計算する(ステップS503)。排他的論理和演算部812aは、データxaと関数演算部811aが出力したデータfaの排他的論理和xb=xa^faを計算する(ステップS504)。排他的論理和演算部812aは、計算結果xbを変換処理部810bに出力し、データrをレジスタ602bに出力する。
 次に、変換処理部810bの関数演算部811bは、乱数rを用いてfb=F(r)を計算する(ステップS505)。排他的論理和演算部812bは、変換処理部810aが出力したデータxbと関数演算部811bが出力したデータfbの排他的論理和xc=xb^fbを計算する(ステップS506)。排他的論理和演算部812bは、計算結果xcをレジスタ602aに出力し、データrをレジスタ602cに出力する。
 次に、レジスタ306は、第1変換部312が出力したデータxcをレジスタ602aに記憶し、第1変換部312が出力したデータrをレジスタ602bに記憶し、第1変換部312が出力したデータrをレジスタ602cに記憶する(ステップS507)。
 第2変換部313では、変換処理部810cの関数演算部811cが、レジスタ602cが記憶するデータr2を用いてfb=F(r)を計算する(ステップS508)。排他的論理和演算部812cは、レジスタ602aが記憶するデータxcと関数演算部811cが出力したデータfbの排他的論理和xb=xc^fbを計算し(ステップS509)、変換処理部810dに出力する。
 次に、変換処理部810dの関数演算部811dは、レジスタ602bが記憶するデータr1を用いてfa=F(r)を計算する(ステップS510)。排他的論理和演算部812dは、変換処理部810cが出力したデータxbと関数演算部811dが出力したデータfaの排他的論理和xa=xb^faを計算し、データxaを出力する(ステップS511)。
 このような処理により、第2の実施の形態と同様にDPAやZO-2DPAなどの電力解析に対する耐性を持つことができる。
(変形例)
 次に、マスクに用いる乱数を他の乱数により変換してレジスタに記憶する変形例について説明する。図16は、第3の実施の形態の変形例にかかる第1変換部312-2、レジスタ306、および第2変換部313-2の構成の一例を示すブロック図である。
 第1変換部312-2は、乱数生成部1004と、変換処理部810aと、変換処理部830aとを備えている。乱数生成部1004は、2つの乱数ra、rを生成して変換処理部810a、830aに供給する。変換処理部810aは、8ビットのデータxaを8ビットのデータxbに変換する。変換処理部830aは、データraをデータrbに変換し、データxbとrbとrを出力する。
 レジスタ306は、第1変換部312-2が出力したデータxbをレジスタ602aに記憶し、データr1bをレジスタ602bに記憶し、データr2をレジスタ602cに記憶する。
 第2変換部313-2は、変換処理部830bと、変換処理部810bとを備えている。第2変換部313-2は、レジスタ306が記憶するデータxb、rb、rを入力とする。変換処理部830bは、rを用いてr1bをデータr1aに復元する。変換処理部810bは、データxb、r1aを用いてデータxaを復元し、データxaを出力する。
 変換処理部810a、810bは、関数演算部811a、811bと、排他的論理和演算部812a、812bとを備える。変換処理部830a、830bは、排他的論理和演算部831a、830bを備える。以下、変換処理部810a、810b、830a、および830bの機能について説明する。
 変換処理部810aは、暗号処理途中のデータxaと乱数生成部1004の出力データr1aを入力とし、関数演算部811aを用いてfa=F(ra)を計算し、排他的論理和演算部812aを用いてxb=xa^faを計算し、データxb、raを出力する。
 変換処理部830aは、変換処理部810aが出力したデータraと乱数rを入力とし、排他的論理和演算部831bを用いてrb=ra^r2を計算し、データrb、rを出力する。
 変換処理部830bは、レジスタ306が記憶するrb、rを入力とし、排他的論理和演算部831bを用いてra=rb^rを計算し出力する。
 変換処理部810bは、変換処理部830bが出力したデータr1aとレジスタ306が記憶するデータxbを入力とし、関数演算部811bを用いてfa=F(ra)を計算し、排他的論理和演算部812bを用いてxa=xb^faを復元し、計算結果であるデータxaを出力する。
 次に、このように構成された第3の実施の形態の変形例にかかる第1変換部312-2、レジスタ306、および第2変換部313-2によるデータ変換処理について図17を用いて説明する。図17は、第3の実施の形態の変形例におけるデータ変換処理の全体の流れを示すフローチャートである。
 まず、第1変換部312-2は、暗号処理の中間データxaを入力として受け付ける(ステップS601)。乱数生成部1004は、乱数ra、rを生成し変換処理部810a、830aに供給する(ステップS602)。変換処理部810aの関数演算部811aは、乱数raの関数値faを計算する(ステップS603)。排他的論理和演算部812aは、データxaと関数演算部811aが出力したデータfaの排他的論理和xb=xa^faを計算する(ステップS604)。排他的論理和演算部812aは、計算結果xbをレジスタ602a出力し、データraを変換処理部830aに出力する。
 次に、変換処理部830aでは、排他的論理和演算部831aが、変換処理部810aが出力したデータraと乱数rの排他的論理和rb=ra^rを計算する(ステップS605)。排他的論理和演算部831aは、計算結果rbをレジスタ602bに出力し、データr2をレジスタ602cに出力する。
 次に、レジスタ306は、第1変換部312が出力したデータxbをレジスタ602aに記憶し、第1変換部312-2が出力したデータr1bをレジスタ602bに記憶し、第1変換部312-2が出力したデータrをレジスタ602cに記憶する(ステップS606)。
 第2変換部313-2では、変換処理部830bの排他的論理和演算部831bが、レジスタ602bが記憶するデータrbとレジスタ602cが記憶するデータrの排他的論理和ra=rb^rを計算し(ステップS607)、変換処理部810aに出力する。次に、変換処理部810bの関数演算部811bは、変換処理部830bが出力したデータraの関数値faを計算する(ステップS608)。排他的論理和演算部812bは、レジスタ602aが記憶するデータxbと関数演算部811bが出力したデータfaの排他的論理和xa=xb^faを計算し、データxaを出力する(ステップS609)。
 なお、図14の構成では、入力されたデータxaに対して変換処理部810aおよび810bによる2段階の処理が少なくとも必要になる。これに対し、図16の本変形例の構成では、データxaに対して変換処理部810aによる1段階の処理のみで済む。このため、他の処理と並列化することなどにより、図14の構成より処理時間を短縮することが可能となる。
 このように、第3の実施の形態にかかる暗号化装置では、第2の実施の形態と同様にDPAやZO-2DPAなどの電力解析に対する耐性を持つことができる。
 (第4の実施の形態)
 上記各実施の形態では、レジスタを中心に第1変換部による変換および第2変換部による変換が対称に配置される例について説明した。一方、変換に用いる関数を準同型写像に限定することにより、第1変換部と第2変換部の変換処理部の配置を対称とする必要がなくなる場合がある。第4の実施の形態にかかる暗号化装置は、変換に用いる関数として準同型写像を用い、変換処理部の配置を対称としない例を説明する。
 第4の実施の形態も、第1変換部、レジスタ、および第2変換部の機能が第1~第3の実施の形態と異なるのみである。このため、以下では、第4の実施の形態の第1変換部、レジスタ、および第2変換部の機能とこれらの処理部による処理の詳細について説明する。
 図18は、第4の実施の形態にかかる第1変換部412および第2変換部413の構成の一例を示すブロック図である。
 第1変換部412は、乱数生成部704と、変換処理部850と、変換処理部810とを備えている。変換処理部850は、関数演算部851を備える。変換処理部810は、関数演算部811と、排他的論理和演算部812とを備える。
 第1変換部412は、暗号処理途中のデータxaを入力とする。乱数生成部704は、乱数rを生成し変換処理部850に供給する。変換処理部850は、8ビットのデータxaをデータxbに変換する。変換処理部810は、データxbをデータxcに変換し、データxcとrとを出力する。
 レジスタ206は、第1変換部412が出力したデータxcをレジスタ602aに記憶し、データrをレジスタ602bに記憶する。
 第2変換部413は、変換処理部852と、変換処理部830とを備えている。変換処理部852は、関数演算部853を備える。変換処理部830は、排他的論理和演算部831を備える。
 第2変換部413は、レジスタ206が記憶するデータxc、rを入力とする。変換処理部852は、データxcをデータxdに変換する。変換処理部830は、データxdをデータxaに復元し、データxaを出力する。
 以下、変換処理部850、810、852、および830の機能について説明する。変換処理部850は、入力されたデータxaを関数演算部851を用いて計算し、計算結果xb、データrを出力する。
 変換処理部810は、暗号処理途中のデータxbと乱数生成部704が生成した乱数rを入力とし、関数演算部811を用いてデータrの関数値fを計算し、排他的論理和演算部812を用いてデータxbとfとの排他的論理和xcを計算し、データxc、rを出力する。
 変換処理部852は、入力されたデータxcを関数演算部853を用いて計算し、計算結果xdを出力する。
 変換処理部830は、排他的論理和演算部831を用いてデータxdとrとの排他的論理和を計算することでデータxaを復元し、データxaを出力する。
 関数演算部811および851の関数Fは、準同型写像であり、逆写像を持つ。関数演算部811、851の関数Fは同一の関数である。関数演算部853の関数は準同型写像Fの逆写像F -1である。
 関数Fおよび関数F -1としては、例えば以下の(15)式および(16)式を用いる。ここで8ビットのデータxは8行1列行列の表現で関数の引数となる。
Figure JPOXMLDOC01-appb-M000004
 次に、このように構成された第4の実施の形態にかかる第1変換部412、レジスタ206、および第2変換部413によるデータ変換処理について図19を用いて説明する。図19は、第4の実施の形態におけるデータ変換処理の全体の流れを示すフローチャートである。
 まず、第1変換部412は暗号処理の中間データxaを入力として受け付ける(ステップS701)。乱数生成部704は、乱数rを生成し変換処理部850に供給する(ステップS702)。変換処理部850の関数演算部851は、暗号処理の中間データxaの関数値xbを計算する(ステップS703)。変換処理部810の関数演算部811は、関数Fを用いて乱数生成部704が生成した乱数rの関数値fを計算する(ステップS704)。排他的論理和演算部812は、データxbと関数演算部811が出力したデータfの排他的論理和xc=xb^fを計算し(ステップS705)、計算結果xcをレジスタ602aに出力する。また、変換処理部810はデータrをレジスタ602bに出力する。
 次に、レジスタ206は、第1変換部412が出力したデータxcをレジスタ602aに記憶し、第1変換部412が出力したデータrをレジスタ602bに記憶する(ステップS706)。第2変換部413では、変換処理部852の関数演算部853が、関数F -1を用いてレジスタ206が記憶するデータxcの関数値xdを計算し(ステップS707)、計算結果xdとデータrを変換処理部830に出力する。
 次に、変換処理部830の排他的論理和演算部831は、変換処理部852が出力したデータxdとデータrの排他的論理和を計算することでデータxaを復元し、出力する(ステップS708)。
 なお、準同型写像を用いる構成は図18に限られるものではない。以下では、準同型写像を用いる場合の第1変換部412および第2変換部413の生成方法の他の例について説明する。第1変換部412および第2変換部413は、以下の(1)~(4)に記載した方法で生成できる。なお、第1変換部412は、複数の第1変換部412a、412b、412c、・・・から任意の1つが選択される。また、第2変換部413は、複数の第2変換部413a、413b、413c、・・・から任意の1つが選択される。
(1)第1変換部412aは、乱数生成部704と、上述の図11の変換処理部810、820、830、840、850、および860の1つ以上を任意の順序で配置することで生成される。
(2)入出力が同一となる第1変換部412b、412c、・・・を以下の入れ替え規則((A-1)~(A-3)、(B-1)~(B-8)、および(C-1)~(C-8))にしたがって生成する。図11、図20および図21の関数F~Fは同一の準同型写像Fおよびその逆写像F-1から構成されているとする。なお、図20および図21は、図11の変換処理部以外に、第1変換部412および第2変換部413の構成要素の少なくとも一部として適用できる変換処理部の一例を示すブロック図である。
(A-1)連続する変換処理部810および変換処理部830は入れ替え可能
(A-2)連続する変換処理部820および変換処理部840は入れ替え可能
(A-3)連続する変換処理部850および変換処理部860は入れ替え可能
(B-1)変換処理部850が直前の変換処理部810の前に移るとき変換処理部810は変換処理部814に変わる
(B-2)変換処理部850が直後の変換処理部810の後に移るとき変換処理部810は変換処理部815に変わる
(B-3)変換処理部850が直前の変換処理部820の前に移るとき変換処理部820は変換処理部824に変わる
(B-4)変換処理部850が直後の変換処理部820の後に移るとき変換処理部820は変換処理部825に変わる
(B-5)変換処理部850が直前の変換処理部830の前に移るとき変換処理部830は変換処理部834に変わる
(B-6)変換処理部850が直後の変換処理部830の後に移るとき変換処理部830は変換処理部835に変わる
(B-7)変換処理部850が直前の変換処理部840の前に移るとき変換処理部840は変換処理部844に変わる
(B-8)変換処理部850が直後の変換処理部840の後に移るとき変換処理部840は変換処理部845に変わる
(C-1)変換処理部860が直前の変換処理部810の前に移るとき変換処理部810は変換処理部816に変わる
(C-2)変換処理部860が直後の変換処理部810の後に移るとき変換処理部810は変換処理部817に変わる
(C-3)変換処理部860が直前の変換処理部820の前に移るとき変換処理部820は変換処理部826に変わる
(C-4)変換処理部860が直後の変換処理部820の後に移るとき変換処理部820は変換処理部827に変わる
(C-5)変換処理部860が直前の変換処理部830の前に移るとき変換処理部830は変換処理部836に変わる
(C-6)変換処理部860が直後の変換処理部830の後に移るとき変換処理部830は変換処理部837に変わる
(C-7)変換処理部860が直前の変換処理部840の前に移るとき変換処理部840は変換処理部846に変わる
(C-8)変換処理部860が直後の変換処理部840の後に移るとき変換処理部840は変換処理部847に変わる
(3)第2変換部413a、413b、413c、・・・は、第1変換部412a、412b、412c、・・・における変換処理部の順序の逆の順序で配置する。このとき第1変換部412a、412b、412c、・・・で変換処理部850および変換処理部860が配置されている場合は、第2変換部413a、413b、413c、・・・では、対応する位置に変換処理部852および変換処理部862がそれぞれ配置される。
(4)第1変換部412a、412b、412c、・・・、および、第2変換部413a、413b、413c、・・・から、それぞれ任意の第1変換部412と第2変換部413を選択する。
 なお、図18の第1変換部412および第2変換部413は、このようにして生成した一例を表している。
 上述のように、準同型写像Fは逆写像F-1を持つ。例えば、準同型写像Fは、以下の(17)式の関数F(x)を用いる。このとき、逆写像F-1は、以下の(18)式の関数F-1(x)を用いる。
 F(x)=Ax    ・・・(17)
 F-1(x)=A-1x ・・・(18)
 ここで8ビットのデータxは8行1列行列の表現で関数の引数となる。行列Aは逆行列A-1を持つ8行8列行列であり、任意の行列を選ぶことができる。例えば、行列Aおよび逆行列A-1として、それぞれ以下の(19)式および(20)式の行列を用いることができる。
Figure JPOXMLDOC01-appb-M000005
 このように、第4の実施の形態にかかる暗号化装置では、準同型写像を用いることにより、レジスタの前後の変換を対称としない場合でも、DPAやZO-2DPAなどの電力解析に対する耐性を持つことができる。また、変換方法が対称でないため、変換方法が分析されることを防ぐことができる。
 (第5の実施の形態)
 第5の実施の形態にかかる暗号化装置は、複数の第1変換部および複数の第2変換部から、それぞれ1つの第1変換部および1つの第2変換部を乱数生成部704に選択してデータの変換に用いる。
 第5の実施の形態も、第1変換部、レジスタ、および第2変換部の機能が第1~第4の実施の形態と異なるのみである。このため、以下では、第5の実施の形態の第1変換部、レジスタ、および第2変換部の機能とこれらの処理部による処理の詳細について説明する。
 図22は、第5の実施の形態にかかる第1変換部512および第2変換部513の構成の一例を示すブロック図である。
 第1変換部512は、乱数生成部1304と、複数の第1変換演算部1301aおよび1301bと、第1選択部1305とを備えている。第2変換部513は、第1変換演算部1301aおよび1301bにそれぞれ対応した第2変換演算部1303aおよび1303bと、第2選択部1306とを備えている。
 第1変換部512は、第1変換演算部1301aおよび1301bとして第1~第4の実施の形態で示した第1変換部のいずれも用いることができる。第1変換演算部1301aおよび1301bは、暗号処理途中のデータxを入力とし、データxを変換したデータと変換に用いたデータ(乱数r等)とを連結したデータyaおよびデータybをそれぞれ第1選択部1305に出力する。
 乱数生成部1304は、第1選択部1305の制御データとして乱数r(∈{a、b})を生成し、第1選択部1305とレジスタ602bに出力する。第1選択部1305は、乱数生成部1304が生成した乱数rに応じて第1変換演算部1301aおよび1301bの出力データyaおよびybのいずれか一方を選択し、選択したデータ(データyとする)をレジスタ602aに出力する。例えば、乱数生成部1304が、乱数r∈{a、b}を生成し、第1選択部1305が、乱数rの値が「a」のときデータyaを選択し、乱数rの値が「b」のときデータybを選択するように構成する。
 レジスタ206は、第1選択部1305が出力したデータyをレジスタ602aに記憶し、乱数生成部1304が生成した乱数rをレジスタ602bに記憶する。
 第2変換部513は、第1変換演算部1301aおよび1301bにそれぞれ対応する逆変換処理を行う第2変換演算部1303aおよび1303bを備えている。第2変換演算部1303aおよび1303bは、レジスタ602aに記憶されているデータyを入力とし、データyからデータxaおよびデータxbを復元する。第2変換演算部1303aおよび1303bは、それぞれ計算結果であるデータxaおよびデータxbを第2選択部1306に出力する。
 第2選択部1306は、レジスタ602bが出力したデータrを参照して、第2変換演算部1303aおよび1303bの出力データxaおよびxbのいずれか一方を選択し、選択したデータ(データxとする)を出力する。
 第2選択部1306は、第1選択部1305がデータyaを選択するときデータxaを選択し、第1選択部1305がデータybを選択するときデータxbを選択するように構成する。例えば、乱数生成部1304が乱数r∈{a、b}を生成する上述の例の場合は、第2選択部1306が、乱数rの値が「a」のときデータxaを選択し、乱数rの値が「b」のときデータxbを選択するように構成する。
 次に、このように構成された第5の実施の形態にかかる第1変換部512、および第2変換部513によるデータ変換処理について図23を用いて説明する。図23は、第5の実施の形態におけるデータ変換処理の全体の流れを示すフローチャートである。
 まず、第1変換部512は暗号処理の中間データxを入力として受け付ける(ステップS801)。第1変換演算部1301aは、データxを変換して変換データyaを第1選択部1305に出力する。第1変換演算部1301aは、内部で生成した乱数を用いて変換を行った場合、変換に用いた乱数を変換データyaに含めて出力する。同様に、第1変換演算部1301bは、データxを変換して、変換データybを第1選択部1305に出力する(ステップS802)。
 乱数生成部1304は、第1選択部1305の制御データとして乱数r(∈{a、b})を生成し、第1選択部1305とレジスタ602bに供給する(ステップS803)。
 次に、第1選択部1305は、r=aか否かを判断し(ステップS804)。r=aの場合(ステップS804:Yes)、y=yaを出力する(ステップS805)。また、r=aでない場合、すなわち、r=bの場合(ステップS804:No)、第1選択部1305は、y=ybを出力する(ステップS806)。レジスタ206は、レジスタ602aにデータyを記憶し、レジスタ602bに乱数rを記憶する(ステップS807)。
 第2変換部513では、第2変換演算部1303aが、データyを変換しデータxaとして第2選択部1306に出力する。また、第2変換演算部1303bが、データyを変換しデータxbとして第2選択部1306に出力する(ステップS808)。
 次に、第2選択部1306は、r=aか否かを判断し(ステップS809)、r=aの場合(ステップS809:Yes)、x=xaを出力する(ステップS810)。また、r=aでない場合、すなわち、r=bの場合(ステップS809:No)、第2選択部1306は、x=xbを出力する(ステップS811)。
 なお、これまでは、第1変換部512内の第1変換演算部1301が2つの場合(第1変換演算部1301aおよび第1変換演算部1301b)、および、第2変換部513内の第2変換演算部1303が2つの場合(第2変換演算部1303aおよび第2変換演算部1303b)について説明した。第1変換演算部1301および第2変換演算部1303の個数はこれに限られず、3つ以上の場合であっても同様に実現できる。
 このように、第5の実施の形態にかかる暗号化装置では、暗号化ごとに第1変換部および第2変換部内の構成を乱数に応じてランダムに変更するため、第1変換部および第2変換部の解析を防ぐことができる。
 次に、第1~第5の実施の形態にかかる暗号化装置のハードウェア構成について図24を用いて説明する。図24は、第1~第5の実施の形態にかかる暗号化装置のハードウェア構成を示す説明図である。
 第1~第5の実施の形態にかかる暗号化装置は、CPU(Central Processing Unit)51などの制御装置と、ROM(Read Only Memory)52やRAM(Random Access Memory)53などの記憶装置と、ネットワークに接続して通信を行う通信I/F54と、各部を接続するバス61を備えている。
 第1~第5の実施の形態にかかる暗号化装置で実行されるプログラムは、ROM52等に予め組み込まれて提供される。
 第1~第5の実施の形態にかかる暗号化装置で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD-ROM(Compact Disk Read Only Memory)、フレキシブルディスク(FD)、CD-R(Compact Disk Recordable)、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録して提供されるように構成してもよい。
 さらに、第1~第5の実施の形態にかかる暗号化装置で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、第1~第5の実施の形態にかかる暗号化装置で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
 第1~第5の実施の形態にかかる暗号化装置で実行されるプログラムは、コンピュータを上述した暗号化装置の各部(第1変換部および第2変換部等)として機能させうる。このコンピュータは、CPU51がコンピュータ読取可能な記憶媒体からプログラムを主記憶装置上に読み出して実行することができる。
 なお、本発明は、上記実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせても良い。
 51 CPU
 52 ROM
 53 RAM
 54 通信I/F
 61 バス
 100 暗号化装置
 101 鍵記憶部
 102 ラウンド鍵生成部
 103、104 ラウンド関数
 106 レジスタ
 110a 入力部
 110b 出力部
 112 第1変換部
 113 第2変換部

Claims (6)

  1.  暗号化鍵を用いて暗号化処理を行い平文から暗号文を計算する暗号化装置であって、
     レジスタと、
     平文を受け付ける入力部と、
     前記平文から第1中間データを計算する第1暗号部分処理部と、
     第i中間データ(iは1以上N未満の整数、Nは予め定められた2以上の整数)と前記暗号化鍵とに基づいて第i+1中間データを計算する第2暗号部分処理部と、
     第j中間データ(jは1以上N以下の整数)を第j変換データに変換して前記レジスタに記憶する第1変換部と、
     前記レジスタに記憶された前記第j変換データを前記第j中間データに変換する第2変換部と、
     前記第N中間データから暗号文を計算する第3暗号部分処理部と、
     前記暗号文を出力する出力部と、を備え、
     前記第2暗号部分処理部は、前記第2変換部により前記第j変換データから変換された前記第j中間データと前記暗号化鍵とに基づいて第j+1中間データを計算する処理をj=1からj=N-1まで繰り返す、
     ことを特徴とする暗号化装置。
  2.  乱数を生成し、前記乱数を前記レジスタに記憶する乱数生成部をさらに備え、
     前記第1変換部は、前記乱数を予め定められた第1変換処理により変換乱数に変換し、前記第j中間データを前記変換乱数でマスクされた前記第j変換データに変換し、
     前記第2変換部は、前記レジスタに記憶された前記乱数を前記第1変換処理により前記変換乱数に変換し、前記レジスタに記憶された前記第j変換データを前記変換乱数でマスクを解除した前記第j中間データに変換すること、
     を特徴とする請求項1に記載の暗号化装置。
  3.  乱数を生成する乱数生成部をさらに備え、
     前記第1変換部は、前記乱数を予め定められた第1変換処理により変換乱数に変換して前記レジスタに記憶し、前記第j中間データを前記乱数でマスクされた前記第j変換データに変換し、
     前記第2変換部は、前記レジスタに記憶された前記変換乱数を、前記第1変換処理による変換後のデータを前記第1変換処理の変換前のデータに変換する第2変換処理により前記乱数に変換し、前記レジスタに記憶された前記第j変換データを前記乱数でマスクを解除した前記第j中間データに変換すること、
     を特徴とする請求項1に記載の暗号化装置。
  4.  前記乱数生成部は、第1乱数と第2乱数とを生成し、生成した前記第1乱数と前記第2乱数とを前記レジスタに記憶し、
     前記第1変換部は、前記第1乱数を前記第2乱数でマスクされた前記変換乱数に変換して前記レジスタに記憶し、前記第j中間データを前記第1乱数でマスクされた前記第j変換データに変換し、
     前記第2変換部は、前記レジスタに記憶された前記第1乱数を前記レジスタに記憶された前記第2乱数でマスクされた前記変換乱数に変換し、前記レジスタに記憶された前記第j変換データを前記変換乱数でマスクを解除した前記第j中間データに変換すること、
     を特徴とする請求項3に記載の暗号化装置。
  5.  前記第1変換部は、相互に異なる変換処理をそれぞれ実行して前記第j中間データを前記第j変換データに変換する複数の第1変換演算部を備え、
     前記第2変換部は、複数の前記第1変換演算部それぞれに対応し、前記レジスタに記憶された前記第j変換データを前記第j中間データに変換する複数の第2変換演算部を備え、
     乱数を生成する乱数生成部と、
     複数の前記第1変換演算部それぞれが変換した複数の前記第j変換データから、前記乱数に応じて1つの前記第j変換データを選択する第1選択部と、
     複数の前記第2変換演算部それぞれが変換した複数の前記第j中間データから、選択された前記第j変換データを演算した前記第1変換演算部に対応する前記第2変換演算部が変換した前記第j中間データを選択する第2選択部と、をさらに備えること、
     を特徴とする請求項1に記載の暗号化装置。
  6.  前記第1変換部は、予め定められた関数により、前記第j中間データを前記第j変換データに変換し、
     前記第2変換部は、前記関数の逆関数により、前記第j変換データを前記第j中間データに変換すること、
     を特徴とする請求項1に記載の暗号化装置。
PCT/JP2010/052654 2010-02-22 2010-02-22 暗号化装置 WO2011101994A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/JP2010/052654 WO2011101994A1 (ja) 2010-02-22 2010-02-22 暗号化装置
JP2012500445A JP5364840B2 (ja) 2010-02-22 2010-02-22 暗号化装置
US13/585,391 US9288040B2 (en) 2010-02-22 2012-08-14 Encryption device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/052654 WO2011101994A1 (ja) 2010-02-22 2010-02-22 暗号化装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US13/585,391 Continuation US9288040B2 (en) 2010-02-22 2012-08-14 Encryption device

Publications (1)

Publication Number Publication Date
WO2011101994A1 true WO2011101994A1 (ja) 2011-08-25

Family

ID=44482611

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2010/052654 WO2011101994A1 (ja) 2010-02-22 2010-02-22 暗号化装置

Country Status (3)

Country Link
US (1) US9288040B2 (ja)
JP (1) JP5364840B2 (ja)
WO (1) WO2011101994A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012070048A (ja) * 2010-09-21 2012-04-05 Toshiba Corp 暗号化装置および復号装置
JP2014110630A (ja) * 2012-11-30 2014-06-12 Electronics And Telecommunications Research Institute 低電力暗号化装置及び方法
JP2017504838A (ja) * 2014-02-03 2017-02-09 クアルコム,インコーポレイテッド 暗号アルゴリズムに対するサイドチャネル攻撃への対抗策
JP2022038811A (ja) * 2020-08-27 2022-03-10 株式会社東芝 暗号処理装置、暗号処理方法およびプログラム

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI517655B (zh) * 2013-05-23 2016-01-11 晨星半導體股份有限公司 密碼裝置以及密鑰保護方法
TWI712915B (zh) 2014-06-12 2020-12-11 美商密碼研究公司 執行一密碼編譯操作之方法,以及電腦可讀非暫時性儲存媒體
ITUB20152708A1 (it) * 2015-07-31 2017-01-31 St Microelectronics Srl Procedimento per operare una crittografia con mascheratura di dati sensibili, apparato di crittografia e prodotto informatico corrispondente
US10592433B1 (en) * 2015-12-10 2020-03-17 Massachusetts Institute Of Technology Secure execution of encrypted software in an integrated circuit
US20190007223A1 (en) * 2017-07-01 2019-01-03 Intel Corporation Techniques to power encryption circuitry
KR20220146115A (ko) * 2021-04-23 2022-11-01 삼성에스디에스 주식회사 키 스트림 생성 방법 및 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005031471A (ja) * 2003-07-07 2005-02-03 Sony Corp 暗号処理装置、および暗号処理方法
JP2005086670A (ja) * 2003-09-10 2005-03-31 Toshiba Corp 暗号化/復号モジュール
JP2008292742A (ja) * 2007-05-24 2008-12-04 Toshiba Corp 非線形データ変換器、暗号化装置、および復号装置

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3029381B2 (ja) * 1994-01-10 2000-04-04 富士通株式会社 データ変換装置
JP3600454B2 (ja) 1998-08-20 2004-12-15 株式会社東芝 暗号化・復号装置、暗号化・復号方法、およびそのプログラム記憶媒体
US6898756B1 (en) * 1999-03-15 2005-05-24 Georgia Tech Research Corporation System and method for enabling efficient error correction and encryption using wavelet transforms over finite fields
US6898288B2 (en) * 2001-10-22 2005-05-24 Telesecura Corporation Method and system for secure key exchange
US7085386B2 (en) * 2001-12-07 2006-08-01 Activcard System and method for secure replacement of high level cryptographic keys in a personal security device
GB0211812D0 (en) * 2002-05-23 2002-07-03 Koninkl Philips Electronics Nv S-box encryption in block cipher implementations
US7349542B2 (en) * 2002-07-25 2008-03-25 Georgia Tech Research Corporation Systems, methods and computer program products for encryption and decryption using wavelet transforms
JP4357815B2 (ja) 2002-09-11 2009-11-04 株式会社東芝 暗号演算回路
JP4612787B2 (ja) * 2003-03-07 2011-01-12 キヤノン株式会社 画像データの暗号化装置の制御方法及び画像データ変換装置の制御方法、及び、それらの装置、並びにコンピュータプログラム及びコンピュータ可読記憶媒体
JP3819872B2 (ja) 2003-05-23 2006-09-13 株式会社東芝 論理演算装置
EP1496641A3 (en) * 2003-07-07 2005-03-02 Sony Corporation Cryptographic processing apparatus, cryptographic processing method and computer program
EP1865481A1 (en) 2005-03-31 2007-12-12 Matsushita Electric Industrial Co., Ltd. Data encryption device and data encryption method
JP4783104B2 (ja) * 2005-09-29 2011-09-28 株式会社東芝 暗号化/復号装置
JP2007189659A (ja) 2005-12-15 2007-07-26 Toshiba Corp 暗号化装置、暗号化方法及び暗号化プログラム
JP2008085986A (ja) * 2006-08-30 2008-04-10 Ricoh Co Ltd データ変換装置と電子装置とデータ変換方法
JP5055993B2 (ja) * 2006-12-11 2012-10-24 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5268609B2 (ja) 2008-12-09 2013-08-21 株式会社東芝 暗号処理装置及び演算方法
JP2010232709A (ja) * 2009-03-25 2010-10-14 Nippon Telegr & Teleph Corp <Ntt> 暗号演算回路装置
JP2011169977A (ja) * 2010-02-16 2011-09-01 Renesas Electronics Corp 暗号処理装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005031471A (ja) * 2003-07-07 2005-02-03 Sony Corp 暗号処理装置、および暗号処理方法
JP2005086670A (ja) * 2003-09-10 2005-03-31 Toshiba Corp 暗号化/復号モジュール
JP2008292742A (ja) * 2007-05-24 2008-12-04 Toshiba Corp 非線形データ変換器、暗号化装置、および復号装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ERIC PEETERS ET AL.: "Improved Higher-Order Side-Channel Attacks with FPGA Experiments", CHES2005, 2005, pages 1 - 15, Retrieved from the Internet <URL:http://www.iacr.org/archive/ches2005/023.pdf> [retrieved on 20100416] *
TSUKASA ENDO ET AL.: "Fourier Henkan o Mochiita S-box Denryoku Kaiseki Taisaku no Taisei Kyoka Shuho", 2010 NEN SYMPOSIUM ON CRYPTOGRAPHY AND INFORMATION SECURITY, 19 January 2010 (2010-01-19), pages 1 - 6 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012070048A (ja) * 2010-09-21 2012-04-05 Toshiba Corp 暗号化装置および復号装置
US9031234B2 (en) 2010-09-21 2015-05-12 Kabushiki Kaisha Toshiba Encryption device and decryption device
JP2014110630A (ja) * 2012-11-30 2014-06-12 Electronics And Telecommunications Research Institute 低電力暗号化装置及び方法
JP2017504838A (ja) * 2014-02-03 2017-02-09 クアルコム,インコーポレイテッド 暗号アルゴリズムに対するサイドチャネル攻撃への対抗策
JP2022038811A (ja) * 2020-08-27 2022-03-10 株式会社東芝 暗号処理装置、暗号処理方法およびプログラム
JP7314108B2 (ja) 2020-08-27 2023-07-25 株式会社東芝 暗号処理装置、暗号処理方法およびプログラム

Also Published As

Publication number Publication date
JP5364840B2 (ja) 2013-12-11
JPWO2011101994A1 (ja) 2013-06-17
US20120307997A1 (en) 2012-12-06
US9288040B2 (en) 2016-03-15

Similar Documents

Publication Publication Date Title
JP5364840B2 (ja) 暗号化装置
JP5229315B2 (ja) 共通鍵暗号機能を搭載した暗号化装置及び組込装置
JP4909018B2 (ja) 共通鍵暗号のための暗号化装置
JP5268609B2 (ja) 暗号処理装置及び演算方法
EP3123656B1 (en) Encryption processing device, encryption processing method, and program
KR101770874B1 (ko) 암호 처리 장치, 암호 처리 방법, 컴퓨터로 판독가능한 기록 매체, 및 정보 처리 장치
WO2015146431A1 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
JP2008058830A (ja) データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
JPWO2009020060A1 (ja) 共通鍵ブロック暗号化装置、共通鍵ブロック暗号化方法及びプログラム
Mala et al. Impossible differential attacks on 13-round CLEFIA-128
Boztaş et al. Multidimensional meet-in-the-middle attacks on reduced-round TWINE-128
WO2015146430A1 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
US8538017B2 (en) Encryption device
JP5202350B2 (ja) 暗号処理装置及び暗号処理方法及び暗号処理プログラム
JP5327493B1 (ja) 暗号化処理回路及び復号処理回路、その方法並びにそのプログラム
JP5680016B2 (ja) 復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラム
JP6136325B2 (ja) 暗号処理装置、暗号処理方法およびプログラム
Velichkov et al. UNAF: A special set of additive differences with application to the differential analysis of ARX
Yli-Mäyry et al. Chosen-input side-channel analysis on unrolled light-weight cryptographic hardware
JP5500277B2 (ja) 共通鍵暗号機能を搭載した暗号化装置及び組込装置
JPWO2008117804A1 (ja) ストリーム暗号向け擬似乱数生成装置とプログラムと方法
JP5354914B2 (ja) 暗号処理装置及び復号処理装置及びプログラム
JP5772934B2 (ja) データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
WO2015146432A1 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
WO2013190782A1 (ja) 暗号化処理回路および復号処理回路

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 10846130

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2012500445

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 10846130

Country of ref document: EP

Kind code of ref document: A1