WO2010067827A1 - 暗号処理装置及び演算方法 - Google Patents

暗号処理装置及び演算方法 Download PDF

Info

Publication number
WO2010067827A1
WO2010067827A1 PCT/JP2009/070618 JP2009070618W WO2010067827A1 WO 2010067827 A1 WO2010067827 A1 WO 2010067827A1 JP 2009070618 W JP2009070618 W JP 2009070618W WO 2010067827 A1 WO2010067827 A1 WO 2010067827A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
mask data
xor
unit
affine
Prior art date
Application number
PCT/JP2009/070618
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 株式会社 東芝
Publication of WO2010067827A1 publication Critical patent/WO2010067827A1/ja
Priority to US13/155,889 priority Critical patent/US8817975B2/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/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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • H04L2209/046Masking or blinding of operations, operands or results of the operations

Definitions

  • the present invention relates to a cryptographic processing device and an arithmetic method.
  • Nondestructive attack As an attack method for acquiring secret information stored inside an attack target object, there is a “nondestructive attack” in which an attack is performed without destroying the target object. For nondestructive attacks, by making the attacking object malfunction, acquire data on the secret information from the attacking object, and measure and measure the power consumption or leaked electromagnetic waves at the time of execution of cryptographic operation.
  • Differential power analysis attack DPA: Differential Power Analysis
  • DEMA differential electromagnetic field analysis
  • side channel attacks including Differential Electro-Magnetic Analysis).
  • the attacker needs to have the values of the input data and the output data as well as the information of the encryption algorithm to be attacked. This is because, in the side channel attack, estimation of data during operation is performed in the attack procedure.
  • secret information is estimated by the attacker, and then, using the estimated secret information, data in the middle of calculation of an attack target is obtained from input data and information of the encryption algorithm.
  • the correlation between the estimated operation data and the measured power consumption or leakage electromagnetic wave is calculated, and it is checked whether there is a correlation between the estimated operation data and the power consumption or leakage electromagnetic wave. . If there is a correlation between them, it means that the secret information has been correctly estimated, and thus the attacker has succeeded in the attack.
  • the attack succeeds when the data in the middle of the calculation of the attack target can be correctly estimated and the estimated calculation data has a correlation with the measurement data of the attack target.
  • the data mask method uses data (for example, random numbers) unknown to the attacker to make the data at the time of cryptographic computation of the attacked device into a value that the attacker can not estimate, using the data during computation. It is a method of masking. In the measures by the data mask method, since the data in the middle of the operation to be attacked is masked by random numbers etc., the attacker must correctly estimate the data in the middle of the calculation unless the value of the mask data is known. Can not.
  • Non-Patent Document 1 a SubBytes (sub-byte) arithmetic circuit used at the time of cryptographic operation as an arithmetic circuit for the common key cryptosystem AES (Advanced Encryption Standard) whose specifications are defined in FIPS (Federal Information Processing Standards 197) And an InvSubBytes (reverse sub-byte) operation circuit used at the time of decoding operation are integrated, and an operation circuit is disclosed in which SubBytes operation and InvSubBytes operation are switched and used by a switching signal. This makes it possible to reduce the circuit scale when implemented by hardware. However, in the arithmetic circuit disclosed in Non-Patent Document 1, measures against side channel attacks are not considered.
  • the present invention has been made in consideration of the above circumstances, and provides a cryptographic processing device and a computing method capable of reducing the circuit scale of a computing circuit including non-linear computation and enabling measures against side channel attacks. With the goal.
  • the present invention is a cryptographic processing device that performs cryptographic computation and decryption computation including non-linear computation and linear computation, and inputs first data obtained by masking computation target data with first temporary mask data, and the first data
  • the first temporary mask data is replaced with the first fixed mask data which is an invariant value for the first linear operation
  • the operation target data is the first fixed mask data.
  • a first mask reassignment unit for outputting the masked second data; and the second data, performing the first linear operation on the second data, and for the operation target data.
  • a first linear operation unit for outputting third data obtained by masking the first result data, which is a result of the first linear operation, with the first fixed mask data; Data of the second data Performing a non-linear operation on the target data, and outputting fourth data obtained by masking the result of the non-linear operation performed on the operation target data with a second fixed mask data which is an invariant value for a second linear operation;
  • the third data is input, the non-linear operation is performed on the third data, and the second result data obtained by performing the non-linear operation on the first result data is obtained.
  • a non-linear operation unit for outputting fifth data masked by the second fixed mask data; and the fourth data or the fifth data, and the fourth data or the fifth data is selected as the fourth data or the fifth data.
  • a second linear operation is performed, and a fourth result data, which is a result of applying the second linear operation to a third result data that is a result of the non-linear operation, is a second fixed mask data.
  • the second linear arithmetic unit, and during the cryptographic operation, the sixth data is input, and the sixth data is changed from the second fixed mask data to the second temporary mask data.
  • a second mask replacing unit which performs replacement from the fixed mask data to the second temporary mask data and outputs eighth data obtained by masking the second result data with the second temporary mask data. And are provided.
  • the circuit scale of an arithmetic circuit including non-linear operation can be reduced, and measures against side channel attacks can be made possible.
  • FIG. 1 is a diagram showing an example of the configuration of an arithmetic unit according to an embodiment of the present invention.
  • FIG. 2 is a flowchart showing an example of an operation procedure at the time of cryptographic computation of the computing unit according to the embodiment.
  • FIG. 3 is a flowchart showing an example of an operation procedure at the time of decoding operation of the operation unit according to the same embodiment.
  • FIG. 4 is a view showing an example of the configuration of the calculation unit according to the embodiment.
  • FIG. 5 is a diagram showing an example of the configuration of the computing unit according to the embodiment.
  • FIG. 6 is a flowchart showing another example of the operation procedure at the time of cryptographic computation of the computing unit according to the embodiment.
  • FIG. 1 is a diagram showing an example of the configuration of an arithmetic unit according to an embodiment of the present invention.
  • FIG. 2 is a flowchart showing an example of an operation procedure at the time of cryptographic computation of the computing unit according to the embodiment.
  • FIG. 3 is
  • FIG. 7 is a flow chart showing another example of the operation procedure at the time of decoding operation of the operation unit according to the same embodiment.
  • FIG. 8 is a diagram showing an example of the configuration of the cryptographic computation apparatus according to the embodiment.
  • FIG. 9 is a diagram showing another configuration example of the cryptographic computation apparatus according to the embodiment.
  • FIG. 10 is a diagram showing another configuration example of the cryptographic computation apparatus according to the embodiment.
  • FIG. 11 is a view showing still another configuration example of the cryptographic computation apparatus according to the embodiment.
  • FIG. 12 is a diagram showing a further configuration example of the calculation unit according to the embodiment.
  • FIG. 13 is a diagram showing still another configuration example of the cryptographic computation apparatus according to the embodiment.
  • FIG. 14 is a diagram showing a conventional arithmetic unit.
  • SubBytes operation and InvSubBytes Transformation are both Galois field 2 8 (GF (2 8) ) and the inverse operation for obtaining the inverse of the, is a combination of the Affine (affine) transformation. That is, in the SubBytes operation, operations are performed in order of inverse element operation on GF (2 8 ) and affine transformation, and in InvSubBytes operation, operations are performed in order of affine transformation and inverse element operation on GF (2 8 ).
  • the affine transformation is a linear operation
  • the inverse operation on GF (2 8 ) is a non-linear operation.
  • FIG. 14 shows a conventional arithmetic unit in which a SubBytes arithmetic unit and an InvSubBytes arithmetic unit used in the cryptographic processing apparatus according to the common key cryptosystem AES are integrated.
  • reference numeral 1001 denotes an affine transformation unit that performs affine transformation during decryption operation
  • 1002 denotes an affine transformation unit that performs affine transformation during encryption operation
  • 1003 denotes an inverse element on GF (2 8 ) during decryption operation and encryption operation.
  • An inverse element operation unit that performs an operation, and 1004 and 1005 are selectors for switching between decryption operation and encryption operation.
  • both the selectors 1004 and 1005 are connected to the e side, and operations are performed in the order of inverse element operation on GF (2 8 ) by the inverse element operation unit 1003 and affine transformation by the affine transformation unit 1002.
  • both selectors 1004 and 1005 are connected to the d side, and the operation is performed in the order of affine transformation by the affine transformation unit 1001 and inverse operation on GF (2 8 ) by the inverse operation unit 1003. .
  • data in the middle of operation is masked with mask data (for example, random numbers), and the operation is executed with the mask data attached, so that the correct operation result is finally obtained.
  • mask data for example, random numbers
  • each operation used in the encryption algorithm has linearity or non-linearity.
  • the encryption algorithm is composed of a combination of linear operation and non-linear operation, and the implementation method for implementing the data mask method differs depending on the nature of each operation defined in the encryption algorithm.
  • the mask data can not be removed from the operation result by the above method.
  • operations other than the SubBytes operation and the InvSubBytes operation are all linear operations.
  • the linear operation even if the linear operation is performed while the mask data is attached to the data to be operated, it is possible to easily remove the mask data from the operation result of the linear operation.
  • a table (table) for performing non-linear operation corresponding to specific mask data (fixed mask data described later) is created in advance for non-linear operation, and non-linear operation is performed using the table.
  • the configuration shall be adopted. That is, non-linear operation contained in SubBytes Transformation and InvSubBytes Transformation, so is the inverse operation on GF (2 8), the inverse operation on GF (2 8), a non-linear operation that corresponds to a specific mask data It is assumed that a table to be performed is created in advance and this table is used. Note that this specific mask data is secret information, and is therefore held securely.
  • mask data such as random numbers is used in portions of linear operations other than the SubBytes operation and the InvSubBytes operation.
  • mask data such as random numbers is replaced with specific mask data before and after the SubBytes operation and the InvSubBytes operation.
  • GF (2 8 ) is used to implement measures against side channel attacks for an arithmetic unit in which the SubBytes arithmetic unit and the InvSubBytes arithmetic unit used in the cryptographic processing apparatus according to the common key cryptosystem AES are integrated.
  • the inverse element calculation is configured to set the data masked by the specific mask data as the calculation target.
  • the GF (2 8 ) inverse element operation unit corresponding to specific mask data can be implemented by a table created in advance.
  • the table corresponds only to the specific mask data assumed at the time of its creation, the data to be input to the GF (2 8 ) inverse element calculation must be masked in advance by the specific mask data. For example, correct operation results can not be obtained.
  • FIG. 1 shows a configuration example of a computing unit in which a SubBytes computing unit and an InvSubBytes computing unit are integrated, in which a side channel countermeasure is implemented according to the present embodiment.
  • 11 is an affine transformation unit (first linear operation unit) that performs affine transformation during decryption operation
  • 12 is an affine transformation unit (second linear operation unit) that performs affine transformation during encryption operation
  • 13 is Inverse element operation unit (nonlinear operation unit) which performs inverse element operation on GF (2 8 ) at the time of decryption operation and encryption operation
  • 14 and 15 are selectors (first selection) for switching between decryption operation and encryption operation
  • Second selection unit) 21 to 26 are exclusive OR operation units (XOR operation units) (21, 22: first mask replacement unit, 23: fourth mask attached) for performing exclusive logical ring Replacement part, 24: fifth mask replacement part, 25, 26: second mask replacement part).
  • both the selectors 14 and 15 are connected to the e side, and the operation is performed in the order of the inverse operation on GF (2 8 ) by the inverse operation unit 13 and the affine transformation by the affine transformation unit 102.
  • both selectors 14 and 15 are connected to the d side, and the operation is performed in the order of affine transformation by affine transformation unit 11 and inverse operation on GF (2 8 ) by inverse operation unit 13 .
  • m1 and m2 are mask data (hereinafter referred to as temporary mask data) whose value changes using random numbers and the like.
  • m2 is described as a value independent of m1, but m2 may be the same value as m1.
  • m2 may be replaced with m1 by the following equation.
  • rfx1 and rfx2 are mask data (hereinafter referred to as fixed mask data) whose values are predetermined.
  • rfx2 is described here as a value independent of rfx1, rfx2 may be the same value as rfx1. In this case, rfx2 may be replaced with rfx1 by the following equation.
  • the number of 0s and the number of 1s in the mask data is the same (or almost the same) in fixed mask data (the above rfx1 and rfx2). .
  • the difference in power consumption at the time of calculation based on the difference between the number of 0s in the data in the middle of calculation and the number of 1s is used, and the number of 0s in the mask data This is because as the number of 1's is different, the number of 0's / 1's in the data masked by the mask data is more likely to be vulnerable to an attack.
  • temporary mask data m1 and m2 described above). The same applies to each configuration example described later.
  • xor represents an exclusive OR operation
  • Affine (x) represents an affine transformation
  • X ⁇ 1 the inverse element of GF on GF (2 8 )
  • the fixed mask data is secret information and is therefore held safely.
  • FIG. 2 shows an example of an operation procedure at the time of cryptographic computation of the computation unit of FIG.
  • the selectors 14 and 15 are switched to the encryption operation side (step S1).
  • the temporary mask data m1 is replaced with the fixed mask data rfx1 (step S2).
  • the inverse element operation unit 13 performs an inverse element operation on the masked data (step S3).
  • the fixed mask data is obtained as a result of the inverse operation.
  • rfx2 is replaced.
  • the affine transformation unit 12 performs affine transformation (step S4).
  • the affine-transformed fixed mask data is added back to the original fixed mask data rfx2 (step S5).
  • step S6 the fixed mask data rfx2 is replaced with the temporary mask data m2 for the masked data, and this is output (step S6).
  • FIG. 3 shows an example of an operation procedure at the time of decoding operation of the operation unit of FIG.
  • the selectors 14 and 15 are switched to the decoding operation side (step S11).
  • the temporary mask data m3 is replaced with the fixed mask data rfx1 (step S12).
  • the affine transformation unit 11 performs affine transformation (step S13).
  • the affine-transformed fixed mask data is added back to the original fixed mask data rfx1 (step S14).
  • the inverse element operation unit 13 performs an inverse element operation on the masked data (step S15).
  • the fixed mask data can be replaced.
  • rfx2 it is assumed that rfx2 is replaced.
  • step S16 the fixed mask data rfx2 is replaced with the temporary mask data m4 for the masked data output from the inverse element calculation unit 13, and this is output (step S16).
  • the original data to be subjected to the SubBytes operation is represented by d1.
  • the input to the SubBytes / InvSubBytes operation unit of FIG. 1 is a value obtained by masking the data d1 to be operated on with temporary mask data (temporary mask data here is m1).
  • temporary mask data temporary mask data here is m1.
  • an exclusive OR operation is used for the mask addition operation
  • an exclusive OR operation is used for the mask deletion operation. Therefore, in this example, the input to the SubBytes / InvSubBytes operation unit of FIG. 1 is d1 xor m1.
  • the XOR operation unit 21 inputs the temporary mask data m1 and the fixed mask data (here, the fixed mask data is rfx1), and outputs the exclusive OR m1 xor rfx1.
  • the output of the XOR operation unit 22 is given to the inverse element operation unit 13 via the selector 14.
  • the inverse element calculation unit 13 can be implemented by a table created in advance corresponding to the fixed mask data rfx1. That is, when the data masked by the fixed mask data rfx1 is input, the inverse element calculation unit 13 can give a correct calculation result.
  • the inverse element operation unit 13 corresponding to the fixed mask data rfx1 receives the output d1 xor rfx1 of the XOR operation unit 22 and outputs the operation result of the inverse element on GF (2 8 ). However, this calculation result, the original inverse element d1 -1 without the d1 -1 xor rfx2 those masked with a fixed mask data Rfx2 the original inverse element d1 -1.
  • the output of the XOR operation unit 24 is provided to the XOR operation unit 26 via the selector 15.
  • the XOR operation unit 25 inputs fixed mask data rfx2 and temporary mask data (temporary mask data here is m2), and outputs their exclusive OR ffx2 xor m2.
  • n2 may be m1.
  • the original data to be the target of the InvSubBytes operation is represented by d2.
  • the input to the SubBytes / InvSubBytes operation unit of FIG. 1 is a value obtained by masking the data d2 to be operated on with temporary mask data (temporary mask data here is m3). Therefore, in this example, the input to the SubBytes / InvSubBytes operation unit of FIG. 1 is d2 xor m3.
  • the XOR operation unit 21 inputs the temporary mask data m3 and the fixed mask data rfx1, and outputs an exclusive OR of them m3 xor rfx1.
  • the output of the XOR operation unit 23 is given to the inverse element operation unit 13 via the selector 14.
  • the inverse element operation unit 13 corresponding to the fixed mask data rfx1 receives the output Affine (d2) xor rfx1 of the XOR operation unit 23, and outputs the operation result of the inverse element on GF (2 8 ).
  • this operation result is not the original inverse element Affine (d2) -1 but the original inverse element Affine (d2) -1 masked with fixed mask data rfx2 (Affine (d2)) -1 xor rfx2 Do.
  • the output of the inverse element operation unit 13 is given to the XOR operation unit 26 via the selector 15.
  • the XOR operation unit 25 inputs fixed mask data rfx2 and temporary mask data (temporary mask data here is m4), and outputs their exclusive OR ffx2 xor m4.
  • m4 may be m3.
  • FIG. 4 shows another configuration example of the operation unit in which the SubBytes operation unit and the InvSubBytes operation unit are integrated, in which side channel measures are implemented in the present embodiment. Note that points different from the configuration example of FIG. 1 will be mainly described.
  • 31 is an affine transformation unit which performs affine transformation (the same affine transformation as the affine transformation unit 11 in FIG. 1) at the time of decryption operation
  • 32 is an affine transformation at the time of encryption operation (the same affine as the affine transformation unit 12 in FIG.
  • Affine transformation unit that performs transformation) 33 is an inverse element operation unit that performs inverse element operation on GF (2 8 ) in both decryption operation and encryption operation, 34, 35 switches between decryption operation and encryption operation
  • Selectors 41 through 46 are XOR operation units that perform exclusive logical rings, 47 are affine transform units used for mask data operations (the same affine transforms as the affine transform unit 31) during decryption operations, and 48 are decryption operations and encryption operations Is a selector for switching mask data in
  • all the selectors 14, 15, 48 are connected to the e side, and in the decryption operation, all the selectors 14, 15, 48 are connected to the d side.
  • d1 xor m1 is input to the SubBytes / InvSubBytes operation unit of FIG.
  • the XOR operation unit 41 outputs m1 xor rfx1 as in the XOR operation unit 21 of FIG.
  • the XOR operation unit 43 Similar to the XOR operation unit of FIG. 1, the XOR operation unit 43 outputs d1 xor rfx1 and this is supplied to the inverse element operation unit 13.
  • the subsequent steps are the same as the example of FIG. 1, and finally, as the output of the SubBytes / InvSubBytes operation unit of FIG. 4, the temporary data of the original data to be operated on is masked with temporary mask data m2 One, ie, Affine (d1 -1 ) xor m2 is obtained.
  • d2 xor m3 is input to the SubBytes / InvSubBytes operation unit of FIG.
  • the affine transformation unit 47 inputs temporary mask data m3 and outputs the affine transformation result Affine (m3), and the XOR operation unit 42 combines the affine transformation result Affine (m3) and the fixed mask data rfx1. Input and output their exclusive OR Affine (m3) xor rfx1.
  • the fixed mask data is affine transformed at the time of decoding operation, and fixed mask data is output at the output of the selector 34 as shown in FIG.
  • temporary mask data is affine transformed at the time of decoding operation. Therefore, in any case, it is necessary to replace the affine-transformed fixed mask data or the affine-transformed temporary mask data with the fixed mask data at the time of the decoding operation. Further, in the case of FIG. 4, an affine transformation unit 47 for affine transforming temporary mask data is required separately from the affine transformation unit 31.
  • the fixed mask data is similarly affine-transformed by the affine transformation units 12 and 32. Therefore, it is necessary to replace the affine-transformed fixed mask data with the fixed mask data.
  • values which are invariant with respect to affine transformation are adopted as the two fixed mask data of FIG. 1 or the temporary mask data and the fixed mask data of FIG. 4.
  • the mask data is invariant to the affine transformation unit, it is possible to omit the exclusive OR unit and the affine transformation unit for the mask data replacement. By omitting them, the maximum delay time can be shortened and the throughput of the circuit can be improved.
  • the affine transformation is defined by the specification of the encryption algorithm, it is possible to find out in advance a value that is invariant for the affine transformation.
  • equation (2) is established from the nature of linearity of the affine transformation.
  • Affine (d xor r) Affine (d) xor Affine (r) (2)
  • the mask r satisfies the following expression (3).
  • r Affine (r) (3)
  • Expression (2) can be rewritten as expression (4) by expression (3).
  • FIG. 5 shows still another configuration example of the operation unit in which the SubBytes operation unit and the InvSubBytes operation unit are integrated, in which side channel countermeasures are implemented in the present embodiment.
  • 51 is an affine transformation unit (first linear operation unit) which performs affine transformation (the same affine transformation as the affine transformation unit 11 in FIG. 1) at the time of decryption operation
  • 52 is an affine transformation at the time of encryption operation (FIG.
  • affine transformation unit for performing the same affine transformation
  • the affine transformation unit 12 of the (second linear operation section) 53 performs the inverse operation over GF (2 8) at both the time of decoding operations when / cryptographic operation inverse
  • An operation unit (non-linear operation unit), 54, 55 are selectors (first selection unit, second selection unit) for switching between decryption operation and encryption operation
  • 61 to 64 are XOR operations for performing exclusive logical ring Parts (61, 62: first mask replacement part, 63, 64: second mask replacement part).
  • both the selectors 14 and 15 are connected to the e side at the time of cryptographic operation, and the selectors 14 and 15 are both connected to the d side at the time of decryption operation, as in the case of FIG.
  • the number of 0's and the number of 1's in the temporary mask data or the fixed mask data is the same (or almost the same).
  • the XOR operation unit 23 outputs “the exclusive OR of the fixed mask data and the affine transformation result of the fixed mask data with respect to the output of the affine transformation unit 11 rfx1 xor Affine (rfx1 An operation of taking an exclusive OR with the This is an operation of replacing Affine (rfx1) attached to Affine (d2) with rfx1 at the output of the affine transformation unit 11.
  • rfx1 Affine (rfx1)
  • rfx1 xor Affine (rfx1) 0, and the XOR operation unit 23 that uses this as one input outputs the other input as it is.
  • mask data replacement prior to GF (2 8 ) inverse operation is unnecessary, that is, the XOR operation unit 23 of FIG. 1 is unnecessary.
  • FIG. 6 shows an example of an operation procedure at the time of cryptographic operation of the operation unit of FIG.
  • the selectors 54 and 55 are switched to the encryption operation side (step S21).
  • the temporary mask data m1 is replaced with the fixed mask data rfx1 (step S22).
  • the inverse element calculation unit 53 performs inverse element calculation on the data with mask (step S23).
  • the fixed mask data is obtained as a result of the inverse operation.
  • rfx2 is replaced.
  • the affine transformation unit 52 performs affine transformation (step S24).
  • affine transformation since fixed mask data is not changed by affine transformation, replacement of fixed mask data is unnecessary.
  • the fixed mask data rfx2 is replaced with the temporary mask data m2 for the masked data output from the affine transformation unit 52, and this is output (step S25).
  • FIG. 7 shows an example of an operation procedure at the time of decoding operation of the operation unit of FIG.
  • the selectors 54 and 55 are switched to the decoding operation side (step S31).
  • the temporary mask data m3 is replaced with the fixed mask data rfx1 (step S32).
  • the affine transformation unit 51 performs affine transformation (step S33).
  • affine transformation since fixed mask data is not changed by affine transformation, replacement of fixed mask data is unnecessary.
  • the inverse element operation unit 53 performs an inverse element operation on the masked data (step S34).
  • the fixed mask data can be replaced.
  • rfx2 it is assumed that rfx2 is replaced.
  • step S35 the fixed mask data rfx2 is replaced with the temporary mask data m4 for the masked data output from the inverse element calculation unit 53, and this is output (step S35).
  • An input to the SubBytes / InvSubBytes operation unit of FIG. 5 is d1 xor m1.
  • the XOR operation unit 61 inputs the temporary mask data m1 and the fixed mask data rfx1, and outputs an exclusive OR of them m1 xor rfx1.
  • the output of the XOR operation unit 62 is given to the inverse element operation unit 13 via the selector 54.
  • the inverse element operation unit 53 receives the output d1 xor rfx1 of the XOR operation unit 62, and outputs the inverse element operation result d1 -1 xor rfx2.
  • the output of the inverse element operation unit 53 is given to the XOR operation unit 64 via the selector 55.
  • the XOR operation unit 63 inputs the fixed mask data rfx2 and the temporary mask data m2, and outputs the exclusive OR of them rfx2 xor m2.
  • n2 may be m1.
  • the input to the SubBytes / InvSubBytes operation unit of FIG. 5 is d2 xor m3.
  • the XOR operation unit 61 inputs the temporary mask data m3 and the fixed mask data rfx1 and outputs an exclusive OR of them m3 xor rfx1.
  • the output of the affine transformation unit 51 is given to the inverse element computation unit 53 via the selector 54.
  • the inverse element calculation unit 53 receives the output Affine (d2) xor rfx1 of the affine transformation unit 51, and outputs the inverse element calculation result (Affine (d2)) -1 xor rfx2.
  • the output of the inverse element operation unit 53 is supplied to the XOR operation unit 64 via the selector 55.
  • the XOR operation unit 63 inputs fixed mask data rfx2 and temporary mask data (temporary mask data here is m4), and outputs their exclusive OR ffx2 xor m4.
  • m4 may be m3.
  • FIG. 8 shows a configuration example of the cryptographic computation apparatus according to the present embodiment.
  • a portion 120 is a SubBytes / InvSubBytes operation unit in which the SubBytes operation unit and the InvSubBytes operation unit are integrated and the data mask method is implemented according to the present embodiment shown in FIG.
  • the XOR operation unit 61 and the XOR operation unit 63 are omitted.
  • the cryptographic operation device shown in FIG. 8 is a general encryption processing device according to the common key encryption method AES, in the part of the SubBytes operation circuit and the InvSubBytes operation circuit, the SubBytes according to the present embodiment shown in FIG. / InvSubBytes operation unit 120 is applied. Therefore, in the cryptographic computation apparatus shown in FIG. 8, the parts other than the SubBytes / InvSubBytes computation unit 120 may be basically the same as the conventional one.
  • reference numeral 101 denotes a mask data generation unit for generating temporary mask data for masking data in the middle of operation
  • 102 denotes a MixColumns / InvMixColumns operation unit for performing AES MixColumns operation and InvMixColumns operation
  • 103 denotes an immediately preceding temporary Register for holding mask data value
  • 104 exclusive OR operation unit
  • 105 selector
  • 106 exclusive OR operation unit
  • 107 AddRoundKey operation unit which performs AddRoundKey operation of AES
  • 108 ShiftRows of AES A ShiftRows / InvShiftRows operation unit that performs an operation and an InvShiftRows operation
  • 109 is a selector
  • 110 is an AddRoundKey operation unit
  • 111 is a MixColumns / InvMixColumns operation unit
  • 112 is a selector
  • 113 is an exclusive OR operation unit.
  • Each of the selectors 109, 54, 55, 112 is connected to the e side at the time of cryptographic operation and is connected to the d side at the time of decryption operation.
  • the selector 105 is connected to the s1 side at the start, is connected to the s2 side after the next round, and is connected to the s3 side in the final round.
  • the mask data generation unit 101 generates temporary mask data, for example, for each round.
  • the initial value of the register 103 is "0".
  • m2 m1 in FIG. 8
  • a part of the configuration of FIG. 8 may be corrected as shown in FIG.
  • the first mask data generation unit 101 is used to generate m1
  • the second mask data generation unit 114 is used to generate m2.
  • the register 103 is connected to the second mask data generation unit 114.
  • the exclusive OR operation unit 113 is connected to the second mask data generation unit 114.
  • the MixColumns / InvMixColumns operation unit 102 can be omitted from the configuration of FIG. 8 or 9 by always using mask data (temporary mask data) that is invariant to the MixColumns / InvMixColumns operation.
  • FIG. 10 shows a configuration example of the cryptographic computation device in which the MixColumns / InvMixColumns computation unit 102 is omitted from the configuration of FIG.
  • FIG. 11 illustrates a configuration example in which the MixColumns / InvMixColumns operation unit 102 is omitted from the portion of FIG. 9.
  • the exclusive OR operation unit 106 masks the data to be operated on by the temporary mask data generated by the mask data generation unit 101. Thereafter, in the AddRoundKey operation unit 107 and the ShiftRows / InvShiftRows operation unit 108, the temporary mask data is unchanged. Next, in SubBytes / InvSubBytes operation unit 120, as described above, after temporary mask data is changed to fixed mask data and calculation is performed, fixed mask data is changed to temporary mask data and output is performed. There is no effect on temporary mask data. Also in the MixColumns / InvMixColumns operation unit 111 and the AddRoundKey operation unit 107, the temporary mask data remains unchanged. From the above, it can be understood that the correct calculation result can be obtained also by the configuration of FIG. Of course, the same applies to the configuration of FIG.
  • the maximum delay time be short. That is, it is preferable that the number of elements, circuits, etc. on the critical path for determining the maximum delay time be small. For example, it is desirable that the number of selectors for selecting data be as small as possible.
  • the selector 109 switches data at the encryption operation time and the decryption operation time.
  • the ShiftRows / InvShiftRows operation is separated into the ShiftRows operation and the InvShiftRows operation, and the ShiftRows operation and the InvSubBytes operation for the respective configuration examples of FIGS.
  • the selector 109 can be reduced.
  • FIG. 12 shows a configuration example of a computing unit in which a SubBytes computing unit and an InvSubBytes computing unit are integrated, which can be used in this case and which has a side channel countermeasure.
  • a SubBytes computing unit and an InvSubBytes computing unit are integrated, which can be used in this case and which has a side channel countermeasure.
  • 71 is an affine transformation unit (first linear operation unit) that performs affine transformation at the time of decryption operation
  • 72 is an affine transformation unit (second linear operation unit) that performs affine transformation at the time of encryption operation
  • 73 is an An inverse element operation unit (nonlinear operation unit) that performs an inverse operation on GF (2 8 ) in both decryption and encryption operations
  • 74 and 75 are selectors for switching between decryption operation and encryption operation 1 selection unit, second selection unit)
  • 81 to 86 are XOR operation units that perform exclusive logical rings (81, 82: first mask replacement unit, 83, 84: third mask replacement Part, 85, 86: second mask replacement part).
  • An example of the operation procedure at the time of encryption operation of the operation unit of FIG. 12 is basically the same as that of FIG.
  • the selectors 74 and 75 are switched to the encryption operation side (step S21).
  • the temporary mask data m1 is replaced with the fixed mask data rfx2 (step S22).
  • the inverse element operation unit 73 performs an inverse element operation on the masked data (step S23).
  • the fixed mask data is obtained as a result of the inverse operation.
  • rfx2 is replaced.
  • the affine transformation unit 72 performs affine transformation (step S24).
  • affine transformation since fixed mask data is not changed by affine transformation, replacement of fixed mask data is unnecessary.
  • the fixed mask data rfx2 is replaced with the temporary mask data m2 for the masked data output from the affine transformation unit 72, and the temporary mask data m2 is output (step S25).
  • An example of an operation procedure at the time of decoding operation of the operation unit of FIG. 12 is basically the same as that of FIG.
  • the selectors 74 and 75 are switched to the decoding operation side (step S31).
  • the temporary mask data m3 is replaced with the fixed mask data rfx1 (step S32).
  • rfx1 replacement to rfx 'described later is performed.
  • the affine transformation unit 71 performs affine transformation (step S33).
  • affine transformation since fixed mask data rfx 'is converted to the same value as fixed mask data rfx1 at the time of cryptographic operation by affine transformation, replacement of fixed mask data is unnecessary.
  • the inverse element operation unit 73 performs an inverse element operation on the masked data (step S34).
  • the fixed mask data can be replaced.
  • rfx2 it is assumed that rfx2 is replaced.
  • step S35 the fixed mask data rfx2 is replaced with the temporary mask data m4 for the masked data output from the inverse element calculation unit 73, and this is output (step S35).
  • d1 xor m1 is input to the input for SubBytes calculation in FIG.
  • the XOR operation unit 81 outputs m1 xor rfx1 as in the other examples.
  • the XOR operation unit 82 outputs d1 xor rfx1 and this is supplied to the inverse element operation unit 73.
  • d2 xor m3 is input to the InvSubBytes operation input in FIG.
  • the XOR operation unit 83 inputs the temporary mask data m3 and the fixed mask data (here, rfx '), and outputs the exclusive OR m3 xor rfx' of them.
  • the rfx ' will be described later.
  • Affine (d2) xor Affine (rfx ') Affine (d2) xor rfx1.
  • rfx ' is a value such that the affine transformation (affine transformation of the affine transformation units 11, 51, 71) gives rfx1 at the time of cryptographic transformation. At this time, it is important as a countermeasure against the side channel attack that the hamming weight of rfx 'and the hamming weight of rfx 1 do not change.
  • rfx1 at the time of cryptographic operation may not be invariant (but may be invariant) with respect to the affine transformation of the affine transformation unit 11.
  • rfx1 at the time of cryptographic operation is invariant with respect to the affine transformation of the affine transformation unit 11, the same value as rfx1 may be used as rfx '.
  • the second fixed mask data may not be invariant with the affine transformation.
  • the same configuration as that of the XOR operation unit 24 of FIG. 1 may be employed.
  • FIG. 13 shows a configuration example of a cryptographic operation device to which the SubBytes / InvSubBytes operation unit of FIG. 12 is applied.
  • the portion 220 is the SubBytes / InvSubBytes operation unit shown in FIG.
  • the XOR operation unit 81, the XOR operation unit 83, and the XOR operation unit 85 are omitted.
  • the ShiftRows / InvShiftRows operation unit 108 is replaced with the ShiftRows operation unit 208 and the InvShiftRows operation unit 209, and the selector 109 is deleted.
  • the other parts may basically be the same as conventional ones.
  • FIG. 13 is a modification of the configuration example described with reference to FIG. 8, it is possible to similarly modify each of the configuration examples of FIGS. 9 to 1.
  • the MixColumns / InvMixColumns operation unit for mask data may be reduced by using the same mask data for every 4 bytes.
  • the number of 0's and the number of 1's in the mask data may be the same (or almost the same).
  • the present invention is not limited to the above embodiment as it is, and at the implementation stage, the constituent elements can be modified and embodied without departing from the scope of the invention.
  • various inventions can be formed by appropriate combinations of a plurality of constituent elements disclosed in the above embodiment. For example, some components may be deleted from all the components shown in the embodiment. Furthermore, components in different embodiments may be combined as appropriate.

Landscapes

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

Abstract

 非線形演算を含む演算回路の回路規模を削減し、かつ、サイドチャネル攻撃への対策を可能にした暗号処理装置を提供する。SubBytes演算部とInvSubBytes演算部を一体化した演算部において、アフィン変換部51は、固定マスクmfx1付きデータを入力し、固定マスクmfx2付き変換データを出力することを前提とする。XOR演算部61,62はデータのマスクを一時マスクm1から固定マスクmfx1に付け替える。ここで、固定マスクmfx1はアフィン変換部51によって不変であるとする。この結果、復号時にアフィン変換部51の後で固定マスクmfx1の付け直しが不要となる。53逆元演算部の出力データに付けられる固定マスクmfx2もアフィン変換部52によって不変であるとする。この結果、暗号時にアフィン変換部52の後で固定マスクmfx2の付け替えが不要となる。

Description

暗号処理装置及び演算方法
 本発明は、暗号処理装置及び演算方法に関する。
 攻撃対象物の内部に格納されている秘密情報を取得する攻撃手法として、該対象物を破壊せずに攻撃を行う「非破壊攻撃」がある。非破壊攻撃には、攻撃対象物を誤動作させることによって、該攻撃対象物から秘密情報に関するデータを取得する「故障利用攻撃」、暗号演算の実行時の消費電力又は漏えい電磁波を測定し、その測定データと攻撃者により推定された演算データとの間の統計解析を行うことによって、該攻撃対象物の秘密情報を推定する差分電力解析攻撃(DPA:Differential Power Analysis)又は差分電磁界解析(DEMA:Differential Electro-Magnetic Analysis)などを含む「サイドチャネル攻撃」などがある。
 サイドチャネル攻撃において、攻撃者は、入力データの値及び出力データの値並びに攻撃対象の暗号アルゴリズムの情報を有している必要がある。なぜなら、サイドチャネル攻撃では、その攻撃手順において、演算途中のデータの推定が行われるからである。
 具体的には、まず、攻撃者により秘密情報が推定され、次に、その推定された秘密情報を用いて、入力データと暗号アルゴリズムの情報とから、攻撃対象の演算途中のデータが求められる。次に、この推測された演算データと測定された消費電力又は漏曳電磁波との相関を計算し、推定された演算データと消費電力又は漏曳電磁波との間に相関があるかどうかが調べられる。かりに、それらの間に相関が認められた場合は、秘密情報が正しく推定できたことになり、よって、攻撃者が攻撃に成功したことになる。
 このようにサイドチャネル攻撃は、攻撃対象の演算途中のデータを正しく推定することができ、かつ、推定された演算データが攻撃対象の測定データとの相関を有する場合に、攻撃に成功する。
 そのため、サイドチャネル攻撃に対しては、演算途中のデータを攻撃者が推定できないようにする対策が有効である。このことに着目して、サイドチャネル攻撃への対策方法がいくつか提案されている。その一つにデータマスク法という対策技術がある。データマスク法は、攻撃対象となった装置の暗号演算時のデータを、攻撃者が推定できない値にするために、攻撃者が分らない値(例えば、乱数)を用いて、演算途中のデータをマスクする手法である。データマスク法による対策においては、攻撃対象となる演算途中のデータは乱数などによってマスクされているため、攻撃者は、マスクデータの値が分からないかぎり、その演算途中のデータを正しく推定することができない。そのため、攻撃者が消費電力や漏洩電磁波を測定し、測定データと攻撃者により推定された演算途中のデータとの相関を求めても、攻撃対象の暗号演算時のデータは乱数でマスクされているために、測定されたデータと推定された演算データとの相関はなく、よって、攻撃には成功しない。
 ところで、非特許文献1には、FIPS(Federal Information Processing Standards 197)で仕様が定義された共通鍵暗号方式AES(Advanced Encryption Standard)用の演算回路として、暗号演算時に用いるSubBytes(サブバイト)演算回路と復号演算時に用いるInvSubBytes(逆サブバイト)演算回路とを一体化し、切り替え信号によって、SubBytes演算とInvSubBytes演算とを切り替えて使用するようにした演算回路が開示されている。これによって、ハードウェアにより実装したときの回路規模を削減することができる。しかし、非特許文献1に開示された演算回路においては、サイドチャネル攻撃への対策が考慮されていない。
http://www.cqpub.co.jp/dwm/contents/0072/dwm007201511.pdf
 従来、非線形演算を含む演算回路で、回路規模の削減と、かつ、サイドチャネル攻撃への対策とを考慮したものは、知られていなかった。
 本発明は、上記事情を考慮してなされたもので、非線形演算を含む演算回路の回路規模を削減し、かつ、サイドチャネル攻撃への対策を可能にした暗号処理装置及び演算方法を提供することを目的とする。
 本発明は、非線形演算と線形演算とを含む暗号演算及び復号演算を行う暗号処理装置であって、演算対象データを第1の一時マスクデータでマスクした第1のデータを入力し、該第1のデータについて、該第1の一時マスクデータから、第1の線形演算について不変の値である第1の固定マスクデータへの付け替えを行って、該演算対象データを該第1の固定マスクデータでマスクした第2のデータを出力する第1のマスク付替部と、前記第2のデータを入力し、該第2のデータに前記第1の線形演算を施して、前記演算対象データに対して前記第1の線形演算を施した結果である第1の結果データを前記第1の固定マスクデータでマスクした第3のデータを出力する第1の線形演算部と、暗号演算時には、前記第2のデータを入力し、該第2のデータに非線形演算を施して、前記演算対象データに対して該非線形演算を施した結果を第2の線形演算について不変の値である第2の固定マスクデータでマスクした第4のデータを出力し、復号演算時には、前記第3のデータを入力し、該第3のデータに該非線形演算を施して、前記第1の結果データに対して該非線形演算を施した結果である第2の結果データを前記第2の固定マスクデータでマスクした第5のデータを出力する非線形演算部と、前記第4のデータ又は前記第5のデータを入力し、該第4のデータ又は該第5のデータに前記第2の線形演算を施して、前記非線形演算の結果である第3の結果データに対して該第2の線形演算を施した結果である第4の結果データを前記第2の固定マスクデータでマスクした第6のデータを出力する第2の線形演算部と、暗号演算時には、前記第6のデータを入力し、該第6のデータについて、前記第2の固定マスクデータから、第2の一時マスクデータへの付け替えを行って、前記第4の結果データを該第2の一時マスクデータでマスクした第7のデータを出力し、復号演算時には、前記第5のデータを入力し、該第5のデータについて、前記第2の固定マスクデータから、該第2の一時マスクデータへの付け替えを行って、前記第2の結果データを該第2の一時マスクデータでマスクした第8のデータを出力する第2のマスク付替部とを備えたことを特徴とする。
 本発明によれば、非線形演算を含む演算回路の回路規模を削減し、かつ、サイドチャネル攻撃への対策を可能にすることができる。
図1は、本発明の一実施形態に係る演算部の構成例を示す図である。 図2は、同実施形態に係る演算部の暗号演算時の動作手順の一例を示すフローチャートである。 図3は、同号施形態に係る演算部の復号演算時の動作手順の一例を示すフローチャートである。 図4は、同実施形態に係る演算部の構成例を示す図である。 図5は、同実施形態に係る演算部の更に構成例を示す図である。 図6は、同実施形態に係る演算部の暗号演算時の動作手順の他の例を示すフローチャートである。 図7は、同号施形態に係る演算部の復号演算時の動作手順の他の例を示すフローチャートである。 図8は、同実施形態に係る暗号演算装置の構成例を示す図である。 図9は、同実施形態に係る暗号演算装置の他の構成例を示す図である。 図10は、同実施形態に係る暗号演算装置の更に他の構成例を示す図である。 図11は、同実施形態に係る暗号演算装置の更に他の構成例を示す図である。 図12は、同実施形態に係る演算部の更に構成例を示す図である。 図13は、同実施形態に係る暗号演算装置の更に他の構成例を示す図である。 図14は、従来の演算部を示す図である。
 以下、図面を参照しながら本発明の実施形態について説明する。
 本実施形態では、暗号方式として、共通鍵暗号方式AESを用いる場合を例にとって説明する。
 まず、本実施形態に係る暗号処理装置の説明に先立って、従来の暗号処理装置について説明する。
 共通鍵暗号方式AESでは、暗号演算時に用いられる3つの基本演算、すなわち、ShiftRows(シフトロー)演算、SubBytes(サブバイト)演算、MixColumns(ミックスカラム)演算と、復号演算時に用いられる3つの基本演算、すなわち、InvShiftRows(逆シフトロー)演算、InvSubBytes(逆サブバイト)演算、nvMixColumns(逆ミックスカラム)演算と、暗号演算時及び復号演算時に用いられる基本演算、すなわち、AddRoundKey(加算ラウンド鍵)が定義されている。
 ここで、SubBytes演算とInvSubBytes演算は、いずれも、2のガロア体(GF(2))上の逆元を求める逆元演算と、Affine(アフィン)変換とを組み合わせたものである。すなわち、SubBytes演算では、GF(2)上の逆元演算、アフィン変換の順に演算を行い、InvSubBytes演算では、アフィン変換、GF(2)上の逆元演算の順に演算を行う。なお、アフィン変換は線形演算であり、GF(2)上の逆元演算は非線形演算である。
 SubBytes演算におけるGF(2)上の逆元演算と、InvSubBytes演算における逆元演算は同一であることから、SubBytes演算とInvSubBytes演算とで一つの逆元演算部を共用するように実装した演算回路が知られている(非特許文献1参照)。これによって、SubBytes演算とInvSubBytes演算とを別々に実装するよりも、ハードウェアによる実装における回路規模を削減することができる。
 図14に、共通鍵暗号方式AESに従う暗号処理装置に用いられるSubBytes演算部とInvSubBytes演算部とを一体化した従来の演算部を示す。
 図14において、1001は復号演算時のアフィン変換を行うアフィン変換部、1002は暗号演算時のアフィン変換を行うアフィン変換部、1003は復号演算時と暗号演算時にGF(2)上の逆元演算を行う逆元演算部、1004,1005は復号演算と暗号演算の切り替えを行うためのセレクタである。
 暗号演算時には、セレクタ1004,1005はいずれもe側に接続し、逆元演算部1003によるGF(2)上の逆元演算、アフィン変換部1002によるアフィン変換の順に、演算が行われる。
 一方、復号演算時には、セレクタ1004,1005はいずれもd側に接続し、アフィン変換部1001によるアフィン変換、逆元演算部1003によるGF(2)上の逆元演算の順に、演算が行われる。
 以下、従来の暗号処理装置の問題について説明する。
 ここで、サイドチャネル攻撃への対策であるデータマスク法について考える。
 前述のようにデータマスク法においては、演算途中のデータは、マスクデータ(例えば、乱数)でマスクされ、マスクデータが付された状態で演算が実行されるので、最終的に正しい演算結果を得るためには、演算データに付されているマスクデータを外す必要がある。
 したがって、データマスク法による対策技術を実装するにあたっては、データをマスクしたまま演算を行った後に、容易にマスクデータを取り除くことができるように、回路構成を考慮しなければならない。
 そこで重要となるのが、暗号アルゴリズムで用いられている各演算が、線形性と非線形性のいずれを有するかという点である。一般的に暗号アルゴリズムは、線形演算と非線形演算との組み合わせから構成されており、暗号アルゴリズムで定義されている各演算の性質により、データマスク法を実装するときの実装方法が異なってくる。
 例えば、線形演算では、データにマスクをかけたまま演算を行ったとしても、その線形性の性質により、演算結果から容易にマスクデータのみ取り除くことができる。
 例えば、演算データをd、マスクデータをrとして、排他的論理和演算(xor)によりdをrでマスクするものとすると、マスクを付されたデータはd xor rで表される。このマスク付きデータd xor rを線形演算Fに入力すると、その線形演算の結果は、線形性の性質から次のようになる。 
   F(d xor r)=F(d) xor F(r)   …(1)
 従って、線形演算については、その演算結果から、容易にマスクデータを取り除くことができる。すなわち、まず、マスクrに線形演算Fを施して、その結果F(r)を求め、そして、先に求めたF(d xor r)=F(d) xor F(r)と、このF(r)との排他的論理和を求めることで、次のように正しい演算結果F(d)を得ることができる。 
 (F(d xor r)) xor F(r)=(F(d) xor F(r)) xor F(r)=F(d) xor F(r) xor F(r)=F(d)
 このように、線形演算については、入力データにマスクをつけたまま演算を行った場合であっても、その演算結果からマスクによる影響を取り除き、本来求めたい正しい演算結果を、容易に得ることができる。
 ところが、非線形演算においては、その非線形性の性質から、上記式(1)に示したような関係が成立しない。
 従って、非線形演算については、入力データにマスクデータを付けたまま非線形演算を行った場合、上記のような方法では、その演算結果からマスクデータを取り除くことができない。
 共通鍵暗号方式AESで用いる演算のうちで、SubBytes演算及びInvSubBytes演算以外の演算は、いずれも、線形演算である。上記のように、線形演算については、演算対象のデータにマスクデータを付けたまま、当該線形演算を行っても、当該線形演算の演算結果から、マスクデータを簡単に外すことが可能である。
 一方、共通鍵暗号方式AESで用いる演算のうちで、非線形演算を含む演算は、SubBytes演算とInvSubBytes演算である。上記のように、GF(2)上の逆元演算が、非線形演算である。そのため、図14のような非線形演算を含む演算回路においては、マスクデータを付けたまま演算を行った場合、正しい演算結果は得られないということになる。しかし、非特許文献1に開示された演算回路においては、サイドチャネル攻撃への対策が考慮されていない(すなわち、サイドチャネル攻撃への対策が実装されていない)。
 そこで、本実施形態では、非線形演算について、事前に特定のマスクデータ(後述する固定マスクデータ)に対応した非線形演算を行うための表(テーブル)を作成し、そのテーブルを用いて非線形演算を行う構成を採用するものとする。すなわち、SubBytes演算とInvSubBytes演算に含まれる非線形演算は、GF(2)上の逆元演算であるので、GF(2)上の逆元演算について、特定のマスクデータに対応した非線形演算を行うためのテーブルを予め作成し、このテーブルを用いるものとする。なお、この特定のマスクデータは、秘密の情報であるので、安全に保持されるものとする。
 さらに、本実施形態では、SubBytes演算及びInvSubBytes演算以外の線形演算の部分では、乱数などのマスクデータを用いるものとしている。これを実現するために、本実施形態では、SubBytes演算及びInvSubBytes演算の前後で、乱数などのマスクデータと特定のマスクデータとの間の付け替えを行うものとしている。
 このような非線形演算への対処によって、演算途中では常にマスクデータを用い、かつ、最終的に所望する正しい演算結果が得られるようにして、データマスク法による対策を実装することを可能にしている。
 以下、本実施形態に係る暗号処理装置について更に詳しく説明する。
 本実施形態では、共通鍵暗号方式AESに従う暗号処理装置に用いられるSubBytes演算部とInvSubBytes演算部とを一体化した演算部について、サイドチャネル攻撃への対策を実装するために、GF(2)逆元演算が、特定のマスクデータでマスクしたデータを演算対象とするように構成する。
 特定のマスクデータに対応するGF(2)逆元演算部は、事前に作成したテーブルで実装することができる。この場合、テーブルは、その作成時に前提とした特定のマスクデータにのみ対応しているため、GF(2)逆元演算に入力するデータを、その特定のマスクデータにより予めマスクしておかなければ、正しい演算結果を得ることができない。
 そこで、本実施形態では、ゲート数の増加を抑えて、乱数などのマスクデータを特定のマスクデータに付け替えることを考える。ここでは、暗号系統と復号系統に分れる分岐の前で付け替えを行う構成例について説明する(図1)。なお、その後で、逆元演算の直前で付け替えを行う構成例について説明する(図4)。
 図1に、本実施形態に係る、サイドチャネル対策を実装した、SubBytes演算部とInvSubBytes演算部とを一体化した演算部の構成例を示す。
 図1において、11は復号演算時のアフィン変換を行うアフィン変換部(第1の線形演算部)、12は暗号演算時のアフィン変換を行うアフィン変換部(第2の線形演算部)、13は復号演算時及び暗号演算時にGF(2)上の逆元演算を行う逆元演算部(非線形演算部)、14,15は復号演算と暗号演算の切り替えを行うためのセレクタ(第1の選択部、第2の選択部)、21~26は排他的論理輪を行う排他的論理和演算部(XOR演算部)(21,22:第1のマスク付替部、23:第4のマスク付替部、24:第5のマスク付替部、25,26:第2のマスク付替部)である。
 暗号演算時には、セレクタ14,15はいずれもe側に接続し、逆元演算部13によるGF(2)上の逆元演算、アフィン変換部102によるアフィン変換の順に、演算が行われる。
 一方、復号演算時には、セレクタ14,15はいずれもd側に接続し、アフィン変換部11によるアフィン変換、逆元演算部13によるGF(2)上の逆元演算の順に、演算が行われる。
 以下の説明で、m1とm2は、乱数などを用いた、値が変化するマスクデータ(以下、一時マスクデータと呼ぶ。)である。なお、ここでは、m2は、m1と独立した値として説明しているが、m2をm1と同一の値としても良い。この場合には、以下の式で、m2をm1に置き換えれば良い。これらの点は、後述する各構成例についても同様である。
 また、以下の説明で、rfx1とrfx2は、値が予め定められたマスクデータ(以下、固定マスクデータと呼ぶ。)である。なお、ここでは、rfx2は、rfx1と独立した値として説明しているが、rfx2をrfx1と同一の値としても良い。この場合には、以下の式で、rfx2をrfx1に置き換えれば良い。これらの点は、後述する各構成例についても同様である。
 なお、サイドチャネル攻撃への対策を考えた場合、固定マスクデータ(上記のrfx1やrfx2)は、当該マスクデータ中における0の個数と1の個数とが同じ(或いは、ほぼ同じ)であると好ましい。なぜなら、サイドチャネル攻撃においては、演算途中のデータ中の0の個数と1の個数数との間の相違に基づく演算時の消費電力の相違を利用しており、マスクデータ中の0の個数と1の個数とが異なるほど、当該マスクデータでマスクされたデータ中における0,1の数が偏り、攻撃を受けやすくなる可能性があるからである。この点は、一時マスクデータ(上記のm1やm2)についても同様である。これらは、後述する各構成例についても同様である。
 また、以下の説明で、xorは、排他的論理和演算を表し、Affine(x)は、アフィン変換を表す。また、XのGF(2)上の逆元をX-1で表す。
 なお、固定マスクデータは、秘密の情報であるので、安全に保持されるものとする。
 図2に、図1の演算部の暗号演算時の動作手順の一例を示す。
 まず、セレクタ14,15を暗号演算側に切り替える(ステップS1)。
 次に、入力されたマスク付きデータについて、一時マスクデータm1から固定マスクデータrfx1への付け替えを行う(ステップS2)。
 次に、逆元演算部13が、マスク付きデータについて、逆元演算を行う(ステップS3)。なお、逆元演算の前後で固定マスクデータの付け替えを行う場合には、逆元演算の結果として、固定マスクデータの付け替えが為されたものが、得られる。ここでは、rfx2に付け替えられるものとする。
 次に、アフィン変換部12が、アフィン変換を行う(ステップS4)。
 次に、アフィン変換結果のマスク付きデータについて、アフィン変換された固定マスクデータからもとの固定マスクデータrfx2へ付け直す(ステップS5)。
 そして、そのマスク付きデータについて、固定マスクデータrfx2から一時マスクデータm2への付け替えを行って、これを出力する(ステップS6)。
 図3に、図1の演算部の復号演算時の動作手順の一例を示す。
 まず、セレクタ14,15を復号演算側に切り替える(ステップS11)。
 次に、入力されたマスク付きデータについて、一時マスクデータm3から固定マスクデータrfx1への付け替えを行う(ステップS12)。
 次に、アフィン変換部11が、アフィン変換を行う(ステップS13)。
 次に、アフィン変換結果のマスク付きデータについて、アフィン変換された固定マスクデータからもとの固定マスクデータrfx1へ付け直す(ステップS14)。
 次に、逆元演算部13が、マスク付きデータについて、逆元演算を行う(ステップS15)。なお、上記のように、逆元演算の前後で固定マスクデータの付け替えを行う場合には、逆元演算の結果として、固定マスクデータの付け替えが為されたものが、得られる。ここでは、rfx2に付け替えられるものとする。
 そして、逆元演算部13から出力されたマスク付きデータについて、固定マスクデータrfx2から一時マスクデータm4への付け替えを行って、これを出力する(ステップS16)。
 次に、暗号演算時の動作について説明する。
 図1のSubBytes/InvSubBytes演算部について、SubBytes演算の対象となる本来のデータをd1で表す。図1のSubBytes/InvSubBytes演算部に対する入力は、演算対象となるデータd1を、一時マスクデータ(ここでの一時マスクデータをm1とする。)でマスクした値である。ここで、マスク付加操作には、排他的論理和演算を用いるものとし、マスク削除操作にも、排他的論理和演算を用いるものとする。よって、本例において、図1のSubBytes/InvSubBytes演算部に対する入力は、d1 xor m1となる。
 さて、XOR演算部21は、上記一時マスクデータm1と固定マスクデータ(ここでの固定マスクデータをrfx1とする。)とを入力し、それらの排他的論理和m1 xor rfx1を出力する。
 XOR演算部22は、上記入力d1 xor m1と、XOR演算部21の出力m1 xor rfx1とを入力し、それらの排他的論理和(d1 xor m1) xor ( m1 xor rfx1)=d1 xor rfx1を出力する。
 前述のように、暗号演算時は、XOR演算部22の出力が、セレクタ14を介して、逆元演算部13に与えられる。
 ここで、逆元演算部13は、固定マスクデータrfx1に対応して予め作成されたテーブルにより実装することができる。すなわち、逆元演算部13は、固定マスクデータrfx1によりマスクされたデータが入力された場合に、正しい演算結果を与えることができる。
 固定マスクデータrfx1に対応した逆元演算部13は、XOR演算部22の出力d1 xor rfx1を入力し、GF(2)上の逆元の演算結果を出力する。ただし、この演算結果は、本来の逆元d1-1ではなく、本来の逆元d1-1を固定マスクデータrfx2でマスクしたものd1-1 xor rfx2とする。
 なお、ここでは逆元演算後の固定マスクデータをrfx2としたが、前述のように、rfx2=rfx1としても良い。
 アフィン変換部12は、逆元演算部13の出力d1-1 xor rfx2を入力し、そのアフィン変換結果Affine(d1-1 xor rfx2)=Affine(d1-1) xor Affine(rfx2)を出力する。
 なお、ここで、式(1)で説明した線形性の性質を利用している(以下も同様である)。
 XOR演算部24は、アフィン変換部12の出力Affine(d1-1) xor Affine(rfx2)と、「固定マスクデータと固定マスクデータのアフィン変換結果との排他的論理和rfx2 xor Affine(rfx2)」とを入力し、それらの排他的論理和(Affine(d1-1) xor Affine(rfx2)) xor (rfx2 xor Affine(rfx2))=Affine(d1-1) xor rfx2を出力する。なお、rfx2 xor Affine(rfx2)は、予め求めておくことが可能である。
 前述のように、暗号演算時は、XOR演算部24の出力が、セレクタ15を介して、XOR演算部26に与えられる。
 XOR演算部25は、固定マスクデータrfx2と、一時マスクデータ(ここでの一時マスクデータをm2とする。)とを入力し、それらの排他的論理和rfx2 xor m2を出力する。
 XOR演算部26は、XOR演算部24の出力Affine(d1-1) xor rfx2とXOR演算部25の出力rfx2 xor m2とを入力し、それらの排他的論理和(Affine(d1-1) xor rfx2) xor (rfx2 xor m2)=Affine(d1-1) xor m2を出力する。すなわち、このAffine(d1-1) xor m2が、図1のSubBytes/InvSubBytes演算部の出力となる。すなわち、演算対象となる本来のデータをd1に対するSubBytes演算結果を、一時マスクデータm2でマスクしたものが、得られる。
 なお、前述のように、m2=m1としても良い。
 次に、復号演算時の動作について説明する。
 図1のSubBytes/InvSubBytes演算部について、InvSubBytes演算の対象となる本来のデータをd2で表す。図1のSubBytes/InvSubBytes演算部に対する入力は、演算対象となるデータd2を、一時マスクデータ(ここでの一時マスクデータをm3とする。)でマスクした値である。よって、本例において、図1のSubBytes/InvSubBytes演算部に対する入力は、d2 xor m3となる。
 さて、XOR演算部21は、上記一時マスクデータm3と固定マスクデータrfx1とを入力し、それらの排他的論理和m3 xor rfx1を出力する。
 XOR演算部22は、上記入力d2 xor m3と、XOR演算部21の出力m3 xor rfx1とを入力し、それらの排他的論理和(d2 xor m3) xor ( m3 xor rfx1)=d2 xor rfx1を出力する。
 アフィン変換部11は、XOR演算部22の出力d2 xor rfx1を入力し、そのアフィン変換Affine(d2 xor rfx1)=Affine(d2) xor Affine(rfx1)を出力する。
 XOR演算部23は、アフィン変換部11の出力Affine(d2) xor Affine(rfx1)と、「固定マスクデータと固定マスクデータのアフィン変換結果との排他的論理和rfx1 xor Affine(rfx1)」とを入力し、それらの排他的論理和(Affine(d2) xor Affine(rfx1)) xor (rfx1 xor Affine(rfx1))=Affine(d2) xor rfx1を出力する。なお、rfx1 xor Affine(rfx1)は、予め求めておくことが可能である。
 前述のように、復号演算時は、XOR演算部23の出力が、セレクタ14を介して、逆元演算部13に与えられる。
 固定マスクデータrfx1に対応した逆元演算部13は、XOR演算部23の出力Affine(d2) xor rfx1を入力し、GF(2)上の逆元の演算結果を出力する。ただし、この演算結果は、本来の逆元Affine(d2)-1ではなく、本来の逆元Affine(d2)-1を固定マスクデータrfx2でマスクしたもの(Affine(d2))-1 xor rfx2とする。
 前述のように、復号演算時は、逆元演算部13の出力が、セレクタ15を介して、XOR演算部26に与えられる。
 XOR演算部25は、固定マスクデータrfx2と、一時マスクデータ(ここでの一時マスクデータをm4とする。)とを入力し、それらの排他的論理和rfx2 xor m4を出力する。
 XOR演算部26は、逆元演算部13の出力(Affine(d2))-1 xor rfx2とXOR演算部25の出力rfx2 xor m4とを入力し、それらの排他的論理和((Affine(d2))-1 xor rfx2) xor (rfx2 xor m4)=(Affine(d2))-1 xor m4を出力する。すなわち、この(Affine(d2))-1 xor m4が、図1のSubBytes/InvSubBytes演算部の出力となる。すなわち、演算対象となる本来のデータをd2に対するInvSubBytes演算結果を、一時マスクデータm4でマスクしたものが、得られる。
 なお、前述のように、m4=m3としても良い。
 続いて、最初のセレクタの後でマスクの付け替えを行うようにした構成例について説明する。
 図4に、本実施形態における、サイドチャネル対策を実装した、SubBytes演算部とInvSubBytes演算部を一体化した演算部の他の構成例を示す。なお、図1の構成例と相違する点を中心に説明する。
 図4において、31は復号演算時のアフィン変換(図1のアフィン変換部11と同じアフィン変換)を行うアフィン変換部、32は暗号演算時のアフィン変換(図1のアフィン変換部12と同じアフィン変換)を行うアフィン変換部、33は復号演算時/暗号演算時の両方でGF(2)上の逆元演算を行う逆元演算部、34,35は復号演算と暗号演算の切り替えを行うためのセレクタ、41~46は排他的論理輪を行うXOR演算部、47は復号演算時にマスクデータの演算(アフィン変換部31と同じアフィン変換)に用いるアフィン変換部、48は復号演算と暗号演算でのマスクデータの切り替えを行うためのセレクタである。
 暗号演算時には、セレクタ14,15,48はいずれもe側に接続し、復号演算時には、セレクタ14,15,48はいずれもd側に接続する。
 まず、暗号演算時の動作について説明する。
 図4のSubBytes/InvSubBytes演算部には、図1の例と同様、d1 xor m1が入力される。
 さて、XOR演算部41は、図1のXOR演算部21と同様、m1 xor rfx1を出力する。
 XOR演算部43は、図1のXOR演算部と同様、d1 xor rfx1を出力し、これが逆元演算部13に与えられる。
 以降は、図1の例と同じであり、最終的に、図4のSubBytes/InvSubBytes演算部の出力として、演算対象となる本来のデータをd1に対するSubBytes演算結果を、一時マスクデータm2でマスクしたもの、すなわち、Affine(d1-1) xor m2が、得られる。
 次に、復号演算時の動作について説明する。
 図4のSubBytes/InvSubBytes演算部には、図1の例と同様、d2 xor m3が入力される。
 アフィン変換部11は、上記のd2 xor m3を入力し、そのアフィン変換Affine(d2 xor m3)=Affine(d2) xor Affine(m3)を出力する。
 一方、アフィン変換部47は、一時マスクデータm3を入力して、そのアフィン変換結果Affine(m3)を出力し、XOR演算部42は、上記アフィン変換結果Affine(m3)と固定マスクデータrfx1とを入力して、それらの排他的論理和Affine(m3) xor rfx1を出力する。
 XOR演算部23は、アフィン変換部11の出力Affine(d2) xor Affine(m3)と、XOR演算部42の出力Affine(m3) xor rfx1とを入力し、それらの排他的論理和(Affine(d2) xor Affine(m3)) xor (Affine(m3) xor rfx1)=Affine(d2) xor rfx1を出力し、これが逆元演算部13に与えられる。
 以降は、図1の例と同じであり、最終的に、図4のSubBytes/InvSubBytes演算部の出力として、演算対象となる本来のデータをd2に対するInvSubBytes演算結果を、一時マスクデータm4でマスクしたもの、すなわち、(Affine(d2))-1 xor m4が、得られる。
 次に、マスクデータ付け替えの回数を削減することによって、図1,4に比較して、より素子数を削減した構成例について説明する。なお、図1の構成例と相違する点を中心に説明する。
 図1のようにアフィン変換部11の前で固定マスクデータへの付替を行う場合は、復号演算時において、固定マスクデータがアフィン変換され、図4のようにセレクタ34の出力において固定マスクデータへの付け替えを行う場合は、復号演算時において、一時マスクデータがアフィン変換される。よって、いずれの場合でも、復号演算時において、アフィン変換された固定マスクデータ又はアフィン変換された一時マスクデータを、固定マスクデータに付け替える処理が必要になる。また、図4の場合には、アフィン変換部31とは別に、一時マスクデータをアフィン変換するためのアフィン変換部47が必要になる。
 また、暗号演算時においても、同様に、アフィン変換部12,32で固定マスクデータがアフィン変換されるので、アフィン変換された固定マスクデータを、固定マスクデータに付け替える必要がある。
 そこで、本実施形態では、アフィン変換について不変である値を、図1の二つの固定マスクデータ又は図4の一時マスクデータ及び固定マスクデータとして採用するものとする。これによって、当該マスクデータがアフィン変換部について不変であれば、当該マスクデータ付け替えのための排他的論理和部及びアフィン変換部を省くことができる。それらを省くことによって、最大遅延時間を短くすることができ、回路の処理能力を向上することができる。
 なお、アフィン変換は、暗号アルゴリズムの仕様によって定められているので、事前にアフィン変換について不変となる値を探し出しておくことが可能である。
 ここで、アフィン変換Affineに、マスクされたデータ(データdとマスクrとの排他的論理和)d xor rを入力すると、アフィン変換の線形性の性質から、式(2)が成立する。 
   Affine(d xor r)=Affine(d) xor Affine(r)   …(2)
 ここで、マスクrが、次式(3)を満たすものとする。 
   r=Affine(r)   …(3)
 式(3)により、式(2)を式(4)に書き換えることができる。 
   Affine(d xor r)=Affine(d) xor Affine(r)=Affine(d) xor r …(4)
 よって、マスクされたデータd xor rをアフィン変換した結果は、データdのアフィン変換結果をマスクrでマスクした値Affine(d) xor rになる。これが求めるべき値であるので、アフィン変換の後に、マスク付け替えのための回路が不要となることが分かる。
 以下、上記(3)を満たすマスクデータを用いる場合の構成例について説明する。
 図5に、本実施形態における、サイドチャネル対策を実装した、SubBytes演算部とInvSubBytes演算部を一体化した演算部の更に他の構成例を示す。
 図5において、51は復号演算時のアフィン変換(図1のアフィン変換部11と同じアフィン変換)を行うアフィン変換部(第1の線形演算部)、52は暗号演算時のアフィン変換(図1のアフィン変換部12と同じアフィン変換)を行うアフィン変換部(第2の線形演算部)、53は復号演算時/暗号演算時の両方でGF(2)上の逆元演算を行う逆元演算部(非線形演算部)、54,55は復号演算と暗号演算の切り替えを行うためのセレクタ(第1の選択部、第2の選択部)、61~64は排他的論理輪を行うXOR演算部である(61,62:第1のマスク付替部、63,64:第2のマスク付替部)。
 なお、暗号演算時には、セレクタ14,15はいずれもe側に接続し、復号演算時には、セレクタ14,15はいずれもd側に接続する点は、図1の場合と同様である。
 また、一時マスクデータや固定マスクデータの中における0の個数と1の個数とが同じ(或いは、ほぼ同じ)であると好ましい点は、図1の場合と同様である。
 さて、図1の構成例を見ると、XOR演算部23は、アフィン変換部11の出力に対して、「固定マスクデータと固定マスクデータのアフィン変換結果との排他的論理和rfx1 xor Affine(rfx1)」との排他的論理和を取る演算を行っている。これは、アフィン変換部11の出力において、Affine(d2)に付けられているAffine(rfx1)を、rfx1に付け替える操作である。
 ここで、rfx1として、アフィン変換(アフィン変換部11,51のアフィン変換)について不変となる値、すなわち、rfx1=Affine(rfx1)を満たすような値を採用することを考える。この場合には、アフィン変換部11の出力は、Affine(d2) xor Affine(rfx1)=Affine(d2) xor rfx1となる。言い換えると、rfx1=Affine(rfx1)の場合、rfx1 xor Affine(rfx1)=0となり、これを一方の入力とするXOR演算部23は、他方の入力をそのまま出力することになる。これは、GF(2)逆元演算の前でのマスクデータ付け替えが不要であり、すなわち、図1のXOR演算部23が不要であることを意味する。
 よって、図5の構成例では、固定マスクデータrfx1として、アフィン変換(アフィン変換部12,52のアフィン変換)について不変となる値、すなわち、rfx1=Affine(rfx1)を満たすような値を必ず採用することとして、図1の構成例から、XOR演算部23を省いている。
 また、XOR演算部24についても同様で、固定マスクデータrfx2として、rfx2=Affine(rfx2)を満たすような値を必ず採用することとして、図1の構成例から、XOR演算部24を省いている。
 図6に、図5の演算部の暗号演算時の動作手順の一例を示す。
 まず、セレクタ54,55を暗号演算側に切り替える(ステップS21)。
 次に、入力されたマスク付きデータについて、一時マスクデータm1から固定マスクデータrfx1への付け替えを行う(ステップS22)。
 次に、逆元演算部53が、マスク付きデータについて、逆元演算を行う(ステップS23)。なお、逆元演算の前後で固定マスクデータの付け替えを行う場合には、逆元演算の結果として、固定マスクデータの付け替えが為されたものが、得られる。ここでは、rfx2に付け替えられるものとする。
 次に、アフィン変換部52が、アフィン変換を行う(ステップS24)。なお、ここでは固定マスクデータはアフィン変換によって不変であるので、固定マスクデータの付け替えは不要である。
 そして、アフィン変換部52から出力されたマスク付きデータについて、固定マスクデータrfx2から一時マスクデータm2への付け替えを行って、これを出力する(ステップS25)。
 図7に、図5の演算部の復号演算時の動作手順の一例を示す。
 まず、セレクタ54,55を復号演算側に切り替える(ステップS31)。
 次に、入力されたマスク付きデータについて、一時マスクデータm3から固定マスクデータrfx1への付け替えを行う(ステップS32)。
 次に、アフィン変換部51が、アフィン変換を行う(ステップS33)。なお、ここでは固定マスクデータはアフィン変換によって不変であるので、固定マスクデータの付け替えは不要である。
 次に、逆元演算部53が、マスク付きデータについて、逆元演算を行う(ステップS34)。なお、上記のように、逆元演算の前後で固定マスクデータの付け替えを行う場合には、逆元演算の結果として、固定マスクデータの付け替えが為されたものが、得られる。ここでは、rfx2に付け替えられるものとする。
 そして、逆元演算部53から出力されたマスク付きデータについて、固定マスクデータrfx2から一時マスクデータm4への付け替えを行って、これを出力する(ステップS35)。
 次に、暗号演算時の動作について説明する。
 図5のSubBytes/InvSubBytes演算部に対する入力を、d1 xor m1とする。
 XOR演算部61は、上記一時マスクデータm1と固定マスクデータrfx1とを入力し、それらの排他的論理和m1 xor rfx1を出力する。
 XOR演算部62は、上記入力d1 xor m1と、XOR演算部61の出力m1 xor rfx1とを入力し、それらの排他的論理和(d1 xor m1) xor ( m1 xor rfx1)=d1 xor rfx1を出力する。
 暗号演算時は、XOR演算部62の出力が、セレクタ54を介して、逆元演算部13に与えられる。
 逆元演算部53は、XOR演算部62の出力d1 xor rfx1を入力し、逆元演算結果d1-1 xor rfx2を出力する。
 なお、ここでは逆元演算後の固定マスクデータをrfx2としたが、前述のように、rfx2=rfx1としても良い。
 アフィン変換部52は、逆元演算部53の出力d1-1 xor rfx2を入力し、そのアフィン変換結果Affine(d1-1 xor rfx2)=Affine(d1-1) xor Affine(rfx2)を出力する。
 ここで、Affine(rfx2)=rfx2であることから、Affine(d1-1) xor Affine(rfx2)=Affine(d1-1) xor rfx2が得られる。
 暗号演算時は、逆元演算部53の出力が、セレクタ55を介して、XOR演算部64に与えられる。
 XOR演算部63は、固定マスクデータrfx2と、一時マスクデータm2とを入力し、それらの排他的論理和rfx2 xor m2を出力する。
 XOR演算部64は、XOR演算部63の出力Affine(d1-1) xor rfx2とXOR演算部25の出力rfx2 xor m2とを入力し、それらの排他的論理和(Affine(d1-1) xor rfx2) xor (rfx2 xor m2)=Affine(d1-1) xor m2を出力する。すなわち、このAffine(d1-1) xor m2が、図5のSubBytes/InvSubBytes演算部の出力となる。すなわち、演算対象となる本来のデータをd1に対するSubBytes演算結果を、一時マスクデータm2でマスクしたものが、得られる。
 なお、前述のように、m2=m1としても良い。
 次に、復号演算時の動作について説明する。
 図5のSubBytes/InvSubBytes演算部に対する入力を、d2 xor m3となる。
 XOR演算部61は、上記一時マスクデータm3と固定マスクデータrfx1とを入力し、それらの排他的論理和m3 xor rfx1を出力する。
 XOR演算部62は、上記入力d2 xor m3と、XOR演算部部22の出力m3 xor rfx1とを入力し、それらの排他的論理和(d2 xor m3) xor ( m3 xor rfx1)=d2 xor rfx1を出力する。
 アフィン変換部51は、XOR演算部62の出力d2 xor rfx1を入力し、そのアフィン変換Affine(d2 xor rfx1)=Affine(d2) xor Affine(rfx1)を出力する。
 ここで、Affine(rfx1)=rfx1であることから、Affine(d2) xor Affine(rfx1)=Affine(d2) xor rfx1が得られる。
 復号演算時は、アフィン変換部51の出力が、セレクタ54を介して、逆元演算部53に与えられる。
 逆元演算部53は、アフィン変換部51の出力Affine(d2) xor rfx1を入力し、逆元演算結果(Affine(d2))-1 xor rfx2を出力する。
 なお、ここでは逆元演算後の固定マスクデータをrfx2としたが、前述のように、rfx2=rfx1としても良い。
 復号演算時は、逆元演算部53の出力が、セレクタ55を介して、XOR演算部64に与えられる。
 XOR演算部63は、固定マスクデータrfx2と、一時マスクデータ(ここでの一時マスクデータをm4とする。)とを入力し、それらの排他的論理和rfx2 xor m4を出力する。
 XOR演算部64は、逆元演算部53の出力(Affine(d2))-1 xor rfx2とXOR演算部63の出力rfx2 xor m4とを入力し、それらの排他的論理和((Affine(d2))-1 xor rfx2) xor (rfx2 xor m4)=(Affine(d2))-1 xor m4を出力する。すなわち、この(Affine(d2))-1 xor m4が、図5のSubBytes/InvSubBytes演算部の出力となる。すなわち、演算対象となる本来のデータをd2に対するInvSubBytes演算結果を、一時マスクデータm4でマスクしたものが、得られる。
 なお、前述のように、m4=m3としても良い。
 図5に示すように、固定マスクデータとしてアフィン変換について不変の値を用いることによって、ゲート数を削減し、最大遅延時間を短くすることが可能となる。
 なお、図5では、第1の固定マスクデータと第2の固定マスクデータの両方についてアフィン変換について不変としたが、第1の固定マスクデータと第2の固定マスクデータのいずれか一方のみをアフィン変換について不変としても良い。この場合には、不変でないとした方について、図1のXOR演算部23又はXOR演算部24と同じ構成にすれば良い。
 次に、本実施形態に係る暗号演算装置について説明する。
 図8に、本実施形態に係る暗号演算装置の構成例を示す。
 図8において、120の部分が、図5で示した本実施形態に係る、SubBytes演算部とInvSubBytes演算部を一体化し、データマスク法を実装したSubBytes/InvSubBytes演算部である。なお、図8において、XOR演算部61及びXOR演算部63は省略している。
 すなわち、図8に示された暗号演算装置は、共通鍵暗号方式AESに従う一般的な暗号処理装置において、SubBytes演算回路とInvSubBytes演算回路との部分に、図5で示した本実施形態に係るSubBytes/InvSubBytes演算部120を適用したものである。よって、図8に示された暗号演算装置は、SubBytes/InvSubBytes演算部120以外の部分は、基本的に、従来のものと同じで構わない。
 図8において、101は演算途中のデータをマスクするための一時マスクデータを生成するマスクデータ生成部、102はAESのMixColumns演算及びInvMixColumns演算を行うMixColumns/InvMixColumns演算部、103は一つ前の一時マスクデータの値を保持するためのレジスタ、104は排他的論理和演算部、105はセレクタ、106は排他的論理和演算部、107はAESのAddRoundKey演算を行うAddRoundKey演算部、108はAESのShiftRows演算及びInvShiftRows演算を行うShiftRows/InvShiftRows演算部、109はセレクタ、110はAddRoundKey演算部、111はMixColumns/InvMixColumns演算部、112はセレクタ、113は排他的論理和演算部を表す。
 セレクタ109,54,55,112は、いずれも、暗号演算時にはe側に接続し、復号演算時にはd側に接続する。
 セレクタ105は、開始時にs1側に接続し、次のラウンド以降はs2側に接続し、最終ラウンドではs3側に接続する。
 マスクデータ生成部101は、例えば、1ラウンド毎に、一時マスクデータを生成する。
 レジスタ103の初期値は、“0”である。
 なお、図8の構成例は、図5において、m2=m1としたものである。m2をm1と独立させる場合には、例えば、図8の構成の一部を図9のように修正すればよい。図9において、第1のマスクデータ生成部101は、m1の生成に用い、第2のマスクデータ生成部114は、m2の生成に用いる。また、レジスタ103は第2のマスクデータ生成部114に接続される。また、排他的論理和演算部113は第2のマスクデータ生成部114に接続される。
 次に、図8又は図9に比較して、より素子数を削減した構成例について説明する。なお、ここでは、図8又は図9の構成例と相違する点を中心に説明する。
 AESの各演算によるマスクデータへの影響を考えると、図5でのアフィン変換と同じように演算後にマスクの値が変るのは、他の演算では、MixColumns演算及びInvMixColumns演算だけである。なぜなら、AddRoundKey演算は、拡大鍵データとの排他的論理和演算であるので、マスクデータは変らない。また、ShiftRows演算は、バイト単位でのデータの並び換えであるので、マスクデータの並び換えを行うだけで良い。データの並び換えは、回路の実装では配線を並び換えるだけよく、特別な回路は必要せずにShiftRows演算後の値を得ることができるため、この演算によるマスクデータへの影響はないと考えることができる。
 これに対して、MixColumns演算及びInvMixColumns演算は、演算対象のデータ内において、4バイト単位で演算を行うため、マスクデータの値は変化する。しかし、マスクデータとして、同じ値を4バイト並べたものを考えると、そのようなマスクデータは、MixColumns演算とInvMixColumns演算のいずれによっても、変らない。
 すなわち、MixColumns演算においては、演算対象のデータについて、4バイト毎に次式(5)のような計算を行う。 
   MixColumns(d0、d1、d2、d3)={02}・d0 xor {03}・d1 xor d2 xor d3 
                                    …(5)
 なお、式(5)の・はガロア体の乗算を示す。ここで、d0、d1、d2、d3がすべて同じ値dsであれば、次式(6)のように計算される。ここで、{03}・dsを{02}・ds xor dsと分割できることを利用している。
   MixColumns(ds、ds、ds、ds) 
 ={02}・ds xor {03}・ds xor ds xor ds 
 ={02}・ds xor ({02}・ds xor ds) xor ds xor ds 
 =ds                                 …(6)
 InvMixColumnsの演算も、上記と同様に4バイトのデータが同じであれば、InvMixColumns演算により、演算結果はdsとなる。
 従って、MixColumns/InvMixColumns演算について不変であるようなマスクデータ(一時マスクデータ)を必ず用いることによって、図8又は図9の構成から、MixColumns/InvMixColumns演算部102を省くことができる。
 図10に、図8の構成から、MixColumns/InvMixColumns演算部102を省いた暗号演算装置の構成例を示す。また、図11に、図9の部分からMixColumns/InvMixColumns演算部102を省いた構成例を示す。
 以下、図10の構成例について説明する。
 排他的論理和演算部106において、演算対象のデータが、マスクデータ生成部101が生成した一時マスクデータによりマスクされる。その後、AddRoundKey演算部107とShiftRows/InvShiftRows演算部108においては、一時マスクデータは、不変である。次に、SubBytes/InvSubBytes演算部120では、前述したように、一時マスクデータから固定マスクデータへ付け替えた上で演算が行われた後に、固定マスクデータから一時マスクデータへ付け替えて出力が行われるので、一時マスクデータへの影響はない。そして、MixColumns/InvMixColumns演算部111とAddRoundKey演算部107においても、一時マスクデータは、不変である。以上から、図10の構成によっても、正しい演算結果を得ることができることが分る。もちろん、図11の構成についても同様である。
 以上のように、4バイト毎に同じマスクデータを用いることで、マスクデータ用のMixColumns/InvMixColumns演算部を削減可能な回路構成とすることができる。
 次に、これまでの構成例を少し修正した構成例について説明する。
 さて、暗号演算装置に高い処理能力が求められる場合、最大遅延時間は短い方が望ましい。つまり、最大遅延時間を決定するクリティカルパス上にある素子や回路などは少ない方が良く、例えば、データの選択を行うセレクタは、できる限り少なくした方が望ましい。
 そこで、AESのShiftRows/InvShiftRows演算とSubBytes/InvSubBytes演算について考える。
 ShiftRows演算とInvShiftRows演算では、データの並べ替えの順序が異るため、図10又は図11の構成例では、セレクタ109によって暗号演算時と復号演算時のデータの切り替えを行っている。
 そこで、図8~図11の各構成例それぞれについて、ShiftRows/InvShiftRows演算を、ShiftRows演算とInvShiftRows演算とに分離し、かつ、ShiftRows演算及びInvSubBytes演算を、それぞれ、後段のSubBytes演算用入力及びInvSubBytes演算用入力に接続することで、セレクタ109を削減することができる。
 図12に、この場合に利用可能な、サイドチャネル対策を実装した、SubBytes演算部とInvSubBytes演算部を一体化した演算部の構成例を示す。なお、ここでは、図5の構成例と相違する点を中心に説明する。
 図12において、71は復号演算時のアフィン変換を行うアフィン変換部(第1の線形演算部)、72は暗号演算時のアフィン変換を行うアフィン変換部(第2の線形演算部)、73は復号演算時/暗号演算時の両方でGF(2)上の逆元演算を行う逆元演算部(非線形演算部)、74,75は復号演算と暗号演算の切り替えを行うためのセレクタ(第1の選択部、第2の選択部)、81~86は排他的論理輪を行うXOR演算部である(81,82:第1のマスク付替部、83,84:第3のマスク付替部、85,86:第2のマスク付替部)。
 図12の構成例は、図5に比較して、入力側が、SubBytes演算用入力(暗号演算時の入力)とInvSubBytes演算用入力(復号演算時の入力)とが、別系統になっている。
 図12の演算部の暗号演算時の動作手順の一例は、基本的には、図6と同じである。
 まず、セレクタ74,75を暗号演算側に切り替える(ステップS21)。
 次に、入力されたマスク付きデータについて、一時マスクデータm1から固定マスクデータrfx2への付け替えを行う(ステップS22)。
 次に、逆元演算部73が、マスク付きデータについて、逆元演算を行う(ステップS23)。なお、逆元演算の前後で固定マスクデータの付け替えを行う場合には、逆元演算の結果として、固定マスクデータの付け替えが為されたものが、得られる。ここでは、rfx2に付け替えられるものとする。
 次に、アフィン変換部72が、アフィン変換を行う(ステップS24)。なお、ここでは固定マスクデータはアフィン変換によって不変であるので、固定マスクデータの付け替えは不要である。
 そして、アフィン変換部72から出力されたマスク付きデータについて、固定マスクデータrfx2から一時マスクデータm2への付け替えを行って、これを出力する(ステップS25)。
 図12の演算部の復号演算時の動作手順の一例は、基本的には、図7と同じである。
 まず、セレクタ74,75を復号演算側に切り替える(ステップS31)。
 次に、入力されたマスク付きデータについて、一時マスクデータm3から固定マスクデータrfx1への付け替えを行う(ステップS32)。ただし、ここでは、rfx1の代わりに、後述するrfx´への付け替えを行う。
 次に、アフィン変換部71が、アフィン変換を行う(ステップS33)。なお、ここでは固定マスクデータrfx´はアフィン変換によって、暗号演算時の固定マスクデータrfx1と同じ値に変換されるので、固定マスクデータの付け替えは不要である。
 次に、逆元演算部73が、マスク付きデータについて、逆元演算を行う(ステップS34)。なお、上記のように、逆元演算の前後で固定マスクデータの付け替えを行う場合には、逆元演算の結果として、固定マスクデータの付け替えが為されたものが、得られる。ここでは、rfx2に付け替えられるものとする。
 そして、逆元演算部73から出力されたマスク付きデータについて、固定マスクデータrfx2から一時マスクデータm4への付け替えを行って、これを出力する(ステップS35)。
 次に、暗号演算時の動作について説明する。
 図12のSubBytes演算用入力には、他の例と同様、d1 xor m1が入力される。
 XOR演算部81は、他の例と同様、m1 xor rfx1を出力する。
 XOR演算部82は、他の例と同様、d1 xor rfx1を出力し、これが逆元演算部73に与えられる。
 以降は、図5の例と同じであり、最終的に、Affine(d1-1) xor m2が出力される。
 次に、復号演算時の動作について説明する。
 図12のInvSubBytes演算用入力には、他の例と同様、d2 xor m3が入力される。
 XOR演算部83は、一時マスクデータm3と固定マスクデータ(ここではrfx´とする。)とを入力し、それらの排他的論理和m3 xor rfx´を出力する。rfx´については後述する。
 XOR演算部84は、上記入力d2 xor m3と、XOR演算部部83の出力m1 xor rfx´とを入力し、それらの排他的論理和(d2 xor m3) xor (m3 xor rfx´)=d2 xor rfx´を出力する。
 アフィン変換部11は、XOR演算部84の出力d2 xor rfx´を入力し、そのアフィン変換Affine(d2 xor rfx´)=Affine(d2) xor Affine(rfx´)を出力し、これが逆元演算部73に与えられる。ここで、後述するように、Affine(d2) xor Affine(rfx´)=Affine(d2) xor rfx1となる。
 以降は、図5の例と同じであり、最終的に、(Affine(d2))-1 xor m4が出力される。
 ここで、上記のrfx´について説明する。
 図12の暗号演算系統では、図5の例の場合と同様に、rfx1として、アフィン変換(アフィン変換部11,51,71のアフィン変換)について不変となる値、すなわち、rfx1=Affine(rfx1)を満たすような値を採用するものとしている。
 これに対して、図12の復号演算系統では、次式(7)が成立する値を用いて実装することができる。すなわち、rfx´は、そのアフィン変換(アフィン変換部11,51,71のアフィン変換)が、暗号変換時のrfx1を与えるような値である。なお、このとき、rfx´のハミング重みとrfx1のハミング重みとが変わらないことが、サイドチャネル攻撃の対策としては重要である。 
   rfx1=Affine(rfx´)   …(7)
 したがって、この場合、上記のように、アフィン変換部11の出力は、Affine(d2) xor Affine(rfx´)=Affine(d2) xor rfx1となる。
 なお、この場合に、暗号演算時のrfx1は、アフィン変換部11のアフィン変換について、不変でなくても良い(ただし、不変であっても構わない)。
 また、暗号演算時のrfx1が、アフィン変換部11のアフィン変換について不変である場合に、rfx´として、rfx1と同じ値を用いても構わない。
 なお、図12において、第2の固定マスクデータを、アフィン変換について不変でないとしても良い。この場合には、図1のXOR演算部24と同じ構成を採用すれば良い。
 図13に、図12のSubBytes/InvSubBytes演算部を適用した暗号演算装置の構成例を示す。
 図13において、220の部分が、図12で示したSubBytes/InvSubBytes演算部である。なお、図13において、XOR演算部81、XOR演算部83及びXOR演算部85は省略している。
 また、図8と比較して、ShiftRows/InvShiftRows演算部108が、ShiftRows演算部208及びInvShiftRows演算部209に置き換えられ、セレクタ109が削除されている。なお、それら以外の部分は、基本的に、従来のものと同じで構わない。
 図13においては、排他的論理和演算部84が復号データパスに入るために回路規模は少し増えるが、図8と比較して通過するセレクタの数が減ることにより、クリティカルパスは短くなる。なぜなら、図8では、SubBytes/InvSubBytes演算部120において必ず排他的論理和演算部62を用いてマスクデータの付け替えを行うので、図12のSubBytes/InvSubBytes演算部220において、復号データパスに排他的論理和演算部84が追加されたとしても、そのために最大遅延時間が変わることはなく、全体としては、セレクタの数が減った分、最大遅延時間が短くなるからである。よって、図8に比較して、暗号演算回路の処理能力が高くなる。
 なお、図13の構成例は、図8で説明した構成例に修正を施したものであるが、図9~図1の各構成例それぞれについて同様に修正を施すことが可能である。
 なお、この場合にも、4バイト毎に同じマスクデータを用いることで、マスクデータ用のMixColumns/InvMixColumns演算部を削減しても良い。
 また、マスクデータ中における0の個数と1の個数とが同じ(或いは、ほぼ同じ)にしても良い。
 なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。

Claims (10)

  1.  非線形演算と線形演算とを含む暗号演算及び復号演算を行う暗号処理装置であって、
     演算対象データを第1の一時マスクデータでマスクした第1のデータを入力し、該第1のデータについて、該第1の一時マスクデータから、第1の線形演算について不変の値である第1の固定マスクデータへの付け替えを行って、該演算対象データを該第1の固定マスクデータでマスクした第2のデータを出力する第1のマスク付替部と、
     前記第2のデータを入力し、該第2のデータに前記第1の線形演算を施して、前記演算対象データに対して前記第1の線形演算を施した結果である第1の結果データを前記第1の固定マスクデータでマスクした第3のデータを出力する第1の線形演算部と、
     暗号演算時には、前記第2のデータを入力し、該第2のデータに非線形演算を施して、前記演算対象データに対して該非線形演算を施した結果を第2の線形演算について不変の値である第2の固定マスクデータでマスクした第4のデータを出力し、復号演算時には、前記第3のデータを入力し、該第3のデータに該非線形演算を施して、前記第1の結果データに対して該非線形演算を施した結果である第2の結果データを前記第2の固定マスクデータでマスクした第5のデータを出力する非線形演算部と、
     前記第4のデータ又は前記第5のデータを入力し、該第4のデータ又は該第5のデータに前記第2の線形演算を施して、前記非線形演算の結果である第3の結果データに対して該第2の線形演算を施した結果である第4の結果データを前記第2の固定マスクデータでマスクした第6のデータを出力する第2の線形演算部と、
     暗号演算時には、前記第6のデータを入力し、該第6のデータについて、前記第2の固定マスクデータから、第2の一時マスクデータへの付け替えを行って、前記第4の結果データを該第2の一時マスクデータでマスクした第7のデータを出力し、復号演算時には、前記第5のデータを入力し、該第5のデータについて、前記第2の固定マスクデータから、該第2の一時マスクデータへの付け替えを行って、前記第2の結果データを該第2の一時マスクデータでマスクした第8のデータを出力する第2のマスク付替部とを備えたことを特徴とする暗号処理装置。
  2.  前記第1のデータを入力し、該第1のデータについて、前記第1の一時マスクデータから、前記第1の線形演算部により前記第1の線形演算を施した場合に前記第1の固定マスクデータを与える第3の固定マスクデータへの付け替えを行って、該演算対象データを該第3の固定マスクデータでマスクした第9のデータを出力する第3のマスク付替部を更に備え、
     前記第1の線形演算部は、復号演算時には、前記第9のデータを入力し、該第9のデータに前記第1の線形演算を施して、前記第3のデータを出力することを特徴とする請求項1に記載の暗号処理装置。
  3.  前記第2の固定マスクデータを、前記第2の線形演算部による前記線形演算について不変でない値とし、
     前記第2の線形演算部は、前記第4のデータ又は前記第5のデータを入力し、該第4のデータ又は該第5のデータに前記第2の線形演算を施して、前記第4の結果データを前記第2の固定マスクデータに対する前記第2の線形演算の結果によるマスクデータでマスクした第11のデータとして出力し、
     前記暗号処理装置は、前記第11のデータを入力し、該第11のデータについて、前記第2の固定マスクデータに対する前記第2の線形演算の結果によるマスクデータから、前記第2の固定マスクデータへの付け替えを行って、前記第6のデータを出力する第5のマスク付替部を更に備えたことを特徴とする請求項2に記載の暗号処理装置。
  4.  前記第1の一時マスクデータと前記第2の一時マスクデータとの一方又は両方について、当該一時マスクデータ中における0の個数と1の個数とを同じ又はほぼ同じにしたことを特徴とする請求項3に記載の暗号処理装置。
  5.  前記第1の固定マスクデータと前記第2の固定マスクデータとの一方又は両方について、当該固定マスクデータ中における0の個数と1の個数とを同じ又はほぼ同じにしたことを特徴とする請求項4に記載の暗号処理装置。
  6.  前記第1の一時マスクデータと、前記第2の一時マスクデータとを独立して生成するマスクデータ生成部を更に備えたことを特徴とする請求項5に記載の暗号処理装置。
  7.  前記第2の一時マスクデータを前記第1の一時マスクデータと同一とし、
     前記暗号処理装置は、前記第1の一時マスクデータを生成するマスクデータ生成部を更に備えたことを特徴とする請求項5に記載の暗号処理装置。
  8.  前記第1の固定マスクデータと、前記第2の固定マスクデータとを独立したものとしたことを特徴とする請求項7に記載の暗号処理装置。
  9.  前記第2の固定マスクデータを前記第1の固定マスクデータと同一としたことを特徴とする請求項7に記載の暗号処理装置。
  10.  前記非線形演算部は、前記第1の固定マスクデータ及び前記第2の固定マスクデータに対応して予め用意されたテーブルを用いて構成されたことを特徴とする請求項9に記載の暗号処理装置。
PCT/JP2009/070618 2008-12-09 2009-12-09 暗号処理装置及び演算方法 WO2010067827A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US13/155,889 US8817975B2 (en) 2008-12-09 2011-06-08 Cryptographic processing apparatus and operation method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2008-313556 2008-12-09
JP2008313556A JP5268609B2 (ja) 2008-12-09 2008-12-09 暗号処理装置及び演算方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US13/155,889 Continuation US8817975B2 (en) 2008-12-09 2011-06-08 Cryptographic processing apparatus and operation method

Publications (1)

Publication Number Publication Date
WO2010067827A1 true WO2010067827A1 (ja) 2010-06-17

Family

ID=42242814

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2009/070618 WO2010067827A1 (ja) 2008-12-09 2009-12-09 暗号処理装置及び演算方法

Country Status (3)

Country Link
US (1) US8817975B2 (ja)
JP (1) JP5268609B2 (ja)
WO (1) WO2010067827A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012063700A (ja) * 2010-09-17 2012-03-29 Toshiba Corp 暗号化装置

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5364840B2 (ja) 2010-02-22 2013-12-11 株式会社東芝 暗号化装置
JP5481455B2 (ja) * 2011-09-27 2014-04-23 株式会社東芝 暗号処理装置
JP2013105100A (ja) * 2011-11-15 2013-05-30 Tokai Rika Co Ltd データ変換装置
JP5897323B2 (ja) * 2011-12-26 2016-03-30 株式会社日立ハイテクノロジーズ 自動分析装置および測定値異常検出方法
JP5711681B2 (ja) * 2012-03-06 2015-05-07 株式会社東芝 暗号処理装置
US10020932B2 (en) * 2015-11-13 2018-07-10 Nxp B.V. Split-and-merge approach to protect against DFA attacks
CN107465645A (zh) * 2016-06-03 2017-12-12 华邦电子股份有限公司 破解装置以及方法
CN107547193A (zh) * 2016-06-28 2018-01-05 埃沙尔公司 使替换运算免受侧信道分析的方法
US10243937B2 (en) * 2016-07-08 2019-03-26 Nxp B.V. Equality check implemented with secret sharing
US11507699B2 (en) * 2019-09-27 2022-11-22 Intel Corporation Processor with private pipeline
US11632231B2 (en) * 2020-03-05 2023-04-18 Novatek Microelectronics Corp. Substitute box, substitute method and apparatus thereof

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005100085A (ja) * 2003-09-25 2005-04-14 Toshiba Corp 演算装置、および、暗号・復号演算装置
JP2006517036A (ja) * 2003-02-06 2006-07-13 ディスクレティックス・テクノロジーズ・リミテッド マスクされたデータを操作する装置及び方法
WO2008146482A1 (ja) * 2007-05-30 2008-12-04 Panasonic Corporation 暗号化装置、復号化装置、暗号化方法及び集積回路

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4596686B2 (ja) * 2001-06-13 2010-12-08 富士通株式会社 Dpaに対して安全な暗号化
KR100594265B1 (ko) * 2004-03-16 2006-06-30 삼성전자주식회사 매스킹 방법이 적용된 데이터 암호처리장치, aes암호시스템 및 aes 암호방법.
JP2007189659A (ja) * 2005-12-15 2007-07-26 Toshiba Corp 暗号化装置、暗号化方法及び暗号化プログラム
US7970129B2 (en) * 2007-04-19 2011-06-28 Spansion Llc Selection of a lookup table with data masked with a combination of an additive and multiplicative mask

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006517036A (ja) * 2003-02-06 2006-07-13 ディスクレティックス・テクノロジーズ・リミテッド マスクされたデータを操作する装置及び方法
JP2005100085A (ja) * 2003-09-25 2005-04-14 Toshiba Corp 演算装置、および、暗号・復号演算装置
WO2008146482A1 (ja) * 2007-05-30 2008-12-04 Panasonic Corporation 暗号化装置、復号化装置、暗号化方法及び集積回路

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
SUMIO MORIOKA ET AL.: "Goseitai o Mochiita AES S-Box Kairo ni Taisuru DPA Kogeki", COMPUTER SECURITY SYMPOSIUM 2004, vol. 2 OF 2, no. 11, - 20 October 2004 (2004-10-20), pages 679 - 684 *
SUMIO MORIOKA ET AL.: "Kyotsu Kagi Ango AES no Tei Shohi Denryoku Ronri Kairo Koseiho", TRANSACTIONS OF INFORMATION PROCESSING SOCIETY OF JAPAN, vol. 44, no. 5, 15 May 2003 (2003-05-15), pages 1321 - 1328 *
SVETLA NIKOVA ET AL.: "Threshold Implementations Against Side-Channel Attacks and Glitches", LNCS, 8TH INTERNATIONAL CONFERENCE IN INFORMATION AND COMMUNICATIONS SECURITY (ICICS), vol. 4307, - December 2006 (2006-12-01), pages 529 - 545 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012063700A (ja) * 2010-09-17 2012-03-29 Toshiba Corp 暗号化装置

Also Published As

Publication number Publication date
JP2010141430A (ja) 2010-06-24
US8817975B2 (en) 2014-08-26
JP5268609B2 (ja) 2013-08-21
US20110268266A1 (en) 2011-11-03

Similar Documents

Publication Publication Date Title
WO2010067827A1 (ja) 暗号処理装置及び演算方法
US10567162B2 (en) Mask S-box, block ciphers algorithm device and corresponding construction process
Schneider et al. ParTI–towards combined hardware countermeasures against side-channel and fault-injection attacks
Rijmen et al. Advanced encryption standard
Bilgin et al. Trade-offs for threshold implementations illustrated on AES
Moradi et al. Pushing the limits: A very compact and a threshold implementation of AES
JP5242560B2 (ja) 暗号化装置、復号化装置、暗号化方法及び集積回路
JP5711681B2 (ja) 暗号処理装置
US9363074B2 (en) Encryption processing apparatus, encryption processing method, and computer program
US8971526B2 (en) Method of counter-measuring against side-channel attacks
US9515818B2 (en) Multi-block cryptographic operation
Wegener et al. A first-order SCA resistant AES without fresh randomness
EP2293487A1 (en) A method of diversification of a round function of an encryption algorithm
JPWO2009122464A1 (ja) 共通鍵暗号機能を搭載した暗号化装置及び組込装置
Vliegen et al. Maximizing the throughput of threshold-protected AES-GCM implementations on FPGA
Richter-Brockmann et al. Concurrent error detection revisited: Hardware protection against fault and side-channel attacks
US8538017B2 (en) Encryption device
JP5327493B1 (ja) 暗号化処理回路及び復号処理回路、その方法並びにそのプログラム
Chaves et al. SCA-Resistance for AES: How Cheap Can We Go?
JP2010245753A (ja) 暗号演算回路装置
Yu et al. A compact hardware implementation for the SCA-resistant present cipher
Boey et al. How resistant are sboxes to power analysis attacks?
Roy et al. Security of Crypto IP Core: Issues and Countermeasures
JP2010232709A (ja) 暗号演算回路装置
Battistello et al. Enhanced Encodings for White-Box Designs

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: 09831931

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 09831931

Country of ref document: EP

Kind code of ref document: A1